Самая сильная атака, известная против HMAC, основана на частоте столкновений для хэш-функции H («атака на день рождения») [PV, BCK2] и совершенно нецелесообразна для минимально разумных хеш-функций.
AsНапример, если мы рассмотрим хеш-функцию, такую как MD5, где длина вывода равна L = 16 байт (128 бит), злоумышленнику необходимо получить правильные вычисленные теги аутентификации сообщений (с тем же секретным ключом K!)примерно на 2 64 известных открытых текстов.Это потребует обработки как минимум 2 64 блоков в H, что невозможно в любом реалистичном сценарии (для длины блока в 64 байта это займет 250 000 лет в непрерывной линии связи 1 Гбит / с и без изменения секретного ключа K).за все время).Эта атака может стать реалистичной, только если обнаружены серьезные недостатки в поведении коллизий функции H (например, коллизии, найденные после 2 ** 30 сообщений).Такое открытие определило бы немедленную замену функции H (последствия такого сбоя были бы гораздо более серьезными для традиционного использования H в контексте цифровых подписей, сертификатов открытых ключей и т. Д.).
Примечание: эта атака должна быть строго противопоставлена обычным атакам коллизий на криптографические хеш-функции, где секретный ключ не задействован и где для обнаружения коллизий достаточно 2 64 автономных распараллеливаемых (!) Операций.Последняя атака приближается к осуществимости [VW] ***, в то время как атака на HMAC в день рождения совершенно нецелесообразна.(В вышеприведенных примерах, если кто-то использует хеш-функцию с, скажем, 160-битным выходом, тогда 2 64 следует заменить на 2 80.) *
Правильная реализацияВ приведенной выше конструкции выбор случайных (или криптографически псевдослучайных) ключей, механизм безопасного обмена ключами, частое обновление ключей и хорошая защита секретности ключей - все это важные компоненты для обеспечения безопасности механизма проверки целостности, предоставляемого HMAC.