CPUメモリ間における高速かつ安全なデータ取得更新を 可能とするキャッシュランダム関数の開発 ~キャッシュ攻撃による情報漏洩を防ぐCPUの実現~
本技術では、キャッシュインデックス(※1)をランダム化するうえで、どのようなランダム関数が適するか定式化を行い、ランダム関数の設計指針を示し、具体的なランダム関数SCARFの設計・提案を行いました。
なお、本技術は、2023年8月9日から11日まで、米国アナハイムで開催されるUsenix Security 2023※で論文が採録、発表されます。
1.研究の背景
昨今のCPUはキャッシュメモリを導入し、一度アクセスしたデータをCPU近くに配置することで次回以降の参照を高速化し、CPUメモリ間のデータのやり取りに要する遅延の影響を低減させています。しかしながら、一度参照したアドレスは次回以降、高速に参照可能であり、攻撃者が悪用することが可能な情報です。この情報を悪用した攻撃はキャッシュ攻撃と呼ばれ、現実的な脆弱性にもつながるため対策が必要となっています。とりわけ、攻撃対象のプログラムと攻撃プログラムがキャッシュの取り合いを行うことに起因する「Contention型キャッシュ攻撃」は、攻撃者の前提条件が少なく、現実的な脅威として認識されています。
Contention型キャッシュ攻撃に対抗する手段として、キャッシュインデックスのランダム化が有効です。ランダム化を実行することで、攻撃者は、あるアドレスが利用するキャッシュインデックスを特定出来なくなるため、キャッシュを悪用した攻撃が不可能になると考えられていますが、ランダム化を実現するうえで、どのようなレベルで実装すれば必要十分なのかがこれまで分かっていませんでした。
2.技術のポイント
- キャッシュ攻撃を実行する攻撃者のモデル化。
- モデル化された攻撃者に対して効率的かつ安全な設計理論を、調整可能ブロック暗号(※2)を用いて実現。
- キャッシュインデックスのランダム化に特化した具体的な関数SCARFの設計。
3.本研究の成果
本研究では、初めに、キャッシュランダム関数に対して攻撃者が実際に実行できることは何なのかを調査し、攻撃者の能力を適切に反映したキャッシュランダム関数特化型の攻撃者モデルの設計に取り組みました。具体的には、出力の一部が衝突したときに、対応する入力ペアを観測可能とする衝突モデル、ブロック暗号の代わりに調整可能ブロック暗号を用いて、調整値t1で暗号化後に調整値t2で復号するEnc-then-Decのモデルを導入しました。とりわけ、後者のモデルは、既存の共通鍵暗号設計理論との親和性が高く、適切な設計を行うことで、従来と比べて遅延を半減させることを可能とします。(図1)
本研究では、Enc-then-Decモデルを用いて設計された、具体的なキャッシュランダム関数SCARF(Secure CAche Ransomization Function)を提案しました。SCARFの設計には、NTTで長年培われた共通鍵暗号設計のノウハウが活かされています。既存の低遅延ブロック暗号が15nm Technologyで560 ~ 630ps の遅延を要するのに対し、SCARFの遅延は同環境で305.76psと約半減を達成しています。この半減の実現には、Enc-then-Decモデルを最大限有効活用した設計技術が使われています。
4.今後の展開
本成果により、すべてPC内のCPUについて、Contention型キャッシュ攻撃を無効化することが期待されます。具体的には、「Spectre(スペクター)」や「Meltdown(メルトダウン)」など、Contention型キャッシュ攻撃を利用した悪質な脆弱性を取り除くことが可能となります。
キャッシュランダム関数SCARFは、現在の多くのキャッシュアーキテクチャに適合するよう設計されています。一方で、一部、SCARと互換性の乏しいアーキテクチャも存在しています。より広範囲なアーキテクチャに対応できるよう、SCARFの構造の一般化が期待されています。
NTTでは、今後も、本研究のように、用途を限定した環境下において、汎用暗号化方式を大きく性能で上回る、目的特化型な暗号技術の研究開発を推進していきます。
<論文情報>
Federico Canale, Tim Güneysu, Gregor Leander, Jan Philipp Thoma, Yosuke Todo, Rei Ueno, “SCARF – A Low-Latency Block Cipher for Secure Cache-Randomization,” Usenix Security 2023.
<参照>
Contention型キャッシュ攻撃のメカニズム
攻撃者の目標は、攻撃対象がアドレスAを使ったかどうかの情報を知ることとします。このとき、攻撃者は、アドレスAが利用するキャッシュインデックスと競合するアドレスを自分の物理アドレス空間(※5)から選択し、そのインデックスを持つキャッシュを自分のアドレス空間のものに置き換え、攻撃対象の実行を待機します。攻撃対象実行後、再度、上記で選択したアドレスにアクセスし、応答までに要した遅延を計測します。もし、攻撃対象がアドレスAを利用していた場合、対象インデックスのキャッシュはアドレスAのものに置き換わっているため、遅延が増大します。一方で、アドレスAを利用していない場合、低遅延で結果を得ることが出来ます。このようにして、攻撃者は攻撃対象がアドレスAを使ったか否かの情報を奪い取ることが出来ます。
※Usenix Security 2023:実用的なコンピューターセキュリティ、ネットワークセキュリティ技術に関して世界で最も注目される国際会議の1つ。
URL: https://www.usenix.org/conference/usenixsecurity23
<用語解説>
※1 キャッシュインデックス:主記憶装置のデータをキャッシュに割り当てる際に利用するキャッシュ内のアドレスに相当する値です。通常、キャッシュインデックスには、物理アドレスの一部が利用されます。
※2 調整可能ブロック暗号:ブロック暗号の拡張方式の一つ。ブロック暗号の入出力に加えて、(攻撃者も観測・選択可能な)調整値が追加入力され、調整値が変わるごとに独立のブロック暗号が生成されます。NTTが提案・標準化している調整可能ブロック暗号方式にSkinnyがあります。
※3 共通鍵暗号:暗号化と復号で共通の鍵を使う暗号化方式。現在、データの通信から保存まで、幅広く利用されている。
※4 ブロック暗号:秘密鍵および固定長のメッセージを入力とし、固定長の暗号文を出力する共通鍵暗号方式の一種です。ブロック暗号の安全性は、攻撃者がメッセージおよび暗号文を観測・選択可能という仮定のもとで議論されます。NTTが提案・標準化しているブロック暗号方式にCamelliaがあります。
※5 物理アドレス空間: コンピュータのメモリ管理において、データが格納されている物理的な位置を直接表すアドレスを物理アドレスと呼びます。物理アドレス空間とは、物理アドレスによって認識されるメモリ領域全体のことを指します。