ハッシュ衝突(Hash Collision)
ハッシュ衝突(Hash Collision) とは何ですか?
ハッシュ衝突(Hash Collision)異なる 2 つの入力が同一の暗号学的ハッシュ値を生み出すこと。完全性・一意性・署名の保証が崩れる。
ハッシュ衝突とは、内容が異なる 2 つの入力が同じハッシュ値になる組のことです。ハッシュ関数は任意長データを固定長に圧縮するため衝突は数学的に必ず存在しますが、安全なハッシュではそれを計算的に見つけるのが事実上不可能です。関数が破られると、攻撃者は証明書の偽造、署名文書の改ざん、バイナリのすり替えが可能になります。MD5 は 2004 年に Wang らが実用的な衝突を示し、マルウェア Flame が Microsoft のコード署名証明書偽造に悪用しました。SHA-1 は 2017 年に Stevens らの SHAttered で破られました。現代システムは SHA-256、SHA-3、BLAKE2/BLAKE3 を使うべきです。
● 例
- 01
2017 年に Google と CWI が公表した SHAttered: SHA-1 が一致する 2 つの PDF。
- 02
Flame(2012)は MD5 の選択プレフィックス衝突を悪用して Microsoft Terminal Server 用ライセンス証明書を偽造した。
● よくある質問
ハッシュ衝突(Hash Collision) とは何ですか?
異なる 2 つの入力が同一の暗号学的ハッシュ値を生み出すこと。完全性・一意性・署名の保証が崩れる。 サイバーセキュリティの 暗号 カテゴリに属します。
ハッシュ衝突(Hash Collision) とはどういう意味ですか?
異なる 2 つの入力が同一の暗号学的ハッシュ値を生み出すこと。完全性・一意性・署名の保証が崩れる。
ハッシュ衝突(Hash Collision) はどのように機能しますか?
ハッシュ衝突とは、内容が異なる 2 つの入力が同じハッシュ値になる組のことです。ハッシュ関数は任意長データを固定長に圧縮するため衝突は数学的に必ず存在しますが、安全なハッシュではそれを計算的に見つけるのが事実上不可能です。関数が破られると、攻撃者は証明書の偽造、署名文書の改ざん、バイナリのすり替えが可能になります。MD5 は 2004 年に Wang らが実用的な衝突を示し、マルウェア Flame が Microsoft のコード署名証明書偽造に悪用しました。SHA-1 は 2017 年に Stevens らの SHAttered で破られました。現代システムは SHA-256、SHA-3、BLAKE2/BLAKE3 を使うべきです。
ハッシュ衝突(Hash Collision) からどのように防御しますか?
ハッシュ衝突(Hash Collision) に対する防御は通常、上記の定義で述べたとおり、技術的統制と運用上の実践を組み合わせます。
● 関連用語
- cryptography№ 247
暗号学的ハッシュ関数
任意長の入力を固定長のダイジェストへ写す決定的な一方向関数で、衝突耐性・原像耐性・第二原像耐性を備える。
- cryptography№ 658
MD5
Ron Rivest が 1992 年に設計した 128 ビットの暗号学的ハッシュ関数。実用的な衝突が容易に作れる「破られた」アルゴリズムであり、セキュリティ用途では使用してはならない。
- cryptography№ 1023
SHA-1
1995 年に NSA が設計した暗号学的ハッシュ関数で、160 ビットのダイジェストを出力するが、現在では衝突耐性が破られている。
- cryptography№ 1024
SHA-256
SHA-2 ファミリーに属する 256 ビットの暗号学的ハッシュ関数で、デジタル署名、TLS、ブロックチェーン、完全性検証で広く利用される。
- cryptography№ 321
デジタル署名
メッセージや文書の真正性・完全性・否認防止を証明する公開鍵暗号方式のメカニズム。
- cryptography№ 101
BLAKE2
RFC 7693 で規定された高速かつ現代的な暗号学的ハッシュ関数で、SHA-3 に匹敵する安全性とソフトウェア上での圧倒的な高速性を提供する。