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.