SHA-1 vs SHA-256の比較

SHA-1とSHA-256を比較。出力サイズ、セキュリティ状況、移行ガイダンス、非推奨のSHA-1からSHA-256への移行が急務である理由を解説します。

General

詳細な説明

SHA-1とSHA-256はSecure Hash Algorithmファミリーの2世代を代表します。SHA-1(1995年)は衝突攻撃の実証により非推奨、SHA-256(2001年)は完全に安全なままです。SHA-1からSHA-256への移行は、レガシーシステムにとって最も重要なセキュリティアップグレードの一つです。

出力と構造:

SHA-1は160ビットダイジェスト(40文字の16進数)を80ラウンドの32ビット演算で生成します。SHA-256は256ビットダイジェスト(64文字の16進数)を64ラウンドの32ビット演算で生成します。SHA-256のラウンド数は少ないですが、各ラウンドはより複雑で、広い出力がはるかに高いセキュリティを提供します。

セキュリティ状況:

SHA-1の衝突耐性は実際に破られています。SHAttered攻撃(2017年)が完全な衝突を実証し、2020年には50,000ドル未満のコンピューティングコストで選択プレフィックス衝突が達成されました。SHA-256には既知の弱点がありません。SHA-256に対する最善の攻撃はブルートフォースで、衝突には約2^128回の操作が必要であり、計算上不可能です。

パフォーマンス比較:

SHA-1はソフトウェアでSHA-256より約20〜30%高速です。しかし、ほとんどのアプリケーションではハッシュがボトルネックではないため、この差は無視できます。SHA-NI拡張搭載のCPUではSHA-256が劇的に高速化され、SHA-1と同等の速度になります。SHA-1のわずかなパフォーマンス向上がセキュリティリスクを正当化することはありません。

移行戦略:

TLS証明書については2017年までに業界全体の移行が完了しました。コード署名では全主要プラットフォームがSHA-256を要求しています。API認証(HMAC)については、HMAC-SHA1は衝突耐性に依存しないため安全とされますが、HMAC-SHA256への移行で疑問を排除できます。GitではSHA-1からSHA-256への移行がSHA-256オブジェクトフォーマットで進行中です。

結論:

新しいシステムでSHA-1を使用する正当な理由はありません。既存コードにSHA-1を見つけた場合はSHA-256への移行計画を作成してください。

ユースケース

この比較は、TLS証明書、コード署名、API認証、バージョン管理において、レガシーシステムをSHA-1からSHA-256に移行するチームをガイドします。

Try It — Hash Generator

フルツールを開く