前から言われていたSHA1ハッシュ関数の衝突耐性について、Googleがついに「SHA-1ハッシュが同じ2つのPDFファイル」を公開しました。
以下はSHATTEREDの日本語訳です。
SHATTERED
SHA-1突破しちゃったわーつれーわー
SHA-1ハッシュ関数は、デジタル署名やファイルの完全性検証に用いられ、クレジットカード取引、電子文書、OSSリポジトリ、ソフトウェアアップデートなど、幅広いソフトウェア資産の保護に活躍しています。
我々は、ふたつのSHA-1ハッシュが同じPDFファイルを作り出すことに成功しました。
1枚目のPDFファイルのSHA-1ハッシュを2枚目で有効な署名として悪用することができます。
たとえば、家賃が異なる2枚の賃貸契約書を作成し、安い方にサインしたつもりが高い方が有効になっていた、といった行為が可能になります。
攻撃成功の証明
ここに2枚のPDFを用意した。
中身は異なるがSHA-1ハッシュは同じだ。
ファイルテスト
ドラッグ&ドロップで衝突攻撃の可能性があるか調べられるぞ。
アップしたファイルは保存したりしてないから安心せい。
Q&A
SHA-1ハッシュはなくなるの?
2005年に理論的な攻撃方法が発見されたものの、未だに多くのアプリケーションがSHA-1を使っています。
SHA-1はNISTが2011年に非推奨に指定しました。
この攻撃の実例を見て認識を改め、SHA-256のようなより安全な方法に速やかに移行することを願います。
自分自身をどうやって守ればいいの?
上のファイルテスターを使ってファイルをチェックすることができます。
Chromeを使うと、安全でないTLS/SSL証明書は自動的に却下されます。
Firefoxも2017年初頭に予定しています。
Gmailで添付したファイルや、Googleドライブで保存したファイルについては、既にこの攻撃に対して自動的にテストを行っています。
どんなシステムが影響を受けるん?
デジタル署名、ファイルの整合性チェック、ファイル識別にSHA-1ハッシュを使っているアプリケーションは脆弱です。
たとえば以下のようなアプリです。
・デジタル証明書の署名
・電子メールのPGP/GPG署名
・ソフトウェアベンダーの署名
・ソフトウェアのアップデート
・ISOチェックサム
・バックアップシステム
・重複排除システム
・git
・その他諸々
TLS/SSL証明書はアウト?
CA/Browser Forumの規定ではSHA-1ハッシュは許可されていません。
さらに、認証局は証明書のserialNumberフィールドに最低64ビットのランダム値を挿入しなければなりません。
これが適切に実装されていれば、攻撃を防ぐのに役立ちます。
ブラウザに警告が表示される?
2017年1月のChrome56から、SHA-1証明書は安全でないと見なして警告します。
Firefoxでは2017年初頭に予定されています。
gitはどんな影響を受ける?
gitはファイル識別と完全性チェック、そしてcommitについてSHA-1に強く依存しています。
理論上は、中身が全く違うのに同じハッシュのcommitを作ることが可能です。
攻撃者は
攻撃者は自分のコリジョンを計算する必要があります。
自分の作ったアプリの対策方法は?
SHA-256やSHA-3など、より安全なハッシュ関数を使ってください。
この攻撃をどうやって検出するの?
上記オンラインツールにファイルをアップし、SHA-1のコリジョン攻撃をチェックすることができます。
実際のコードはGitHubで公開されてるよ。
これはCWIのMarc Stevensと、MicrosoftのDan Shumowによって作成されました。
これはCounter-cryptanalysisという概念に基づいていて、衝突するファイルのペアの片方が与えられた場合、既知および未知のSHA-1衝突攻撃を検出できます。
この攻撃はどれくらい広がってますか?
我々の知る限り、実際の衝突例はこれまでに初めて作成されたものです。
野生の悪用例はありますか?
我々の知る限り存在しません。
Hardened SHA-1
は脆弱ですか?
いいえ、Hardened SHA-1
は、コリジョンが発見された場合、安全なハッシュになるようにSHA-1の計算を調整します。
コリジョンのないファイルについては通常のSHA-1ハッシュを計算します。
こんな攻撃誰ができる?
この攻撃には9,223,372,036,854,775,808回のSHA-1計算が必要でした。
これはシングルCPUで6500年とシングルGPUで110年分の計算量です。
ブルートフォース攻撃とどう違うんだ?
SHAttered攻撃は、誕生日のパラドックスを利用するブルートフォース攻撃より10万倍高速です。
ブルートフォース攻撃は12000000GPU年を要するので実用的ではありません。
PDFフォーマットをどう活用した?
百聞は一見にしかず、こうだ。
研究チームについて
これは、Cryptology Group at Centrum Wiskunde & Informatica-オランダ国立情報工学・数学研究所と、Google Security, Privacy & Abuse Researchチームの長期的な協力の結果です。
2年前、Googleの不正防止研究チームを率いているMarc StevensとElie Burszteinが、Googleの専門知識とインフラを利用して、SHA-1ハッシュに対するMarcの暗号解読攻撃を実践することにしました。
以来、多くのCWI研究者とGoogle社員がこのプロジェクトに協力してくれました。
解読とプロトタイプの実装を行ったPierre Karpman、PDF攻撃を発見したAnge Albertini、分散CPUコードを担当したYarik Markov、ユーザ保護のために衝突検出器を実装したAlex Petit-Bianco、オンラインファイルチェッカーを作成したLuca Invernizzi、計算の確実性を監督したClement Blaisse。
感想
これは強衝突耐性が突破されたということでいいのかな。
でもgitにも脆弱性ってことは、やったつもりのcommitが別の中身に入れ替えられるってことだから弱衝突耐性だよな?
よくわからん。
で、実例が出てきたのはいいが、数年後はわからんけど現状で6500年は現実的な脅威なのだろうか。
あとHardened SHA-1
って情報が全く出てこないんだがなんだろう。
全てのSHA-1が脆弱なわけではなく、何らかの条件に合致するものが問題になる?