掘り起こされた過去の亡霊 SSL/TLSの「FREAK脆弱性」

西方望

March 18, 2015 17:30
by 西方望

言うまでもないことだが、暗号と軍事は切っても切れない関係にある。作戦などの重要な情報を敵に知られずに伝達するには暗号が必須だ。一方敵の側は、その暗号を解読できれば戦局が有利になるので、解読に力を注ぐ。現在公開中の映画「イミテーション・ゲーム/エニグマと天才数学者の秘密」でも、第二次大戦中にドイツが使用していたエニグマ暗号の解読が描かれている(全くの余談だが、本作主演のベネディクト・カンバーバッチは、以前にWikileaks創設者ジュリアン・アサンジを演じたことがある)。

先日のSuperfishの記事では、SSL/TLS(Secure Sockets Layer/Transport Layer Security)で使われる公開鍵暗号方式の概要を解説した。公開鍵暗号という画期的な暗号化手法が初めて世に出たのは1976年、ホイットフィールド・ディフィーとマーティン・ヘルマンの論文による。だが実はそれ以前に、イギリスで国家機密として公開鍵暗号方式が研究されていたことが後に明らかになった。暗号が国家にとっていかに重要であるかを示すエピソードといえる。

暗号と国家の関係といえば、かつて行われていたアメリカによる暗号の輸出規制(現在でも完全に規制が撤廃されたわけではない)、そしてフィル・ジマーマンとPGP(Pretty Good Privacy)にまつわる話を思い起こす人も多いだろう。アメリカ人フィル・ジマーマンが1991年に公開したPGPは、公開鍵暗号方式による暗号化・署名ソフトウェアだ。現在でも、主にメールの暗号化のため広く使われている。だがPGPは、アメリカ政府に問題視されることとなってしまった。

当時アメリカ政府は、暗号を準軍事技術と見なしており(それ自体は間違いではないが)、無条件で輸出できる暗号技術は、鍵長が40bit(文字にしたらわずか5文字)のものまでに限られていた。しかしPGPの鍵長は128bit。さらにネットで世界中から入手可能になっていたため、輸出規制に抵触するというのだ。そのためジマーマンはFBIなどの捜査対象となり、逮捕や起訴までには至らなかったものの、長い間苦しい思いを強いられた。しかしジマーマンは、アメリカ憲法修正第1条で言論の自由が保障されており、また書籍は輸出規制の対象となっていないことに目を付ける。PGPのソースコードを印刷し出版し、海外からでも自由に入手できるようにしたのだ。実にハッカー的な発想と言えるだろう。ともあれ、この時代遅れの規制はやがて緩和されていき、1996年にはジマーマンに対する捜査が打ち切られ、1999年にPGPは晴れて「合法」となった。

しかし、これはもはや過去の話。歴史的エピソードとしては重要だが、現在に特に影響を及ぼすものではない……というのは甘い考えだ。アメリカの暗号輸出規制が残した爪痕が、なんと20年の時を経て明らかになったのだ。それが、INRIA(フランス国立情報学自動制御研究所)とMicrosoft Researchの共同チーム「miTLS」が3月始めに発表した、「FREAK」脆弱性だ。

なお、FREAKは「Factoring RSA Export Keys(RSA輸出鍵の因数分解)」の略だというが、バックロニム(名前ありきの後付け略称)にしても少々強引に思える。昨年末掲載した「2014年のセキュリティ十大ニュース」では、最初に脆弱性の当たり年だったことを挙げて、「いずれの脆弱性もキャッチーな名前が付けられたのも特徴」と述べた。FREAKはその流れを引き継いでの、やや無理がある命名ということだろう。

