「Intelのハイパースレッディングに深刻な脆弱性」という、ショッキングな記事がIT mediaに掲載された。 一次ソースはここに掲載されている論文(PDF)である。
なかなか良く考えた脆弱性だな、と感心した。アルゴリズムが完全公開されているというオープンソースの特徴と、マルチスレッドを限られた資源で高速に実行するためのハイパースレッド仕組みが見事に合致した脆弱性である。以下、論文を超要約してみた。
* * * *
以下のロジックによりRSA暗号に使われる秘密鍵が、別プロセスに漏洩する可能性がある。
- ハイパースレッディングが、1つのキャッシュを共用しており、キャッシュからの追い出し論理はスレッドに依存しない(アドレスのみで判断)。
- 自分のスレッドのキャッシュレイテンシーを測定することにより、同一エントリに入るべき他のスレッドのキャッシュのミスorヒット、または他スレッドのメモリアクセス有無(=算術・論理演算の使用頻度)が局所的にわかる。
- RSA暗号の鍵生成に必須なべき乗剰余計算で良く使われるSliding Window法(PDFにリンク)では、そのべき乗数のビットが0であるか1であるかにより演算式が異なる。このため、演算式の相違は演算時間と使用メモリの相違を引き起こす。
- そのため、あるスレッドのキャッシュヒット状況を他スレッドにて把握されると、べき乗数が他スレッドに知られてしまう。
- 「あるスレッド」がオープンソースであるOpenSSL等の場合、全てのアルゴリズムが公開されているため、べき乗数から秘密鍵を求めるのは容易である。
脆弱性の発見者も言っているが、自宅のPCではまったく問題がない。サーバで、OpenSSL等、アルゴリズムが明確なプログラムが動作しており、かつその動作をSpyする別のプログラムが同時に別スレッドとして実行されるときに起きるかもしれない脆弱性である。
セキュリティとは、どんな小さな穴でもふさぐ必要があるのだと感じた。
(正直、この脆弱性よりも、重要な人為的脆弱性が多数あると思う。この脆弱性を対処した人が、自分のパスワードを、モニタの横に張っていたりして)
追伸 cnetでも紹介されましたね。記事中、
Intelは3月にこの問題の報告を受けていた。同社では、この問題の危険性は非常に低いとしている。この攻撃は、すでに攻撃を受けていて、悪意を持つハッカーがスパイプロセスをインストールできるようになっているサーバでないと成功しない。ハッカーがこうしたサーバを手にしたとすれば、もっと簡単かつスピーディーにデータを盗み出す方法は他にも多数ある、とIntelの広報担当、Howard Highは述べている。という意見に、私も賛成です。
コメントする