Подтвердить что ты не робот

HMAC против простого MD5 Hash

Может ли кто-нибудь указать, что выгодно использовать HMАC?

Например, если у меня есть текст T и ключ K, я могу использовать либо алгоритм HMAC-MD5, либо Md5(T + K), чтобы получить подпись.

4b9b3361

Ответ 1

Статья Википедии о HMAC дает хорошее объяснение этому.

В разделе Security той же статьи говорится:

HMAC существенно меньше подвержены столкновениям, чем их основные алгоритмы хеширования.

Таким образом, добавление HMAC к хэшу MD5 значительно затруднит разрыв через радужный стол.

Ответ 2

HMAC не подвержен атакам расширения длины.

md5 (T + K) должен быть прекрасным для большинства применений, если ваш противник не мотивирован на вмешательство в ваше сообщение и имеет очень хорошую вычислительную мощность. Пока вы контролируете T, атаки на день рождения не применимы, и у вас только атаки грубой силы. Но хорошо знать ограничения. Если вы хотите пойти с таким подходом, вы можете использовать SHA1 (T + K) вместо MD5.

md5 (T + K), безусловно, лучше, чем md5 (K + T), где злоумышленник может добавлять текст в ваше сообщение и генерировать другой действующий MAC.

С md5 (T + K) проблема заключается в том, что если злоумышленник может найти столкновение с T2 таким, что md5 (T) = md5 (T2), то md5 (T + K) = md5 (T2 + K), Но для этого требуется атака грубой силы.

Примечание: Я говорю ", пока вы управляете T", потому что, если изменения могут быть сделаны в T (таким образом, что это не очевидно) может попытаться сгенерировать 2 сообщения T1 и T2, где T1 может пройти для T и md5 (T1) = md5 (T2). Теперь это относительно много проще сделать (мы говорим 2 ^ 64 вместо 2 ^ 128), и причина в том, что так называемый парадокс дня рождения или атака на день рождения.

Примечание. Конструкция HMAC была мотивирована, чтобы избежать подобных атак расширения. Нет никаких известных атак против HMAC.

Ответ 3

Я бы рекомендовал читать документы HMAC Белларе, Канетти и Krawzzyk.