SHA-1はセキュアハッシュアルゴリズム(Secure Hash Algorithm)の略ですが、1995年に開発されたバージョン1は全く安全ではありません。理論上は2004年から脆弱性が存在していましたが、CWIアムステルダムとGoogleの研究者が、多少コストはかかるものの実用的な衝突攻撃を実証したのは2017年になってからでした。
昨年、フランスのInriaの暗号専門家Gaëtan Leurent氏とシンガポールの南洋理工大学のThomas Peyrin氏は、より強力な技術である選択プレフィックス衝突攻撃を提案した[PDF]。
そして今週、米国で開催された「リアルワールド暗号シンポジウム」で、彼らはそれをどのように実現したかを説明した。
「このより強力な攻撃により、任意の2つのプレフィックスを持つ衝突メッセージを構築することが可能となり、実際のプロトコルにとってははるかに脅威となる」と、ルラン氏とペイラン氏は会議で発表された論文「SHA-1は混乱だ」の中で述べている。
ハッシュアルゴリズムとは、入力データを固定長の別の値に数学的にマッピングする関数です。一方向暗号化のように考えてみてください。入力データの長さに関係なく、一定サイズの要約または指紋に変換されます。このハッシュから元のデータを再現することはできません。入力データのほんの一部を変更するだけでも、理想的にはハッシュに大きな変化が生じます。ハッシュは通常、入力データよりもはるかに小さくなります。
ハッシュは認証や関連アプリケーションに使用されます。例えば、ハッシュを比較することで、データが転送中に改ざんされていないことを確認できます。ハッシュ衝突は、2つの異なる入力が同じ出力を生成する場合に発生します。これは、例えば保存されているパスワードのハッシュとユーザーが入力したパスワードのハッシュを照合し、特定のパスワードのみでアクセスできるようにしたい場合など、明らかに望ましくない状況です。
選択されたプレフィックスの衝突は、攻撃者がプレフィックス付きのコンテンツを選択できるため、より深刻な脅威となります。
2012年、米国国立標準技術研究所(NIST)が衝突耐性を必要とするアプリケーションにSHA-1を使用しないよう勧告した同じ年に、暗号学者のブルース・シュナイアー氏は、SHA-1攻撃を実行するためのクラウドコンピューティング費用は約277万ドルになると推定しました。そして、2021年までにそのコストは約4万3000ドルに下がると予測しました。
ルラン氏とペイラン氏は論文の中で、SHA-1衝突の理論的なコストを11,000ドル、選択プレフィックス衝突の理論的なコストを45,000ドルと見積もっています。実際に攻撃を実行するには、900基のNvidia GTX 1060 GPUを使用して2ヶ月の計算時間を要しました。当時のGPU価格が高かったことと、攻撃準備に時間を浪費したため、研究者たちは約75,000ドルを支払ったことになります。
彼らの攻撃は、異なる ID を持ちながら SHA-1 証明書を衝突させる PGP/GnuPG キーのペアを作成することで、被害者になりすまして被害者の名前で文書にデジタル署名することを可能にしました。
「我々の研究は、SHA-1がデジタル署名での使用において完全に、そして事実上破られていることを示しています」と研究者たちは論文の中で述べています。「GPU技術の向上と全体的な計算コストの低下により、我々の攻撃はすぐにさらに安価になり、悪意のある攻撃者にとって非常に近い将来、事実上可能になるでしょう。」
技術コミュニティの多くは、脆弱な状況でSHA-1を回避するための対策を既に講じています。ChromeやFirefoxなどのWebブラウザは2017年初頭にSSL SHA-1証明書の受け入れを停止し、数か月後にはEdgeとInternet Explorerもこれに続きました。
昨年11月、AppleはmacOS 10.15とiOS 13ではSHA-1証明書を信頼しないと発表しました。Microsoftも昨年同様の措置を講じています。
SHA-1 の使用率は低く、Leurent 氏と Peyrin 氏は、ウェブサイトの証明書のうち、まだ SHA-1 を使用しているのは約 1% であり、2017 年の 20% から減少していると主張しています。とはいえ、SHA-1 署名は依然として多くのアプリケーションでサポートされています。
「SHA-1は、GnuPGの旧バージョン(バージョン1.4)におけるPGP鍵の認証に用いられるデフォルトのハッシュ関数であり、これらの署名は、我々が結果を報告する以前からGnuPGの最新バージョン(バージョン2.2)で受け入れられていた」と研究者らは指摘する。「多くの非Web TLSクライアントもSHA-1証明書を受け入れており、TLSとSSHのプロトコル内署名ではSHA-1が依然として認められている。」
ルラン氏とペイラン氏は責任ある情報開示の精神に基づき、影響を受ける複数のベンダーに連絡を取ったが、全員に通知することはできなかったという。GnuPGは2019年11月25日のリリースでこの問題に修正を加え、2019年1月19日以降に作成されたSHA-1ベースのID署名は無効になった。
開発者が安全でないSHA-1暗号ハッシュ関数のイーサリアムコードを記述
続きを読む
研究者らは、SHA-1の使用率が低い場合でも、中間者攻撃によって接続がSHA-1にダウングレードされる可能性があると指摘しています。また、SHA-1は依然としてGitバージョン管理システムの基盤となっています。PGP鍵の認証局であるCAcertは、研究者らの懸念を認識していますが、まだこの問題に対処していません。また、研究者らによると、OpenSSLの開発者は、少なくとも80ビットのセキュリティを必要とするセキュリティレベル1の設定でSHA-1を無効にすることを検討しています(SHA-1は160ビットのハッシュ値を生成します)。
2017年、Gitの開発者Linus Torvalds氏は、GitのSHA-1ハッシュに対する攻撃に関する懸念を否定しました。MicrosoftがホストするGitサービスであるGitHubも同様の見解を示し、ブログ記事で、計算するハッシュごとに共謀検出機能を実装し、オープンソースのGitプロジェクトがSHA-1からの移行計画を策定中であると述べました。
GitHubはコメント要請にすぐには応じなかった。
SHA-256の実装に向けた取り組みの証拠はGitメーリングリストで確認できますが、作業は継続中のようです。現在、Git開発者は、リポジトリの整合性チェックには、2017年に開発されGitHubによって実装された衝突検出ライブラリの使用を推奨しています。®