8/25/2016

SWEET32: 64ビットブロック暗号への誕生日攻撃

トリプルDESのような64ビットブロック暗号に対する誕生日攻撃が実用になることが分かったとのこと(SWEET32、CVE-2016-2183)。

TLSSSHIPsecOpenVPNのような暗号プロトコルは、クライアントとサーバ間でデータを暗号するために、一般的にAES、トリプルDES、Blowfishのようなブロック暗号アルゴリズムを利用している。そのようなアルゴリズムを使用するには、データはブロックと呼ばれる固定長の塊に分割し、各ブロックは暗号利用モードに従って別々に暗号化される。トリプルDESやBlowfishのような古いブロック暗号は、ブロックサイズが64ビットであるのに対し、AESは128ビットのブロックサイズを使用している。

たとえブロック暗号に対する暗号攻撃自身でなくとも、短いブロックサイズは誕生日攻撃に弱いブロック暗号になるということが暗号の世界ではよく知られている。我々はそのような攻撃がTLSやOpenVPNのような一般的なプロトコルで使われる64ビットブロック暗号の共通使用に実用になるということに気付いた。さらに、そのような暗号は広くインターネットで利用可能である。Blowfishは現在OpenVPNのデフォルト暗号で、トリプルDESは大半のHTTPSウェブサーバによってサポートされている。そして、ブラウザとウェブサーバ間のHTTPS通信のおおよそ1-2%で使われている。

我々はブラウザとウェブサイト間を長期間トリプルDESのHTTPS通信を監視できるネットワークの攻撃者が785GBのトラフィック量をキャプチャすることでセキュアなHTTPクッキーを再生できることを示す。我々のPoC(proof-of-concept)デモでは、この攻撃は今のところトラフィックを生成するために悪意のあるJavascriptを使って2日掛からない。2日間ウェブ通信を持続することは、実際にはありえないように見えるだろう。しかし、ラボの中では容易に実行できる。計算の複雑性という観点から、この攻撃はRC4への最近の攻撃と同等である。我々は64ビット暗号、例えばOpenVPNを使用するVPN上への同様の攻撃も実演する。長期のBlowfishの通信は普通のことだ。

対策が現在ブラウザベンダ、OpenSSL、OpenVPNチームによって実装されており、我々は最新の利用可能なバージョンへのアップデートを推奨する。

我々の研究結果はACM CCS 2016下記の技術論文の中に載るだろう。

OpenSSLHacker NewsMatthew Green

追記(2016.8.27)

シュナイアー先生も取り上げていた。

64ビットはブロック暗号にとって非常に小さいことが前から知られている。そんなわけで、AESのような新しいブロック暗号は128ビット、あるいはもっと長いブロックサイズを持つ。小さなブロックの不安定さは"Sweet32"と呼ばれる新しい攻撃によってうまく説明されている。攻撃者は鍵を知らなくても、トラフィックを復号するのにインターネットプロトコルでブロック衝突を見つける能力を悪用する。

論文はここ。Matthew Greenは攻撃について素晴らしい説明をしている。そして、いくつかニュース記事。Hacker Newsのスレッド