SHA-1とは?
SHA-1 (Secure Hash Algorithm 1) 160ビットのダイジェスト(40桁の16進数)を出力します。設計者は NSA および発行元 NIST 1995年に(FIPS 180-1)、 デジタル署名、ファイルチェックサム、バージョン管理システムで人気となりました。
セキュリティ注意事項: SHA-1は破損しています — 新しいシステムにはSHA-256、SHA-3、またはBLAKE3を使用してください。
SHA-1の動作方法
- メッセージをパディング → 長さ ≡ 448 (mod 512) ビット
- 元のメッセージの64ビット長を追加
- 5つの32ビットワードを初期化 (A–E)
- 512ビットブロックを80回の操作(4ラウンド)で処理
- 最終的な160ビットダイジェストを出力
セキュリティ状況
- 2005年 — 最初の理論的衝突攻撃
- 2017年 — GoogleとCWIアムステルダムが実際の衝突(“SHAttered” PDF)を実証
- ブラウザは現在SHA-1 TLS証明書を信用しません
- NISTは2011年にデジタル署名用のSHA-1を非推奨にしました
ハッシュの例
Input | SHA-1ハッシュ |
---|---|
Hello World | 0a4d55a8d778e5022fab701977c5d840bbc486d0 |
password | 5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8 |
test123 | 7288edd0fc3ffcbe93a0cf06e3568e28521687bc |
(空) | da39a3ee5e6b4b0d3255bfef95601890afd80709 |
SHA-1と他のハッシュ関数の比較
Algorithm | Output | Security | Speed |
---|---|---|---|
MD5 | 128ビット | ❌ 破損 | ⚡ 非常に高速 |
SHA-1 | 160ビット | ❌ 危殆化 | ⚡ 高速 |
SHA-256 | 256ビット | ✅ 安全 | 🚀 中程度 |
SHA-3 | Variable | ✅ 非常に安全 | 🚀 中程度 |
BLAKE3 | 256ビット | ✅ 安全 | ⚡ 超高速 |
よくある質問
SHA-1はパスワードに安全ですか?
いいえ。代わりにbcrypt、Argon2、またはPBKDF2を使用してください。
SHA-1の衝突とは何ですか?
衝突は、異なる2つの入力が同じハッシュを生成する場合に発生します。2017年の“SHAttered”攻撃は実際の衝突を証明しました。
なぜGitはまだSHA-1を使っているのですか?
Gitの設計は悪用を制限していますが、プロジェクトはより強力な保証のためにSHA-256へ移行しています。