暗号
MD5
別称: Message Digest 5
定義
Ron Rivest が 1992 年に設計した 128 ビットの暗号学的ハッシュ関数。実用的な衝突が容易に作れる「破られた」アルゴリズムであり、セキュリティ用途では使用してはならない。
MD5(Message Digest 5)は RFC 1321 で規定された Merkle–Damgård 構造のハッシュ関数で、128 ビットのダイジェストを生成します。1990 年代から 2000 年代にかけてデジタル署名、証明書、パスワード保存、完全性チェックに広く用いられました。2004 年に Wang らが初の実用的衝突を発表し、その後はチョーズン・プレフィックス衝突が数分で計算可能となり、Flame マルウェア(2012)が偽の認証局を作り出した事件などが有名です。MD5 は衝突耐性を完全に失い、原像耐性も弱く、NIST、PCI DSS、CA/Browser Forum、TLS でいずれも禁止されています。署名・証明書・パスワード保存(Argon2/scrypt/bcrypt を使う)・新規設計のいずれにも使うべきではありません。現代の代替は SHA-256、SHA-3、BLAKE2/BLAKE3 で、MD5 はセキュリティを目的としないチェックサムやレガシー互換にのみ残ります。
例
- 悪意ある改ざんではなく偶発的破損のみを検出する用途では、ダウンロードの MD5 チェックサムが今も使われている。
- Flame マルウェア(2012)は MD5 のチョーズン・プレフィックス衝突を悪用して Microsoft のコード署名証明書を偽造した。
関連用語
暗号学的ハッシュ関数
任意長の入力を固定長のダイジェストへ写す決定的な一方向関数で、衝突耐性・原像耐性・第二原像耐性を備える。
HMAC
RFC 2104 と FIPS 198-1 で定義された、暗号学的ハッシュ関数を土台とする鍵付きメッセージ認証コード(MAC)構造。
デジタル署名
メッセージや文書の真正性・完全性・否認防止を証明する公開鍵暗号方式のメカニズム。
ソルト
ハッシュ計算前にパスワードへ付加する一意のランダム値で、レインボーテーブルを無効化し各ユーザーのハッシュを別物にする仕組み。
鍵導出関数(KDF)
パスワードや共有秘密、マスター鍵などの秘密入力から、1 つまたは複数の強力な暗号鍵を導出する暗号関数。
暗号化
アルゴリズムと鍵を用いて平文を暗号文に変換し、認可された当事者のみが元のデータを復元できるようにする処理。