MD5とは?
MD5(Message Digest Algorithm 5)は128ビットのハッシュ値を生成する広く使われる暗号ハッシュ関数です。MD5の定義・仕組み・使うべき場面と避けるべき場面を解説します。
MD5はどんなサイズの入力でも受け取り、固定サイズの128ビット(16バイト)のハッシュ値を生成する暗号ハッシュ関数です。通常32文字の16進数文字列として表現されます。1991年にRonald Rivestが設計しました。MD5は一方向関数——ハッシュ値から元の入力を逆算することはできません。
MD5の仕組み
MD5は入力を512ビットブロックで処理し128ビットのダイジェストを出力します: • "hello" → 5d41402abc4b2a76b9719d911017c592 • "Hello" → 8b1a9953c4611296a827abf8c47804d7 • たった1文字変えるだけで完全に異なるハッシュが生成されます この「雪崩効果」はMD5をデータ破損の検出に有用にします——2つのファイルのMD5が同じなら、ほぼ確実に同一のファイルです。
MD5のセキュリティ脆弱性
MD5は暗号学的に破られたと見なされています: • 衝突攻撃——異なる2つの入力が同じハッシュを生成することが実証済み • レインボーテーブル攻撃——事前計算された照合表で一般的なハッシュを逆算可能 • GPUクラッキング——毎秒数十億のMD5ハッシュを計算可能 MD5を絶対に使用してはいけない場面: • パスワードの保存(bcrypt・scrypt・Argon2を使用) • デジタル署名や証明書 • セキュリティが重要なアプリケーション
MD5が今でも使われている場面
セキュリティ上の欠陥にもかかわらず、MD5は非セキュリティ目的ではまだ有用です: • ファイル整合性確認——ダウンロードファイルが破損していないか確認 • チェックサム——バックアップシステムでのファイルバージョン比較 • キャッシュ——コンテンツからキャッシュキーを生成 • 重複排除——重複ファイルの素早い識別 • レガシーシステム——簡単に更新できない古いシステムでの継続使用
Try it yourself
UUIDを生成するMD5について
MD5は1992年にMD4の改良版として導入され、1990年代にデジタル署名とSSL証明書に広く採用されました。2004年に研究者が実用的な衝突攻撃を実証し、2008年にはMD5の衝突を利用して偽のSSL証明書を作成できることが証明されました。今日ではセキュリティ用途では廃止されていますが、コンピューティングで最も広く使われているハッシュ関数のひとつであり続けています。
FAQ
- MD5とは何の略ですか?
- MD5はMessage Digest Algorithm 5(メッセージダイジェストアルゴリズム5)の略です。
- MD5はパスワードに安全ですか?
- いいえ。MD5は計算が速いため、ブルートフォース攻撃やレインボーテーブルで簡単にクラックされます。パスワードにはその目的のために設計された低速なハッシュアルゴリズム(bcrypt・scrypt・Argon2)を使ってください。
- MD5ハッシュの長さはいくつですか?
- MD5ハッシュは常に128ビット(16バイト)で、16進数でエンコードすると正確に32文字になります。