MD5
MD5 は Ronald Rivest が設計した 128 ビットの暗号学的ハッシュ関数である。衝突攻撃により安全性が崩れており、現在はチェックサムなどセキュリティを要しない用途に限られる。
目的
整合性チェックのための高速なメッセージダイジェストを提供する。ただし衝突攻撃により、セキュリティ目的にはもはや適さない。
メカニズム
入力を 512 ビットブロックで処理し、128 ビットの状態(4 個の 32 ビット語)を維持する。各ブロックは 4 ラウンド・64 ステップの非線形変換(F/G/H/I)で状態を更新する。最終的な 128 ビット状態を出力する。衝突は数秒で構成できる。
ユースケース
- ファイルダウンロードのチェックサム(非セキュリティ用途)
- ETagキャッシュキー
- レガシーシステムのチェックサム(非セキュリティ用途)
- ハッシュ原理の教材例
例
- 入力
helloOutput5d41402abc4b2a76b9719d911017c592128 bits = 32 hex characters
よくあるエラー
- Using MD5 to store passwords or make digital signatures
- Use SHA-256 or bcrypt
関連用語
SHA-1
SHA-1 は NSA が設計した 160 ビットの暗号学的ハッシュ関数である。Google は 2017 年に SHAttered 衝突を公表し、各規格で廃止が進んでいる。 用語集
SHA-256
SHA-256 は SHA-2 ファミリーの 256 ビット出力版である。TLS、ブロックチェーン、暗号応用で広く使われ、現実的な攻撃は知られていない。 用語集
Collision Resistance
衝突耐性とは、同じハッシュ出力を生む 2 つの異なる入力を見つけることが実行不可能であるというハッシュ関数の性質である。必要な出力長は誕生日攻撃が決める。 用語集
Rainbow Table
レインボーテーブルは、ハッシュ関数の逆写像のためにMartin Hellmanの方式を改良した事前計算テーブルである。時間と空間のトレードオフでパスワードハッシュを解析する。 用語集