ハードウェアセキュリティ
Meltdownへのソフトウェアの対策として導入されたKPTI(カーネルページテーブル分離)の考え方として正しいものはどれか。
- Aユーザのプログラムが動いている間は、カーネルのメモリのほとんどをページテーブルから外し、投機的にも読めないようにする
- Bカーネルをすべて暗号化して、ディスクに置く
- Cユーザのプログラムの実行を禁止する
答えと解説を見る
正解:A. ユーザのプログラムが動いている間は、カーネルのメモリのほとんどをページテーブルから外し、投機的にも読めないようにする
従来のOSは、切り替えを速くするため、ユーザのプロセスのページテーブルにもカーネルのメモリを(アクセス禁止の印を付けて)載せていました。Meltdownでは、その印の確認より先に投機的に読めてしまったので、KPTIではユーザのプログラムが動く間はカーネルのページを対応づけ自体から外しました。番地の変換ができなければ投機的にも読めません。ただし、システムコールのたびにページテーブルを切り替えるので性能が下がります。
- A. 正しい。代わりにシステムコールなどの切り替えが重くなります。
- B. カーネルをディスクに置くわけではありません。
- C. プログラムは普通に動きます。