開発者ツール · SHA ハッシュ計算ツール
SHA-1 衝突の説明: 何がまだ安全で、何が移行する必要があるか
· なぜそれが重要なのか
しゃ-256 暗号化 セキュリティ
スキャナーが SHA-1 にフラグを立てると、管理者がその緊急度を尋ねます。この投稿では、衝突攻撃が何を行うのか、何が壊れないのか、SHA-1 がまだ許容される場合、および移行を計画する方法について説明します。
スキャナーは SHA-1 が壊れていると言っていますが、何のために壊れているのでしょうか?移行の緊急性を決める質問
ネットワーク セキュリティ スキャナーは、インフラストラクチャ上で SHA-1 のフラグを立てます。経営陣はどれくらい緊急なのかを尋ねます。答えは、SHA-1 を何に使用しているかによって完全に異なります。その質問によって、コンプライアンスの問題があるのか、進行中のセキュリティの問題があるのか、あるいは単にカタログ化する必要があるレガシー アーティファクトがあるのかがわかります。 SHA-1 は暗号的に破られています。学術的なデモンストレーションによって衝突が証明されています。ただし、「壊れている」という言葉の意味は、システム内で SHA-1 が果たす役割に応じて異なります。
暗号化ハッシュは、さまざまなコンテキストでさまざまな目的を果たします。偶発的な破損を防ぐチェックサムである場合もあります。場合によっては、発行者が意図したファイルを受信したことをユーザーが確認できるようにする、発行されたダウンロード チェックサムのようなコミットメントであることもあります。署名または証明書チェーンの一部である場合もあり、十分な制御を持った攻撃者は、同じハッシュを共有する意味のある 2 つの文書を作成し、それによって認証を偽造することができます。 SHA-1 衝突の重大度は、SHA-1 がシステム内でどの役割を担うかに大きく依存します。
コリジョンとプリイメージ — 公に実証された攻撃がコリジョンをターゲットとする理由と、それが既存のハッシュに何を意味するのか
衝突攻撃では、同じ出力を持つ 2 つの異なる入力が生成されます。攻撃者は、所定の値にハッシュされるメッセージを見つけられません。これはプリイメージ攻撃となり、SHA-1 では依然として実行不可能です。代わりに、衝突攻撃は、攻撃者が同一にハッシュする 2 つのドキュメントを作成できることを意味します。システムが 2 つのものが同じであることを証明するためにハッシュに依存している場合、衝突によってその証明は崩れてしまいます。攻撃者は両方の入力を作成する必要があり、これには時間と計算が必要ですが、その結果、ハッシュの下では同一に見える 2 つの異なるものが得られます。
プリイメージ攻撃とは、攻撃者が公開された SHA-1 ハッシュを取得し、それに一致する入力を見つける可能性があることを意味します。これは、SHA-1 攻撃の仕組みではありません。 SHA-1 ダイジェストのリポジトリがあり、ファイルがそれらに本当に一致するかどうかを心配している場合、衝突攻撃は脅威ではありません。脅威は、リポジトリにアクセスできる誰かが、同じダイジェストに対して別のファイルを偽造できるかどうかです。ほとんどの場合、ハッシュ プロセス自体を制御しない限り、これも現実的ではありません。アルゴリズムと同じくらい重要なのは、具体的な攻撃モデルです。
2017 のデモ — 同じ SHA-1 を持つ 2 つの異なるファイル (定性的に説明)、およびその後の選択されたプレフィックスの作業
2017 からの SHAttered 攻撃は、同じ SHA-1 ダイジェストを持つ 2 つの異なる PDF ファイルという実質的な衝突を示しました。研究者らは両方のファイルを慎重に構築し、衝突しながらも有効な PDF になるように作成しました。この作業には、かなりの計算量と特殊なハードウェアが必要でした。重要なのは、それがまったく可能だったということです。セキュリティのために SHA-1 を使用することを正当化する衝突耐性は失われています。この攻撃により、意味的に異なる 2 つの文書がダイジェストを共有できることが証明され、ダイジェストを身元証明として信頼するシステムが機能しなくなります。
2020 に続く「SHA-1 は修羅場」と呼ばれる攻撃は、選択プレフィックス衝突という次のステップに進みました。この亜種は、攻撃者が 2 つの任意のドキュメントを取得し、それぞれに異なるサフィックスを連結して衝突を引き起こすことができることを意味します。これは署名と証明書に対する危険な攻撃です。攻撃者は最初から始める必要はありません。 2 つの意味のある別個のドキュメントが衝突する可能性があります。これにより、SHA-1 ダイジェストに署名するシステムのセキュリティ モデルが破壊されます。攻撃者は、両方とも同じハッシュを持ち、両方とも異なる意味を持つ 2 つのドキュメントを作成する可能性があります。
ここで、SHA-1 は受け入れられません。署名、証明書、および攻撃者が両方の側に影響を与える可能性のあるものはすべて受け入れられません。
SHA-1 は一部の役割ではまだ許容できるが、他の役割では絶対に許容できないため、この区別は重要です。 Git では、SHA-1 はコンテンツ アドレス、つまりファイルの特定のスナップショットの名前として使用されます。 Git は認証に SHA-1 を使用しません。それは命名スキームです。理論的には、攻撃者は同じ ID で 2 つの異なるリポジトリの状態を計算できますが、それにはコンテンツ作成プロセス全体を制御し、誰かが気づく前に両方のバージョンをプッシュする必要があります。ほとんどのチームにとって、そのレベルの攻撃者制御は脅威モデルではありません。これが、Git が緊急事態として扱うのではなく、意図的に SHA-256 に移行している理由です。
Web ダウンロード検証シナリオでは、発行者はファイルとその SHA-1 チェックサムを同じサーバーに投稿します。サーバーに侵入した攻撃者は、ファイルとチェックサムの両方を制御します。ファイルをアップロードしてその SHA-1 を投稿できますが、衝突は必要ありません。チェックサムが別の場所 (安全な VPN 上、署名付き電子メールに印刷される、別のインフラストラクチャで公開される) に投稿された場合、攻撃者は衝突する必要があり、それは不可能になります。チェックサムの信頼性は、そのチャネルと同じくらいです。これが、ダウンロードの検証にハッシュ以上のものが必要となる理由です。
リスクが少なく残留する場合 — 非敵対的設定でのコンテンツ識別と Git の SHA-256 への段階的移行
署名と証明書の場合、SHA-1 は弁護の余地がありません。証明書は信頼されたルートからチェーンされます。 CA が同じ SHA-1 ダイジェストを使用して 2 つの異なる証明書に署名した場合、衝突攻撃により攻撃者はどちらかを偽造できます。これは理論上のものではありません。中間 CA に対する攻撃は文書化されています。 SHA-1 に依存する署名スキームは、十分なリソースを持つ攻撃者によって偽造できる可能性があります。すべての主要なブラウザーと OS ベンダーは、証明書の SHA-1 を非推奨にしています。新しい証明書は SHA-256 を使用する必要があります。脅威は現実的かつ差し迫ったものであるため、プラットフォーム ベンダーは明確に発言しました。
米国の標準化団体である NIST は、明確なスケジュールを述べています。 2024 以降、SHA-1 は新しいアプリケーションには使用しないでください。 2030 の時点で、SHA-1 は連邦システムから完全に廃止される予定です。これは漠然とした非推奨ではありません。これは政府請負業者に対する具体的な義務であり、業界へのシグナルでもあります。 NIST のタイムラインに従うことで、システムは期限を過ぎてスクランブルが発生するのではなく、確実に非推奨化の曲線を先取りすることができます。
リポジトリの証拠は、未読の NIST 出版物や廃止日ではなく、SHA-1 の非推奨をサポートしています
リポジトリ ソースには、従来の相互運用性として SHA-1 が文書化されており、衝突作業を示す名前が記載されていますが、標準化団体の廃止スケジュールは含まれていません。したがって、このセクションでは、未読の出版番号や準拠日を引用するのではなく、非推奨をエンジニアリング インベントリの問題として扱うことで概要を修正します。
ポリシーで管理された環境の場合は、その展開を管理する当局に相談し、レビューした正確なドキュメントを記録してください。ここでの製品証拠は、より狭いアクションをサポートしています。つまり、既存の値を再現するために SHA-1 を利用できるようにし、新しいセキュリティ用途には不適当であるとラベルを付け、周囲のプロトコルが移行を許可する場合は常に SHA-256 の置換を計算します。
実用的な例 — 従来のダウンロード検証ページに適用された移行チェックリスト
SHA-1 からの移行パスは通常、インベントリから始まります。SHA-1 はどこで使用されますか?証明書と署名?即時優先。 Git リポジトリとコンテンツ アドレス指定?優先度は中、Git 移行ペースに従います。ダウンロード用のチェックサムは公開されていますか?信頼モデルによって異なります。重複排除またはアーカイブのための内部チェックサム?優先順位が低いほど、計画に時間がかかります。在庫フェーズでは実際の表面積が明らかになり、抽象的な緊急性ではなく実際のリスクに基づいて優先順位を付けるのに役立ちます。
役割ごとに、移行は異なります。証明書はすぐに SHA-256 にアップグレードされます。 Git リポジトリは、下位互換性のために SHA-1 を維持しながら、SHA-256 参照を段階的に導入します。ダウンロード チェックサムは SHA-1 と SHA-256 の両方で公開され始め、最終的には SHA-256 のみになります。チェックサム データベース内のレガシー SHA-1 ダイジェストは、ToolAcre SHA ハッシュ計算ツールで検証でき、新しいエントリは SHA-256 を使用する必要があります。このツールは移行の両側をサポートしており、古いハッシュを検証して新しいハッシュを作成できます。
要点: 比較には SHA-1、新しい作業には SHA-256 — ToolAcre SHA ハッシュ計算ツールには SHA-1 が含まれているため、推奨ではなくレガシー ダイジェストをチェックできます
ほとんどの組織にとって、移行は「明日 SHA-1 をオフにする」というものではありません。それは、「どこで使用されているかを理解し、セキュリティクリティカルな役割に優先順位を付け、複数年にわたる計画を立てること」です。何年にもわたる SHA-1 コミットがある Git リポジトリは、両方を処理するツールを使用して徐々に移行する必要があります。証明書インフラストラクチャはすでに移行されているはずです。公開されたチェックサムは、移行期間中はデュアル アルゴリズムである必要があります。段階的な移行により、重大な変更が減り、システムが新しい現実に適応する時間が与えられます。
ToolAcre SHA ハッシュ計算ツールは、その遷移の両側を提供します。レガシー システムからの既存の SHA-1 ダイジェストを検証して、ファイルがそれらに一致することを確認できます。 SHA-256 ハッシュを計算して、移行パスの公開を開始できます。このツールは SHA-1 が安全であるかのように振る舞うことはありません。壊れているというラベルが付けられ、その理由が説明されます。ただし、SHA-256 へのブリッジを構築し、非推奨を計画する際に、依然として維持する必要があるレガシー ハッシュを扱うことができます。