Collision Resistance
衝突耐性とは、同じハッシュ出力を生む 2 つの異なる入力を見つけることが実行不可能であるというハッシュ関数の性質である。必要な出力長は誕生日攻撃が決める。
目的
ハッシュ値が入力を一意に特定することを保証し、デジタル署名と完全性検証の安全性基盤となる。
メカニズム
n ビットのハッシュでは、誕生日攻撃は約 2^(n/2) 回の計算で衝突を見つけられる。したがって 128 ビットハッシュはわずか 2^64 回で衝突し(安全でない)、256 ビットなら 2^128 回が必要である(安全)。MD5 と SHA-1 は衝突攻撃のため非推奨となった。
ユースケース
- デジタル署名のセキュリティ基盤
- コンテンツアドレスストレージ(Git、IPFS)
- 証明書フィンガープリントの一意性
- ブロックチェーンのプルーフオブワーク
例
- 入力
SHA-256 (256-bit)Output2^128 trials needed to find a collisionSecure
よくあるエラー
- Using a 128-bit hash (collision needs only 2^64)
- Use at least 256-bit output
関連用語
Preimage Resistance
原像計算困難性(preimage resistance)とは、ハッシュ値hが与えられても、H(x)=hとなる入力xを見つけるのが計算上不可能なハッシュ関数の性質である。一方向性とも呼ばれる。 用語集
Birthday Attack
誕生日攻撃は誕生日のパラドックスを利用する。n ビットのハッシュでは約 2^(n/2) 回の計算で 50% の確率で衝突が見つかり、これが要求される出力長を規定する。 用語集
MD5
MD5 は Ronald Rivest が設計した 128 ビットの暗号学的ハッシュ関数である。衝突攻撃により安全性が崩れており、現在はチェックサムなどセキュリティを要しない用途に限られる。 用語集
SHA-256
SHA-256 は SHA-2 ファミリーの 256 ビット出力版である。TLS、ブロックチェーン、暗号応用で広く使われ、現実的な攻撃は知られていない。 用語集