テキスト
MD5ハッシュの計算
入力した文字列のMD5ハッシュ値をブラウザ上でリアルタイムに計算します。ファイルの整合性チェックや文字列の一意識別に利用されますが、衝突攻撃が実証されているためセキュリティ用途には推奨されません。
| MD5 |
|---|
Tips
- MD5は1991年にロナルド・リベストが設計した128ビットのハッシュ関数です。2004年に衝突攻撃(異なる入力から同一ハッシュ値を生成)が実証されたため、セキュリティ用途には使用すべきではありません。
- ダウンロードしたファイルの整合性確認(改ざん検知ではなく偶発的なデータ破損の検出)には今でも広く使われています。配布元が公開するMD5値と手元で計算した値を照合します。
- パスワードの保存にMD5を使うことは非常に危険です。現代のGPUはMD5を毎秒数百億回計算できるため、短いパスワードは一瞬で解析されます。
- MD5の出力は常に128ビット(32文字の16進数)です。入力の長さに関わらず常に同じ長さの出力が得られます。
- パスワード保存にはBCryptやArgon2など、計算コストを意図的に高くした専用アルゴリズムを使用してください。
余談ですが ― MD5の発明者と「壊された」アルゴリズムの軌跡
MD5(Message Digest Algorithm 5)は1991年に暗号学者ロナルド・リベスト(RSA暗号の「R」)によって設計されました。当初は安全なハッシュ関数として普及しましたが、1996年に設計上の弱点が指摘され、2004年に中国の暗号研究者王小雲らが衝突攻撃の実証に成功したことで、セキュリティ用途からの引退が決定的になりました。
2008年にはMD5の衝突攻撃を利用して偽のSSL証明書が作成されたという実例が報告されました。同一MD5ハッシュ値を持つ偽の証明書を作成し中間者攻撃を可能にするという深刻な問題です。これをきっかけに主要ブラウザやCAは証明書へのMD5使用を廃止しました。
現在MD5が残っている主な用途は、セキュリティとは無関係なチェックサム(非セキュリティ用)です。大容量ファイルの転送後に「データが正確に届いたか」を確認する目的には、悪意ある改ざんではなく偶発的なデータ破損の検出であればMD5で十分に機能します。