Безопасность HMAC. Является ли безопасность HMAC на основе SHA-1, затронутой атаками коллизий на SHA-1?

Является ли безопасность HMAC на основе SHA-1, затронутой атаками коллизий на SHA-1?

Ответы

Ответ 1

Последствия безопасности HMAC в безопасности подробно описаны в разделе безопасности RFC. В двух словах, прежде всего, для обеспечения безопасности HMAC требуется очень сильная атака; существующие нападения на SHA-1, безусловно, не являются таковыми. HMAC специально разработан, чтобы сделать атаки сложными, и обычных столкновений обычно не хватает:

Безопасность сообщения представлен механизм аутентификации здесь зависит от криптографии свойства хэш-функции H: устойчивость к столкновению (ограничивается случаем, когда начальный значение является секретным и случайным, и где выход функции не явно доступный злоумышленнику), и аутентификация сообщения свойство функции сжатия от H при применении к отдельным блокам (в HMAC эти блоки частично неизвестный злоумышленнику, поскольку они содержат результат внутреннего вычисления H и, в частности, не может быть полностью выбранный злоумышленником).

Я рекомендую прочитать весь раздел; более подробно о том, какие атаки достаточно для разлома HMAC, и сколько усилий потребуется.

Ответ 2

См. этот вопрос для обсуждения той же темы. Вкратце: атаки на столкновение напрямую не вредят HMAC. Но наличие атак на столкновение подразумевает, что функция сжатия, на которой строится хеш-функция, не является "случайным оракулом", и это исключает доказательство безопасности HMAC.

Ответ 3

Самая сильная атака, известная против HMAC, основана на частоте  коллизии для хэш-функции H ( "атака на день рождения" ) [PV, BCK2] и  совершенно нецелесообразно для минимально разумных хеш-функций.

В качестве примера рассмотрим хеш-функцию, такую ​​как MD5, где  выходная длина равна L = 16 байт (128 бит), которую атакующий должен  получить правильные теги аутентификации сообщений,  тот же секретный ключ K!) примерно на 2 64 известных текста. Это  требуют обработки по меньшей мере 2 64 блоков под H,  невозможная задача в любом реалистичном сценарии (для длины блока 64  байтов это займет 250 000 лет в непрерывной линии 1 Гбит/с, и  без изменения секретного ключа К в течение всего этого времени). Эта атака  может стать реалистичным, только если серьезные недостатки в столкновении  обнаружено поведение функции H (например, найденные столкновения  после 2 ** 30 сообщений). Такое открытие определило бы  замену функции H (последствия такого отказа будут  гораздо более серьезными для традиционного использования H в контексте  цифровые подписи, сертификаты открытых ключей и т.д.).

Примечание. Эта атака должна сильно контрастировать с регулярными  атаки на криптографические хеш-функции, где нет секретного ключа  и где 2 64 автономных параллелизуемых (!) операций  достаточно найти столкновений. Последняя атака приближается  осуществимость [VW] ***, в то время как атака дня рождения на HMAC полностью  непрактично. (В приведенных выше примерах, если использовать хэш-функцию  с, скажем, 160 бит вывода, тогда 2 64 следует заменить на 2 80.) *

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