アバランシェ効果デモ
元の入力
1ビット反転後
統計データ
元の入力の統計
1ビット反転後の統計
※ MD5/SHA-1 は安全でないため、実運用では使用しないでください。
ハッシュ値可視化
統計データ
衝突デモ
入力A
入力B
ハッシュA
ハッシュB
統計データ
入力Aの統計
入力Bの統計
注意事項
- MD5 / SHA-1 は衝突攻撃が現実的で、署名・検証用途には不適切です。
- 教育目的の既知サンプルのみを対象とします。
暗号学用語集
ハッシュ関数と暗号学に関する重要な用語を解説します。
ハッシュ関数 (Hash Function)
任意の長さの入力データを固定長のハッシュ値に変換する一方向関数。「指紋」のような役割を持ち、データの完整性確認や高速検索に使用される。
アバランシェ効果 (Avalanche Effect)
入力の1ビットを変更すると、出力のビットの約半数が変化する性質。優れたハッシュ関数の重要な特徴で、わずかな入力変化が予測困難な大きな出力変化を引き起こす。
ハッシュ値 (Hash Value / Digest)
ハッシュ関数によって計算された固定長の出力値。元のデータの「デジタル指紋」として機能し、データの同一性確認に使用される。
衝突 (Collision)
異なる入力データが同じハッシュ値を生成する現象。理論的には避けられないが、暗号学的に安全なハッシュ関数では実際に見つけることが計算上困難。
衝突耐性 (Collision Resistance)
同じハッシュ値を持つ2つの異なる入力を見つけることが計算上困難である性質。暗号学的ハッシュ関数の核心的な安全性要件。
一方向性 (One-way Property)
ハッシュ値から元の入力データを復元することが計算上困難である性質。暗号学的ハッシュ関数の基本的な安全性要件。
MD5 (Message Digest 5)
128ビット出力の暗号学的ハッシュ関数。1991年に開発されたが、現在は衝突攻撃が発見されており、セキュリティ用途での使用は推奨されない。
SHA-1 (Secure Hash Algorithm 1)
160ビット出力の暗号学的ハッシュ関数。2017年に実際の衝突が発見され(SHAttered攻撃)、現在は非推奨。SHA-2系列への移行が必要。
SHA-2 (SHA-256, SHA-512)
現在広く使用されている安全な暗号学的ハッシュ関数群。SHA-256(256ビット出力)とSHA-512(512ビット出力)が代表的。
SHA-3
2015年にNISTが標準化した最新の暗号学的ハッシュ関数。SHA-2とは異なる内部構造(Keccakスポンジ構造)を採用し、多様性による安全性向上を図る。
誕生日攻撃 (Birthday Attack)
誕生日のパラドックスを利用した衝突発見手法。nビット出力のハッシュ関数では、約2^(n/2)回の試行で衝突が発見できる理論的な攻撃。
Wang攻撃
2004年に王小雲らが発表したMD5の衝突攻撃手法。差分攻撃の一種で、特定の差分パターンを持つメッセージペアから衝突を効率的に発見。
SHAttered攻撃
2017年にGoogleとCWIの研究チームがSHA-1で実証した衝突攻撃。約9京回の計算で実際の衝突を発見し、SHA-1の実用的な脆弱性を証明。
ToyHash16
本ツールで使用する教育用の簡易ハッシュ関数。入力バイトの総和を16ビットで計算。衝突が容易に発見できるため、ハッシュ関数の脆弱性を学習する教材として有効。