LoginSignup
8

More than 5 years have passed since last update.

SHATTERED

Last updated at Posted at 2017-02-24

前から言われていた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ハッシュは同じだ。

PDF1 | PDF2

ファイルテスト

ドラッグ&ドロップで衝突攻撃の可能性があるか調べられるぞ。
アップしたファイルは保存したりしてないから安心せい。

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 StevensElie 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が脆弱なわけではなく、何らかの条件に合致するものが問題になる?

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8