暗号
SHA-1
別称: Secure Hash Algorithm 1, FIPS 180-1
定義
1995 年に NSA が設計した暗号学的ハッシュ関数で、160 ビットのダイジェストを出力するが、現在では衝突耐性が破られている。
SHA-1(Secure Hash Algorithm 1)は Merkle-Damgård 構造に基づくハッシュ関数で、任意長の入力を 160 ビット(20 バイト)のダイジェストに圧縮し、TLS 証明書、Git、デジタル署名などで広く利用されてきました。NIST が FIPS 180-1 として SHA-0 の後継として標準化しました。2017 年の SHAttered プロジェクトで初の実用的衝突が示され、2020 年の SHAmbles 攻撃では選択プレフィックス衝突のコストがさらに低下したため、署名・証明書・衝突耐性が必要な完全性用途には SHA-1 を使用してはなりません。現代のシステムでは SHA-256、SHA-3、BLAKE2 を採用し、SHA-1 は衝突耐性を要求しないレガシー HMAC でのみ許容されます。
例
- Git はコミットとオブジェクトの識別に SHA-1 を使用(SHA-256 への移行が進行中)。
- SHA-1 で署名された旧 X.509 証明書は 2017 年以降ブラウザで非推奨。
関連用語
暗号学的ハッシュ関数
任意長の入力を固定長のダイジェストへ写す決定的な一方向関数で、衝突耐性・原像耐性・第二原像耐性を備える。
MD5
Ron Rivest が 1992 年に設計した 128 ビットの暗号学的ハッシュ関数。実用的な衝突が容易に作れる「破られた」アルゴリズムであり、セキュリティ用途では使用してはならない。
SHA-256
SHA-2 ファミリーに属する 256 ビットの暗号学的ハッシュ関数で、デジタル署名、TLS、ブロックチェーン、完全性検証で広く利用される。
SHA-3
Keccak のスポンジ構造に基づくハッシュ関数ファミリーで、SHA-2 とは構造的に異なる代替として NIST が標準化した。
HMAC
RFC 2104 と FIPS 198-1 で定義された、暗号学的ハッシュ関数を土台とする鍵付きメッセージ認証コード(MAC)構造。
デジタル署名
メッセージや文書の真正性・完全性・否認防止を証明する公開鍵暗号方式のメカニズム。