« 「がんばれ日本」商標事件:ドクター中松対日本オリンピック委員会(後編) | メイン | 米マイクロソフトとサン、基本ソフトに互換性??? »

2005年05月15日

これは大変!?:インテルのハイパースレッディングの脆弱性

なんとインテルのハイパースレッディングに脆弱性がという記事です。
マイクロプロセッサーのハードウェアレベルの根幹部分に脆弱性というのもすごい話ではあります。

記事からリンクされてる論文(英文)をちょこっと読んで見ました。
どうやら、"covert channel"(偽装通信)に関する脆弱性のようです。
"covert channel"とはセキュリティの用語で、裏技的な通信経路を使って本来認められていない情報の交換を、一見情報の交換とは見えないようにひそかに行なってしまえる脆弱性のことです。
たとえて言うならば、スパイが仲間に情報を密かに伝えるのに、窓のブラインドの開け閉めでモールス信号を送るようなものです。

インテルのハイパースレッディングでの"covert channel"ですが、各スレッドがキャッシュを共用していることを利用しています。
もちろん権限が異なる他のスレッドのキャッシュのデータを読むことはできないのですが、他のスレッドが使っているキャッシュのラインを意図的に上書きすることはできるようになってます(その時は、当然他のスレッドのキャッシュのラインの内容はメモリに書き戻されます)。
他のスレッドが次にそのキャッシュラインを読んだ時にはキャッシュの内容は無効になってますから、メモリまで読みにいくことになり、キャッシュにヒットした場合よりも時間がかかります。
この時間を計測して、キャッシュがミスしたかヒットしたかを判断することで、完全に隔離されているはずのスレッド間で密かに1ビットの情報をやり取りすることができるわけです。

ものすごく大変なように見えますが、論文中では簡単なサンプルプログラムが提示されており、クロック2.8Ghzのプロセッサであれば、毎秒400KBの"covert channel"での通信が可能であるとされています。

さらに、この手法を使ってOpenSSLのメモリアクセスパターンを別のスレッドから推定して秘密鍵を読みとる手法も公開されています。

対応策ですが、プロセッサないしOSレベルでの大幅な設計変更を要することになり、短期的にはハイパースレッディング機能をオフにすることくらいしかないようです。

うーむ、これはかなり本質的な問題のような気がしますね。
論文、まださらっと読んだだけなので、もっとちゃんと読んでからまた続報いたします。

投稿者 kurikiyo : 2005年05月15日 08:34

コメント