Может ли кто-нибудь указать, что выгодно использовать HMАC
?
Например, если у меня есть текст T
и ключ K
, я могу использовать либо алгоритм HMAC-MD5
, либо Md5(T + K)
, чтобы получить подпись.
Может ли кто-нибудь указать, что выгодно использовать HMАC
?
Например, если у меня есть текст T
и ключ K
, я могу использовать либо алгоритм HMAC-MD5
, либо Md5(T + K)
, чтобы получить подпись.
Статья Википедии о HMAC дает хорошее объяснение этому.
В разделе Security той же статьи говорится:
HMAC существенно меньше подвержены столкновениям, чем их основные алгоритмы хеширования.
Таким образом, добавление HMAC к хэшу MD5 значительно затруднит разрыв через радужный стол.
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.
Я бы рекомендовал читать документы HMAC Белларе, Канетти и Krawzzyk.