使用する利点を指摘できる人HMАC
はいますか?
たとえば、 textT
と keyがある場合、アルゴリズムまたは署名のK
いずれかを使用できます。HMAC-MD5
Md5(T + K)
HMAC は、長さ拡張攻撃の影響を受けません。
md5(T + K) は、敵がメッセージを改ざんする動機があり、非常に優れた計算能力を持っていない限り、ほとんどの用途で問題ありません。T をコントロールしている限り、誕生日攻撃は適用されず、ブルート フォース攻撃しかありません。しかし、制限を認識しておくことは良いことです。このアプローチを使用する場合は、MD5 の代わりに SHA1(T + K) を使用することをお勧めします。
md5(T+K) は、攻撃者がメッセージにテキストを追加して別の有効な MAC を生成する可能性がある md5(K+T) よりも確実に優れています。
md5(T+K) の場合、問題は、攻撃者が md5(T) = md5(T2)、md5(T+K) = md5(T2+K) のような T2 との衝突を見つけることができる場合です。しかし、これには総当たり攻撃が必要です。
注: 「あなたが T を制御している限り」と言います。これは、T に変更を加えることができる場合 (明らかではない方法で)、T1 が T と md5 を渡すことができる 2 つのメッセージ T1 と T2 を生成しようとすることができるためです。 (T1) = md5(T2)。現在、これは比較的簡単に実行できます (2^128 ではなく 2^64 を使用しています)。その理由は、いわゆる誕生日のパラドックスまたは誕生日攻撃です。
注: HMAC の設計は、この種の拡張攻撃を回避することを目的としています。HMAC に対する既知の攻撃はありません。
HMACに関するウィキペディアの記事では、これについて適切な説明が提供されています。
同じ記事のセキュリティセクションでは、次のように述べています。
HMAC は、基礎となるハッシュ アルゴリズムのみよりも、衝突による影響が大幅に少なくなります。
そのため、HMAC を MD5 ハッシュに追加すると、レインボー テーブルを介してブレークすることが大幅に難しくなります。
Bellare、Canetti、および Krawczyk によるHMAC の論文を読むことをお勧めします。