SHA-1は、単純なブルートフォースが示唆するよりもかなり少ないハッシュ演算で衝突が見つかる可能性があるため、壊れています。 HMACの場合、HMAC-SHA1は問題ありません 「衝突は重要ではありません。」
衝突がHMACにとって重要ではないのはなぜですか?
RFC 2104§6 から、HMACのセキュリティ要件を説明します。
ここで提示されるメッセージ認証メカニズムのセキュリティは、ハッシュ関数Hの暗号化プロパティに依存します:衝突検出に対する耐性(初期値が秘密でランダムな場合、および関数の出力が明示的に利用できない場合に限定されます)攻撃者)、および単一ブロックに適用された場合のHの圧縮関数のメッセージ認証プロパティ(HMACでは、これらのブロックは内部H計算の結果を含み、特に完全に選択できないため、攻撃者には部分的に不明です)攻撃者による)。
したがって、衝突がHMACにとって重要ではないということではありません。これは、ハッシュ関数に対する衝突攻撃が、HMAC構造で使用された場合、そのハッシュ関数に影響を与えないことです。特に、HMACは、他の多くのアプリケーションよりもハッシュ関数にはるかに弱いセキュリティ保証を要求します。基盤となるハッシュからの弱い衝突耐性のみが必要です。
HMACはHMACとして定義されますK(m)= H((K⊕opad)|| H((K⊕ipad)|| m))whereopadおよびipadは定数であり、[〜#〜] h [〜#〜]は、衝突に強くないハッシュです。キー[〜#〜] k [〜#〜]は攻撃者に知られていません。 HMACとの衝突をトリガーするには、攻撃者は次のいずれかを行う必要があります。
いくつかのキーに有効な衝突を見つけます。
鍵回復攻撃を成功させる。
認証タグが十分に大きい(通常は少なくとも128ビット)と仮定すると、これらの両方が、最悪の暗号ハッシュであっても非常に可能性が低いです。