Безопасность 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.