前編(MICRO 51 - セキュリティに配慮したマイクロアーキテクチャ設計(前編)はコチラ)
セキュアなプロセサを設計するための原則
Lee先生の述べるセキュアな設計を行う原則は、
- アクセス権限の確認なしにアクセスを行わない
- 取り消された実行は状態変更の痕跡を残さない
- 共通資源を経由する干渉を無くす、あるいは最小化する
- あるいは乱数化を行い干渉の影響が読み取れないようにする
というものである。
この原則に従うと、
- 権限チェックが終わるまでキャッシュにデータを読み出してきてはならない
- 投機実行中の状態変更は通常の状態変更とは分離して記憶する
- あるいは、投機が失敗した場合は、投機時の状態変更を完全に巻き戻す
- 攻撃者がコバートチャネルを作ることを妨げる
- 攻撃者には、意味のある情報を渡さない、あるいは偽の情報を読ませる
このためには、新たなセキュリティ確認の方法論やツールが必要であるとLee先生は言う。
タイミングチャネルを塞ぐ有力な方法は、信号をランダム化して読み取れなくするという方法である。
通常のキャッシュではメモリアドレスとキャッシュラインとの対応は固定であり、攻撃者も犠牲者もアドレスが同じであれば、同じキャッシュラインをアクセスする。このため、キャッシュラインのアクセス時間の違いで攻撃者に犠牲者のアクティビティが見えてしまう。
しかし、Lee教授らの提案する「Newcache」という方法では、プロセスごとにダイナミック、かつランダムにキャッシュアドレスとキャッシュライン対応を切り替える。このため、例えば、犠牲者がキャッシュライン4をアクセスしようとしても、ランダム化により、別のキャッシュライン7が割り当てられてしまう。このため、攻撃者がキャッシュライン7をアクセスしても狙ったキャッシュライン4の状態の情報は得られないことになる。
次の図はNewcacheの論文から引用したものであるが、Evict-Time AttackでもPrime-Probe Attackでも、通常のキャッシュを使った左側の図では明確に違いが出ている部分があるが、Newcacheを使う右側の図では一様なノイズのように見え、情報を引き出すことはできない。
通常の8Wayのセットアソシアティブキャッシュの場合は、情報の漏洩が起こるが、Newcacheでは情報を読み取ることは難しくなっている。一方、実行性能はNewcacheの方が3%高い程度で、実質上、差がない。アクセス時間も同じである。ただし、ランダム化を行うロジックが追加されているため、消費電力は僅かに増加する。
次の表はコバートチャネルの性能を表したもので、キャッシュを経由してSMTのスレッド間での情報のリークを行う場合は~3.2Mbpsで情報を伝えられる。一方、Inodeテーブルを使うOSの情報リークは~50bps程度の通信キャパシティである。このように、プロセサのハードウェアを使うコバートチャネルの方がOSのコバートチャネルに比べて、圧倒的に大量の情報を伝えることができる。
セキュアなアーキテクチャの研究は、まだ、始まったばかりであり、これから研究して成果を上げられる機会はたくさんある。
- マイクロアーキテクチャの脆弱性や新しい攻撃法をシステマティックに見つけること
- セキュアな設計ルールを確立すること
- セキュアな設計ルールの違反を自動的にチェック
- セキュアな設計ルールに違反せず、性能も低下させない新しいマイクロアーキテクチャ
- 現在のマイクロアーキテクチャの脆弱性の性能を低下させない解消方法
- ランダム化による読み取り困難化の研究
- セキュリティファーストの設計(アーキテクチャ、フレームワーク、ツール)
- 新しいセキュリティ検証方法
- ディープラーニングのセキュリティへの利用とディープラーニングのセキュリティ
などの分野がさらに研究が必要な分野である。
鍵が進歩すると、泥棒は難しくはなるが、泥棒の方も進化して新しい侵入法を見つける。これと同じで、セキュリティの穴を塞ぐと、攻撃者は別の穴を見つけるというイタチごっこが今後も続くと思われる。
セキュリティは複雑で面倒な問題であるが、秘密情報が盗まれると情報が洩れるだけではなく、企業の信用にかかわる問題で、顧客が離れてしまうということも起こる。このため、セキュリティの研究は避けて通れないテーマである。