ハードウェアセキュリティの最新動向
CHERIと呼ばれる命令セットの拡張で使われるケイパビリティの説明として、正しいものはどれか。
- Aポインタの値をCPUの中の鍵で暗号化してからメモリに置き、使うたびに復号することで、ほかのプログラムやOSからポインタの値を読まれないようにする
- Bプログラムの実行ファイルに付けた電子署名を、命令を1つ実行するたびにCPUが確かめ、署名のない命令を実行しないようにする
- Cポインタに、アクセスしてよい範囲と権限を持たせ、メモリ上ではソフトウェアから書き換えられない1ビットのタグで、正しく作られたものかを区別する
答えと解説を見る
正解:C. ポインタに、アクセスしてよい範囲と権限を持たせ、メモリ上ではソフトウェアから書き換えられない1ビットのタグで、正しく作られたものかを区別する
CHERIでは、アドレスだけのポインタの代わりに、アドレス、指せる範囲の上限と下限、読み書きや実行の権限をまとめたケイパビリティを使います(64ビットのアドレスの場合、圧縮して128ビットに収め、別に1ビットのタグを持ちます)。CPUはアクセスのたびに範囲と権限を確かめるので、配列の範囲外の読み書きのようなメモリ安全性の誤りを、ハードウェアで止められます。タグは正しい命令でケイパビリティを作ったときだけ付き、普通のデータとして書き換えると消えるので、ポインタを偽造できません。ケンブリッジ大学などが研究を進め、ArmはこれをもとにしたMorelloという試作のプロセッサと評価用のボードを、2020年代前半に研究者向けに提供しました。
- A. ポインタを隠すのではなく、使える範囲と権限を持たせて、範囲外のアクセスを止めます。
- B. 実行ファイルの署名の確認は、セキュアブートなどで行うもので、ケイパビリティとは別の仕組みです。
- C. 正しい。範囲、権限、タグの3つで、範囲外のアクセスとポインタの偽造を防ぎます。