Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

Симметричная криптография [ править ]

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

Заполнение атаки оракула на шифрование 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 может создать вектор инициализации и блок зашифрованного текста для любого открытого текста:

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

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

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

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

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

В то время как эти более ранние атаки были исправлены большинством разработчиков TLS после его публичного объявления, новый вариант, атака Lucky Thirteen , опубликованная в 2013 году, использовала временной побочный канал для повторного открытия уязвимости даже в реализациях, которые ранее были исправлены. По состоянию на начало 2014 года атака больше не считается угрозой в реальной жизни, хотя теоретически она все еще возможна (см. Соотношение сигнал / шум ) против определенного класса машин. По состоянию на 2015 год наиболее активной областью развития атак на криптографические протоколы, используемые для защиты интернет-трафика, являются атаки на более раннюю версию, такие как Logjam [14] и Export RSA / FREAK [15]атаки, которые заставляют клиентов использовать менее безопасные криптографические операции, обеспечиваемые для совместимости с устаревшими клиентами, когда доступны более безопасные. Атака под названием POODLE [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 для SSL, IPSEC, WTLS ... (PDF) . ЕВРОКРИПТ 2002.
  5. ^ Брайс Канвел; Ален Хильтген; Серж Воденэ; Мартин Вуаньу (2003), Перехват пароля в канале SSL / TLS (PDF) .
  6. ^ Жан Поль Дегабриель; Кеннет Г. Патерсон (2007 г.), Атака стандартов IPsec в конфигурациях только для шифрования (PDF) , заархивировано из оригинала 19 декабря 2018 г. , получено 25 сентября 2018 г. .
  7. ^ Жан Поль Дегабриель; Кеннет Г. Патерсон (2010 г.), О (не) безопасности IPsec в конфигурациях «MAC-затем-шифрование» , CiteSeerX 10.1.1.185.1534 .
  8. ^ Джулиано Риццо; Тайский дуонг (25 мая 2010 г.). Практическое дополнение атак Oracle (PDF) . USENIX WOOT 2010.
  9. ^ Тайский дуонг; Джулиано Риццо (2011). Криптография в Интернете: пример недостатков криптографического дизайна в ASP.NET (PDF) . Симпозиум IEEE по безопасности и конфиденциальности 2011 г.
  10. Деннис Фишер (13 сентября 2010 г.). « Криптоатака « Padding Oracle »затронула миллионы приложений ASP.NET» . Сообщение с угрозами . Архивировано из оригинального 13 октября 2010 года.
  11. ^ Влад Azarkhin (19 сентября 2010). « Объяснение уязвимости ASP.NET " Padding Oracle "» . Архивировано из оригинального 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 Архивировано 5 марта 2015 г. на Wayback Machine для получения дополнительной информации.
  16. Мэтью Грин (14 октября 2014 г.). «Атака недели: ПУДЕЛЬ» .; для получения дополнительной информации см. https://www.poodle.io
  17. ^ Рекомендации по безопасности OpenSSL [3 мая 2016 г.] , 3 мая 2016 г.
  18. ^ Еще один Padding Oracle в OpenSSL CBC Ciphersuites, Cloudflare, 4 мая 2016 г.