先日、無線 LAN の暗号化技術 WEP および WPA-TKIP が容易に解読できるようになったことを書きましたが、偽の認証局 (CA) を立ち上げて偽のサーバ証明書が偽造できてしまう、というニュースがネットを震撼させました。

サーバ証明書=印鑑証明、CA = 役所

たとえば https://www.abcde.com/ というショッピングサイトにアクセスしたとしましょう。このとき通常の平文による通信でなく、SSL による通信が行われます。

仮想のパイプの中を流れるクレジットカード番号やパスワードが、SSL によって第三者から盗み見られない状態になっていることも重要ですが、通信相手が悪意ある第三者だったとしたらどうでしょう。いくら途中が暗号化されていても、結局パイプの出口で個人情報は奪われて悪用されてしまいます。

そこで、サーバ証明書というものが用いられます。これはネット上での印鑑証明にあたり、デジタル署名されている証明書は、確かに本物の abcde という企業のものだと分かります。

オレオレ証明書を nire.com でやっているように自分で発行して安く上げることもできますが、ネットビジネスで信頼できる証明書を入手するためには、権威のある認証局 (CA: Certified Agency) というネット上の公的機関、役所にあたるものが別に必要になります。Abcde 株式会社のサーバは、認証局に対して CSR (証明書要求) を行い、(VeriSign のようなそれなりの CA なら、Abcde 株式会社が実際に存在することを確認した後)、認証局は「よきにはからえ」とデジタル署名を行った証明書を発行します。

サーバ abcde は以降、私は認証局お墨付きのサーバですよ、ウソじゃありません、とこのファイルを https:// で通信してくる相手に毎回提示します。

部外者がサーバ証明書を偽造できたら

ところが…この認証局 CA のサーバ証明書が偽物だったらどうでしょう。https://www.abcde.com/ を開いたときに表示されるサーバ証明書は CA のデジタル署名があるため、正しい証明書に見えますが、実は悪意ある別人が作った偽のサーバ証明書…などということが可能なわけです。

今回は、署名アルゴリズムとしてハッシュ関数 MD5 を使った証明書についてのみ偽造が可能になったようです。

ハッシュ値が合ってしまえば正しい証明書に「見える」

ハッシュ関数というと基本的に長ったらしいファイル本文の短いまとめ (ハッシュダイジェスト) を作るためのもの。「合計値」のより改ざんされにくいもっと複雑なものだと考えればイメージ的には正しいでしょう。

以前から MD5 によるハッシュ値は、本文の内容が異なる 2つのファイルで、たまたまハッシュ値が同じになる (強衝突耐性が突破される) ような組み合わせ (コリジョン) が容易に見つかることが分かっていました。本文は好きに書く = 偽造することまではできなかったわけですが、今回は、狙ったハッシュ値につじつまが合うように本文を偽造することが、それも天文学的な時間じゃなく、PlayStation 3 を 200台使い、現実的な時間内で出来てしまったようです (弱衝突耐性が突破される)。

一見、ハッシュ値に合わせて本文に細工ができる、と言われると、本物の CA が隠し持っている秘密鍵が盗まれない限り偽造はできないんじゃないの? という気がしますね。しかし真正な

「www.abcde.com を正しい Abcde 株式会社のものと認める。by CA-xyz 株式会社」

という内容の証明書をお手本に持ってきて、一部をコピペ流用し、

「www.fake.com を正しい Fake 株式会社のものと認める。by CA-xyz 株式会社」

に書き換えて、それなのにハッシュ値が合致するようにつじつまが合うように、他の部分を書き換えてしまうようです。

どんな風に悪用されるのか

この手法により、Web ブラウザが何の警告も発しないまま Fake 株式会社の Web サイトを開くといったことが可能になり、何かが怪しいが CA のお墨付きがあるからまぁ大丈夫だろう、とクレジットカード番号を入力してしまう危険性がまずあります。

さらに DNS キャッシュ ポイズニングなどの手法を組み合わせることで、有名通販サイトを騙ったうえで、同様に、クレジットカード番号入力画面で一切の警告が表示されない状態にすることが可能になってしまいます。

SHA-1 は一時しのぎの対策に過ぎない

たとえば認証局 CA の大手ベリサイン社 (VeriSign) などは早速 MD5 を使った証明書の発行を停止して、もう一段階強固な SHA-1 というハッシュアルゴリズムに切り替えを進めています。

だからといって SHA-1 が安全なのかというと、MD5 ほど脆弱ではないが、やはり衝突耐性が突破されうることが指摘されており、将来的により強固な SHA-256 にまで移行しようとしているあたり、以下で説明した WEP~WPA2-AES のイタチごっこと流れ的には同じと言えるでしょう。

無線 LAN のセキュリティ技術は解読に追いつかれつつある

MD5 コリジョンの発表資料は PowerPoint ファイルだったりしますが、見たい人はコチラを。

MD5 Considered Harmful Today Creating a rogue CA certificate [PPT]