FREAK以外にもキャッチーな名前のものとして、1月末にはLinuxのライブラリの脆弱性「GHOST」が話題となった。だが実のところGHOSTの影響はそれほど大きくないことが判明。幽霊(GHOST)の正体見たり枯れ尾花、とまでは言わないものの、昨年の「Heartbleed」「Shellshock」「POODLE」に比べれば「小物」だろう。しかしFREAK脆弱性はなかなかの大物のようだ。「幽霊」の名はむしろこちらの方がふさわしいかもしれない。なにしろ、とっくに死んだはずの規制の影響が不気味に現れたのだ。

Superfishの記事では、SSL/TLSの仕組み自体は概説したが、鍵共有に使用する公開鍵暗号方式、その後使う共有鍵暗号方式の具体的な名前は挙げなかった。それは、複数の暗号方式を使うことができるからだ。公開鍵暗号はディフィー・ヘルマン(先述の、初めて公開鍵暗号についての論文を発表した2人)方式やRSA暗号のバリエーションなど、共有鍵暗号はAES、3DES、DES、RC4などである。現在では脆弱な暗号も含まれているのはやむを得ないが、実はそれだけでなく1990年代当時ですら強度が十分でないと見なされていたものまで存在するのだ。これは、件の暗号輸出規制に起因する。

当時の規制で、アメリカ国外でのRSA暗号は鍵長512bitまでに限られていた。この輸出グレードの暗号は、先ほど紹介したFREAK解説サイトによれば、現在ではAmazon EC2などのクラウドコンピューティングを利用すれば、100ドルで12時間以内に解析できでしまう程度の弱さだという。それでも1990年代にはかろうじて安全だったが、512bit RSAは1999年にスーパーコンピューターを使って破られている。NSAなどが海外のHTTPS通信を盗聴していたのかもしれないが、それは本題ではない。

その後、暗号輸出規制の緩和により、アメリカ国外でも強度の十分な暗号が使われるようになっていった。だが、輸出グレードの暗号を使用できるという設定は残り続けた。無線LANのWEPが今でも残っているように、いったんサポートした規格は、簡単に外すわけにはいかないのだ。とはいえ、現在では、ほぼ100%のサーバーとブラウザーが輸出グレードの暗号を使用していないため、無効にしているサーバーも多い。例えば現在サポートされているWindows Serverでは、デフォルトで輸出グレードの暗号は使用しない設定になっているという。だがそれでも、輸出グレードの暗号を許可するサーバーはかなりの割合で残っている。

ただ、弱い暗号を使用できるようになっているのはむろん望ましいことではないが、仕様上サポートされている以上、これだけなら「脆弱性」とまでは言えない。SSL/TLSでどの暗号を使用するかは、通信の開始時にクライアントとサーバーがネゴシエーションを行って決定する。今ではどちらもはるかに強度の高い暗号を使えるのだから、当然輸出グレードのRSAなどが選ばれることはないはずだ。

だがここに2つの穴があった。1つはサーバー側の実装の問題。通常、サーバーの公開鍵は1024bit以上のものが使用されている。だが、これを輸出グレードの暗号を要求してきたクライアントに送ることはできない。しかし、鍵長が異なれば証明書も異なってしまう。1024bitと512bit以下の2種類の証明書を用意して使い分ければよいのだが、それは手間だし証明書の取得にはコストもかかる。そこで、輸出グレードの暗号を要求してきた相手には、一時的な512bitの公開鍵を送る。この鍵は、セッションごとに生成するとか、せめて短時間で交換するようにしていれば問題はないのだが、ずっと同じものを誰に対しても使うというサーバーが多いのだ。

ともあれ、攻撃者はあらかじめサーバーに接続して512bitの公開鍵を入手することはできる。512bitのRSA暗号は先述のように半日以下で解析(因数分解)可能だ。これで対応する秘密鍵が手に入る。これを利用して攻撃を行うには、サーバーとクライアントの通信の間に割り込む中間者(Man-in-the-Middle)となる必要がある。そして、クライアントがサーバーに対してHTTPSの通信を開始するのを待つ。最初にクライアントは当然、強度の高い暗号の使用を提案するが、この時点では暗号化されていないので中間者が改竄可能だ。そして輸出グレードの暗号を要求するように書き換えてサーバーに送る。これに対しサーバーは512bitの一時的公開鍵を返す。

