web-dev-qa-db-ja.com

HMACと単純なMD5ハッシュ

_HMАC_を使用する利点は何ですか?

たとえば、テキストTとキーKがある場合、_HMAC-MD5_アルゴリズムまたはMd5(T + K)を使用して署名を取得できます。

46
user496949

HMACに関するウィキペディアの記事 は、これについての良い説明を提供します。

同じ記事の Security セクションでは、次のように述べています。

HMACは、基礎となるハッシュアルゴリズムのみよりも、衝突による影響を大幅に受けません。

そのため、HMACをMD5ハッシュに追加すると、Rainbowテーブルを介したブレークが大幅に難しくなります。

26
Evan M

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に対する既知の攻撃はありません。

38
Babu Srinivasan

Bellare、Canetti、Krawczykによる HMACの論文 を読むことをお勧めします。

5
Zed