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