💨

ハッシュアルゴリズムまとめ

に公開

1. MD5

  • 特徴: 128bit のハッシュ値を出す。昔はパスワード保存やチェックサムで広く使われた。
  • 利点: 計算が非常に速い。実装が豊富。
  • 欠点: 衝突が容易に作れる(セキュリティ用途には危険)。
  • 用途: 今は セキュリティではNG。ファイル整合性確認など「改ざん検出が厳密でなくても良い」用途に限定。

2. SHA(Secure Hash Algorithm)

  • 種類: SHA-1, SHA-2(SHA-256, SHA-512 など)、SHA-3。
  • 特徴: MD5より安全。SHA-1は既に衝突実証済み。現在は SHA-2 or SHA-3 が主流。
  • 利点: 衝突耐性が比較的強い。広く標準化されている。
  • 用途: 電子署名、TLS証明書、ブロックチェーンなど。

3. bcrypt

  • 特徴: パスワードハッシュ専用アルゴリズム。内部で Blowfish を利用。

  • 強み:

    • 「ストレッチング」機能があり、計算を意図的に遅くできる。
    • ソルトを自動生成して含めてくれる。
  • 用途: ユーザーパスワード保存の定番。Laravel や Rails にも標準対応。

4. scrypt

  • 特徴: bcryptの後発。さらに「メモリを大量に使う」仕組みを導入。
  • 強み: GPU や ASIC などによる総当たり攻撃を難しくする。
  • 用途: 高セキュリティなパスワード保存、暗号通貨(Litecoin など)でも利用。

ざっくり用途別まとめ

  • 改ざん検知 / チェックサム → MD5(セキュリティを気にしないなら)、SHA-256
  • 証明書・署名 / 暗号基盤 → SHA-256 / SHA-3
  • パスワード保存 → bcrypt(標準)、scrypt(さらに強固)、近年は Argon2 も主流化
  • 避けるべきもの → MD5, SHA-1(セキュリティには弱い)

Discussion