Core Concepts
Okapiは、現在の信頼ドメインに属するメモリページのみへの投機的アクセスを許可することで、Spectre攻撃などの過渡的実行サイドチャネル攻撃を効率的に防御する。
Abstract
本論文では、Okapiと呼ばれる新しいハードウェア/ソフトウェアクロスレイヤーアーキテクチャを提案している。Okapiは、現代のコンピューティングシステムにおける過渡的実行サイドチャネル(TES)攻撃、特にSpectre攻撃の軽減を目的としている。
Okapiの中核となるのは、現在の信頼ドメインに属するメモリページのみへの投機的データアクセスを許可する仕組みである。ページテーブルエントリに追加された1ビットの"安全アクセスビット"によって、ページが最初に非投機的にアクセスされた際にこのビットが設定される。以降、このビットが設定されているページに対してのみ投機的なロード命令の実行が許可される。
ソフトウェア側では、OkapiResetと呼ばれる専用命令を使うことで、信頼ドメインをスレッドレベルよりも細かい粒度(例えば関数レベル)で制御できる。これにより、ブレークアウト攻撃に対する保護を強化できる。
さらに、Okapiはポイズニング攻撃に対する保護も提供する。ページ境界を越えて投機的に実行されるロード命令を遅延させることで、攻撃者が利用可能なガジェットの範囲を大幅に制限する。ソフトウェア側では、機密データへのアクセスにOkapiLoad命令を使うことで、ポイズニング攻撃を完全に防ぐこともできる。
Okapiのハードウェア機能単独でも、スレッドレベルのサンドボックスに対するブレークアウト攻撃を防ぐことができ、わずか3.17%の平均パフォーマンスオーバーヘッドで実現できる。さらにソフトウェア側の対策を組み合わせることで、より細かい粒度のサンドボックスに対するセキュリティを確保しつつ、1.68%のオーバーヘッドで実現できる。
Stats
プログラムが2つのコンテキストスイッチ間に平均してアクセスするページ数は、コード側が5.69%、データ側が31.27%である。