ハードウェアセキュリティの最新動向

Armのポインタ認証(PAC)の仕組みとして、正しいものはどれか。

  1. Aポインタを使うたびに、OSにシステムコールで問い合わせて、そのポインタが正しい値かどうかを確かめてもらう
  2. Bポインタの値と文脈の値から、CPUの中の鍵で短い認証コードを計算してポインタの上位のビットに入れ、使う前に確かめる
  3. CポインタのすべてのビットをCPUの中の鍵で暗号化してからメモリに保存し、読み出すたびにCPUの中で復号してから使う
答えと解説を見る

正解:B. ポインタの値と文脈の値から、CPUの中の鍵で短い認証コードを計算してポインタの上位のビットに入れ、使う前に確かめる

64ビットのポインタのうち、仮想アドレスに使わない上位のビットに、ポインタの値と文脈の値(例えばスタックポインタ)からCPUの中の鍵で計算した認証コードを入れます。関数の戻りアドレスなどを使う直前に、専用の命令で計算し直して比べ、合わなければ使えないアドレスに変えるので、スタックの戻りアドレスを書き換える攻撃(ROPなど)が難しくなります。鍵はソフトウェアから読めないので、攻撃者は書き換えたポインタに合う認証コードを作れません。ただし、認証コードの長さは仮想アドレスの幅などの設定で決まり、多くの場合十数ビット以下と短いので、何度も推測できる状況では、偶然一致する確率を考える必要があります。

  • A. 毎回OSに問い合わせると非常に遅くなります。確認はCPUの命令で行います。
  • B. 正しい。鍵を知らない攻撃者は、書き換えたポインタに合う認証コードを作れません。
  • C. ポインタの値そのものは暗号化しません。アドレスの部分はそのままで、上位のビットに認証コードを付けます。
この分野を解く 分野ページへ

ハードウェアセキュリティの最新動向の参考書を探す PR

Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。

ハードウェアセキュリティの最新動向のほかの問題

  1. IntelのCET(制御フロー強制技術)などで採用されているハードウェアのシャドウスタックの説明として、正しいものはどれか。
  2. 制御フロー完全性をハードウェアで支える機能について、関数からの戻りを守るものと、関数ポインタなどによる間接的な呼び出しやジャンプを守るものの組み合わせとして、正しいものはどれか。
  3. DRAMの微細化が進むほど、ロウハンマーが起きやすくなるといわれる理由として、正しいものはどれか。
  4. DRAMの中のTRR(ターゲットロウリフレッシュ)によるロウハンマーへの対策が、研究で回避されたことがある理由として、正しいものはどれか。
  5. 「ECC付きのメモリを使えば、ロウハンマーの心配はない」という考えの問題点として、正しいものはどれか。