Атака оракула с отступом - Википедия - Padding oracle attack

В криптографии атака оракула это атака, которая использует набивка проверка криптографического сообщения для расшифровки зашифрованного текста. В криптографии сообщения открытого текста переменной длины часто должны дополняться (расширяться), чтобы быть совместимыми с лежащими в основе криптографический примитив. Атака полагается на наличие «оракула заполнения», который свободно отвечает на запросы о том, правильно ли заполнено сообщение. Атаки оракула заполнения в основном связаны с Расшифровка режима CBC используется в блочные шифры. Режимы заполнения для асимметричных алгоритмов, таких как OAEP также может быть уязвим для атак оракула.[1]

Симметричная криптография

В симметричной криптографии заполнение атака оракула может применяться к CBC режим работы, где "оракул "(обычно сервер) утечка данных о том, набивка зашифрованного сообщения верен или нет. Такие данные могут позволить злоумышленникам расшифровать (а иногда и зашифровать) сообщения через оракул, используя ключ оракула, не зная ключа шифрования.

Заполнение атаки Oracle на шифрование CBC

Стандартная реализация расшифровки CBC в блочных шифрах заключается в расшифровке всех блоков зашифрованного текста, проверке заполнения, удалении PKCS7 набивка, и вернуть открытый текст сообщения. Если сервер возвращает ошибку «недопустимое заполнение» вместо общей ошибки «сбой дешифрования», злоумышленник может использовать сервер в качестве оракула заполнения для дешифрования (а иногда и шифрования) сообщений.

CBC decryption.svg

Математическая формула для расшифровки CBC:

Как показано выше, расшифровка CBC выполняет XOR каждого блока открытого текста с предыдущим блоком зашифрованного текста. В результате однобайтовая модификация в блоке внесет соответствующее изменение в один байт в .

Предположим, у злоумышленника есть два блока зашифрованного текста. и они хотят расшифровать второй блок, чтобы получить открытый текст .Злоумышленник изменяет последний байт (создание ) и отправляет Затем сервер возвращает, указывает ли заполнение последнего расшифрованного блока () верен (равен 0x01). Если заполнение верное, злоумышленник теперь знает, что последний байт является . Следовательно, .Если заполнение неверно, злоумышленник может изменить последний байт до следующего возможного значения. В большинстве случаев злоумышленнику потребуется сделать 256 попыток (одно предположение для каждого возможного байта), чтобы найти последний байт . Если расшифрованный блок содержит информацию о заполнении или байты, используемые для заполнения, тогда потребуется дополнительная попытка для устранения этой неоднозначности.[2]

После определения последнего байта , злоумышленник может использовать тот же метод для получения предпоследнего байта . Атакующий устанавливает последний байт к установив последний байт к Затем злоумышленник использует тот же подход, описанный выше, на этот раз изменяя предпоследний байт до тех пор, пока заполнение не станет правильным (0x02, 0x02).

Если блок состоит из 128 бит (AES, например), который составляет 16 байт, злоумышленник получит открытый текст не более чем за 255⋅16 = 4080 попыток. Это значительно быстрее, чем попытки, необходимые для перебора 128-битного ключа.

Шифрование сообщений с помощью атаки оракула Padding (CBC-R)

CBC-R[3] превращает оракул дешифрования в оракул шифрования, и в первую очередь демонстрируется против оракулов заполнения.

Используя атаку оракула с заполнением, CBC-R может создать вектор инициализации и блок зашифрованного текста для любого открытого текста:

  • расшифровать любой зашифрованный текст пя = PODecrypt (Cя ) XOR Cя-1,
  • выбрать предыдущий шифроблок Cх − 1 свободно,
  • создать действительную пару зашифрованный / открытый текст Cх-1 = PИкс XOR PODecrypt (Cя ).

Чтобы создать зашифрованный текст, N блоки длинные, злоумышленник должен выполнить N количество дополнительных атак оракула. Эти атаки связаны вместе, так что правильный открытый текст создается в обратном порядке, начиная с конца сообщения (CN) в начало сообщения (C0, IV). На каждом шаге используется атака оракула с заполнением для построения IV к ранее выбранному зашифрованному тексту.

Атака CBC-R не будет работать против схемы шифрования, которая аутентифицирует зашифрованный текст (используя код аутентификации сообщения или аналогичный) перед расшифровкой.

Атаки с использованием дополнительных оракулов

Первоначальная атака была опубликована в 2002 г. Серж Воденэ.[4] Конкретные экземпляры атаки были позже реализованы против SSL.[5] и IPSec.[6][7] Он также был применен к нескольким веб-фреймворки, включая JavaServer Faces, Рубин на рельсах[8] и ASP.NET[9][10][11] а также другое программное обеспечение, такое как Пар игровой клиент.[12] В 2012 году было показано, что он эффективен против некоторых устройств повышенной безопасности.[13]

