ハードウェアセキュリティの最新動向
ArmのMTE(メモリタギング拡張)では、メモリの16バイトごとに4ビットのタグを付け、ポインタの上位のビットにも4ビットのタグを入れて、アクセスのたびに両者が一致するかをCPUが確かめる。解放した領域を指す古いポインタで、その領域にアクセスする誤りを考える。領域を割り当て直したときの新しいタグが16通りから一様にランダムに選ばれるとすると、タグが偶然一致して誤りを見逃す確率はどれか。
- A1/16(約6.3%)
- B1/4(25%)
- C15/16(約93.8%)
答えと解説を見る
正解:A. 1/16(約6.3%)
タグは4ビットなので、とりうる値は 2⁴ = 16 通りです。新しいタグが16通りから一様に選ばれるなら、古いポインタのタグと偶然一致する確率は 1/16 = 6.25%(約6.3%)で、残りの 15/16 の場合は不一致として検出されます。1回のアクセスでも約94%の確率で見つかるので、多くの機器で動かしながら誤りを見つけたり、攻撃を難しくしたりできます。割り当ての際に、隣り合う領域には必ず違うタグを付けるようにすれば、隣へのはみ出しは確実に検出できます。
- A. 正しい。2⁴ = 16 通りのうち1通りと一致する確率です。
- B. タグのビット数の4で割った値です。タグがとりうる値の数は 2⁴ = 16 です。
- C. 不一致として検出される確率です(1 − 1/16)。