SHA-1ハッシュアルゴリズム

SHA-1ハッシュアルゴリズムの仕組み、160ビット出力、非推奨化のタイムライン、主要ブラウザやシステムがSHA-1から移行した理由を解説します。

SHA-1

詳細な説明

SHA-1(Secure Hash Algorithm 1)は、NSAが設計し1995年にNISTがFIPS 180-1として公開したハッシュ関数です。160ビット(20バイト)のダイジェストを生成し、40文字の16進数文字列として表されます。SHA-1は10年以上にわたって主要な暗号学的ハッシュ関数でしたが、ほとんどのセキュリティ用途で正式に非推奨となっています。

SHA-1の仕組み:

SHA-1はMD5と同様に512ビットブロック単位で入力を処理しますが、より広い内部状態を持ちます。標準的なパディング後、各ブロックは4グループ×各20ラウンド(合計80ラウンド)の計算を経ます。5つの32ビット作業変数(AからE)が、回転、加算、非線形関数の組み合わせにより各ラウンドで更新されます。

非推奨化のタイムライン:

2005年に研究者が衝突耐性が予想より弱いことを示し、理論的な弱点が特定されました。2017年、GoogleとCWI AmsterdamがSHAttered攻撃を発表し、約6,500 CPU年の計算で同じSHA-1ハッシュを持つ2つの異なるPDFファイルを生成しました。2020年には選択プレフィックス衝突攻撃がクラウドコンピューティングコスト約45,000ドルで実現可能になりました。

業界の対応:

主要な認証局は2016年までにSHA-1 SSL証明書の発行を停止しました。Chrome、Firefox、Edgeを含むブラウザは2017年にSHA-1証明書の拒否を開始しました。NISTは2011年にデジタル署名でのSHA-1を正式に非推奨とし、2030年までの完全廃止を推奨しました。

現在の正当な使用法:

SHA-1はGitのコミット識別(SHA-256への移行中)、衝突の弱点があまり関連しない一部のHMAC構造、移行中のレガシーシステムにまだ残っています。新しいプロジェクトではSHA-256またはSHA-3を使用すべきです。

ユースケース

SHA-1はGitのコミットハッシュやレガシーなHMAC-SHA1実装にまだ見られますが、新しいシステムではすべての暗号学的ハッシュにSHA-256を使用すべきです。

Try It — Hash Generator

フルツールを開く