Хотя эти более ранние атаки были устранены большинством TLS разработчики после его публичного объявления, новый вариант, Счастливая тринадцатая атака, опубликованная в 2013 году, использовала побочный канал синхронизации для повторного открытия уязвимости даже в реализациях, которые ранее были исправлены. По состоянию на начало 2014 года атака больше не считается угрозой в реальной жизни, хотя теоретически все еще работает (см. соотношение сигнал шум ) против определенного класса машин. По состоянию на 2015 год, наиболее активной областью разработки атак на криптографические протоколы, используемые для защиты интернет-трафика, являются атака на понижение версии, например Logjam[14] и экспорт RSA / FREAK[15] атаки, которые заставляют клиентов использовать менее безопасные криптографические операции, обеспечиваемые для совместимости с устаревшими клиентами, когда доступны более безопасные. Атака называется ПУДЕЛЬ[16] (конец 2014 г.) сочетает в себе атаку перехода на более раннюю версию (до SSL 3.0) и атаку оракула с заполнением старого небезопасного протокола, чтобы обеспечить компрометацию передаваемых данных. В мае 2016 года это было обнаружено в CVE -2016-2107 что исправление Lucky Thirteen в OpenSSL представило еще один оракул заполнения.[17][18]

Рекомендации

  1. ^ Ясли, Джеймс. «Атака по выбранному зашифрованному тексту на RSA Optimal Asymmetric Encryption Padding (OAEP), стандартизированную в PKCS # 1 v2.0» (PDF). Исследовательские лаборатории Telstra.
  2. ^ Детерминирована ли атака оракула заполнения
  3. ^ Джулиано Риццо; Тай Дуонг (25 мая 2010 г.). Практическое дополнение атак Oracle (PDF). USENIX WOOT 2010.
  4. ^ Серж Воденэ (2002). Недостатки безопасности, вызванные приложениями CBC Padding для SSL, IPSEC, WTLS ... (PDF). ЕВРОКРИПТ 2002.
  5. ^ Брайс Канвел; Ален Хильтген; Серж Воденэ; Мартин Вуаньу (2003), Перехват пароля в канале SSL / TLS (PDF).
  6. ^ Жан Поль Дегабриеле; Кеннет Дж. Патерсон (2007), Атака на стандарты IPsec в конфигурациях только с шифрованием (PDF), заархивировано из оригинал 19 декабря 2018 г., получено 25 сентября 2018.
  7. ^ Жан Поль Дегабриеле; Кеннет Дж. Патерсон (2010), О (не) безопасности IPsec в конфигурациях MAC-затем-Encrypt, CiteSeerX  10.1.1.185.1534.
  8. ^ Джулиано Риццо; Тайский дуонг (25 мая 2010 г.). Практическое дополнение атак Oracle (PDF). USENIX WOOT 2010.
  9. ^ Тайский дуонг; Джулиано Риццо (2011). Криптография в Интернете: пример недостатков криптографического дизайна в ASP.NET (PDF). Симпозиум IEEE по безопасности и конфиденциальности 2011 г.
  10. ^ Деннис Фишер (13 сентября 2010 г.). "'Дополнение от Oracle Crypto Attack затрагивает миллионы приложений ASP.NET ». Сообщение с угрозой. Архивировано из оригинал 13 октября 2010 г.
  11. ^ Влад Азархин (19 сентября 2010 г.). ""Дополнение Oracle "Объяснение уязвимости ASP.NET". Архивировано из оригинал 23 октября 2010 г.. Получено 11 октября 2010.
  12. ^ «Взлом криптографии клиента Steam». База данных Steam. Получено 1 мая 2016.
  13. ^ Ромен Барду; Риккардо Фокарди; Юсуке Кавамото; Лоренцо Симионато; Грэм Стил; Джо-Кай Цай (2012), Эффективная защита от атак Oracle на криптографическое оборудование (PDF)
  14. ^ Мэтью Грин; Надя Хенингер; Пол Циммерман; и другие. (2015), Несовершенная прямая секретность: как Диффи – Хеллман терпит неудачу на практике (PDF). Для получения дополнительной информации см. https://www.weakdh.org В архиве 22 декабря 2019 в Wayback Machine.
  15. ^ Мэтью Грин (3 марта 2015 г.). «Атака недели: FREAK (или« использование АНБ для развлечения и прибыли »)».; видеть https://www.freakattack.com для дополнительной информации.
  16. ^ Мэтью Грин (14 октября 2014 г.). «Атака недели: ПУДЕЛЬ».; для получения дополнительной информации см. https://www.poodle.io
  17. ^ Рекомендации по безопасности OpenSSL [3 мая 2016 г.], 3 мая 2016
  18. ^ Еще один дополняющий Oracle в наборах шифров OpenSSL CBC, Cloudflare, 4 мая 2016 г.