ここで第2の穴だ。脆弱なクライアントは、自分が輸出グレードの暗号など要求していないにもかかわらず、この鍵を受け入れてしまうのだ。そして、共通鍵の元となるデータをこの公開鍵で暗号化して送るわけだが、一時的な公開鍵を使い回すサーバーであれば、中間者はすでにこの秘密鍵を入手済みなので、中身を見ることができてしまう。あとは同じアルゴリズムで共通鍵を生成すれば、以降の通信は覗き放題、改竄し放題ということになる。これがFREAKだ。

FREAKの影響はかなり大きい。FREAKの情報を提供しているfreakattack.comによれば、HTTPSサーバーの26.3%が潜在的に危険だという。クライアントに至ってはさらに影響が甚大だ。Internet Explorer、Chrome、Safari、Opera、AndroidのデフォルトブラウザーなどのWebブラウザーにとどまらず、数多くのTLSクライアントライブラリにこの脆弱性があったため、SSL/TLSを利用する多くのソフトが危険となりうる。

これらは修正されつつあるものの、3月16日現在、ブラウザーではまだAndroid版のChromeやデフォルトブラウザーは脆弱なままだ。特にAndroidのデフォルトブラウザーは他にも問題が多数あるうえ、そもそもAndroid自体アップグレードやパッチが提供されないことが多いので、使うべきではないだろう。

インターネットで使用されるさまざまな技術は、後からより安全な方式を付け加えていったものが多い。だが、古い方式を完全に切り捨てることは容易ではなく、ほとんど使用されなくなったまま半ば忘れ去られてしまうことも珍しい話ではない。FREAK脆弱性は、そういった過去の亡霊の恐ろしさを教えてくれた。今後、SSL/TLSに限らず、古い規格を突いた攻撃手法が見つかっていくのかもしれない。

BugBounty.jp

システムに内在するリスクをチェックセキュリティ診断(脆弱性診断)

提供会社:スプラウト

企業や組織のWebアプリケーション、各種サーバー、スマートフォンアプリケーション、IoTデバイスなどの特定の対象について、内外の攻撃の糸口となる脆弱性の有無を技術的に診断します。外部に公開す るシステムを安心かつ安全に維持するためには、定期的なセキュリティ診断が欠かせません。

BugBounty.jp

サイバー空間の最新動向を分析脅威リサーチ

提供会社:スプラウト

サイバー攻撃に関連した機密情報や個人情報が漏洩していないかをダークウェブも含めて調査し、もし重要な情報が発見された場合は、その対応策についてもサポートします。また、サイバー攻撃者のコミ ュニティ動向を分析し、特定の業種や企業を狙った攻撃ツールやターゲットリストが出回っていないかなどの特殊な脅威調査も請け負っています。

続・日本人マルウェア開発の実態を追うハッカーとセキュリティ技術者は「文明」と「文化」ぐらい異なる

December 31, 2018 18:41

by 『THE ZERO/ONE』編集部

前回の「日本人マルウェア開発者インタビュー」では、マルウェアの開発者が「生身の人間」であることを知った。 一般社会のステレオタイプは、マルウェア開発者が「反社会的である」「孤独である」という印象を植え付けてきた。しかし前回の取材を通して、実際の彼ら(彼女ら)を見てみると社会に順応し、きわめて組織的で…

中国でライドシェア殺人事件が発生

May 22, 2018 08:00

by 牧野武文

5月6日早朝、中国版ウーバーの「滴滴出行」(ディディチューシン)のライドシェアを利用した女性が、運転手に殺害されるという痛ましい事件が起きた。ほぼすべてのメディアが連日報道する大事件となった。各交通警察は、中国人民公安大学が制作した「ライドシェアを利用する女性のための安全防犯ガイドブック」を配布して…