レッスン 3
MD5 と SHA アルゴリズム
MD5、SHA-1、SHA-2 ファミリーを実務の観点で比較します。
ハッシュアルゴリズムによって、ダイジェストの長さとセキュリティ余裕が異なります。誤った選択は相互運用性を壊したり、安全だという錯覚を生むことがあります。
MD5(128 ビット)
MD5 は高速で、レガシーのチェックサム、キャッシュキー、古いツールにまだ登場します。新しいセキュリティ設計には不向きです。衝突攻撃が実用的だからです。MD5 は互換性と検査には使い、動機のある攻撃者に対する強い整合性の証明には使わないでください。
SHA-1(160 ビット)
SHA-1 は今日ではほぼレガシーです。Git は SHA-1 ベースのオブジェクト ID 形式を使い続けていますが、多くのプラットフォームは TLS 証明書や署名から SHA-1 を離れています。SHA-1 は MD5 と同様、仕様で要求される場合に有用ですが、新しいセキュリティ保証には弱いです。
SHA-256、SHA-384、SHA-512(SHA-2 ファミリー)
これらが現代の一般的なデフォルトです。
- SHA-256: ファイルチェックサム、コンテンツアドレス、多くの API のデフォルト
- SHA-384 / SHA-512: 一部の標準やプラットフォームで要求されるより強いバリアント
3 つとも Web Crypto API 経由でブラウザで広くサポートされています。
実用的な選択ガイド
- 現代的なダウンロードチェックサムの検証 → SHA-256
- まだ MD5 を出力するサードパーティツールとの一致 → MD5
- SHA-512 を名指しするコンプライアンス文書への対応 → SHA-512
- パスワード保存 → これら単体では不可;Argon2、bcrypt、scrypt を使う
結果を比較する前に、アルゴリズム名、hex vs Base64 出力、生バイトか UTF-8 テキストか を必ず確認してください。