ハードウェアセキュリティの最新動向
ファームウェアの署名の確認を、故障注入の1回の試みで飛ばされる確率が1/1,000であるとする。同じ確認を2か所で行い、両方を飛ばさないと攻撃が成功しないようにした。1回の試みで2か所を同時に狙えて、それぞれが飛ばされるのは互いに独立に確率1/1,000で起きるとき、攻撃が成功するまでの試みの回数の期待値はどれか。
- A1,000回
- B2,000回
- C1,000,000回
答えと解説を見る
正解:C. 1,000,000回
1回の試みで両方が飛ばされる確率は (1/1,000) × (1/1,000) = 1/1,000,000 です。成功の確率が p の試みを繰り返すとき、初めて成功するまでの回数の期待値は 1/p なので、1,000,000回(100万回)になり、確認が1か所のときの1,000回の1,000倍です。ただし、この計算は2つの故障が独立に起きることを前提にしています。1回の誤動作で両方が飛ばされるような作り(同じ値の比較を続けて書く、など)では効果が薄いので、確認の時刻をずらす、反転した値どうしを比べる、ランダムな待ち時間を入れる、などの工夫を合わせます。
- A. 確認が1か所のときの期待値です。
- B. 2か所に増えた分を足し算で考えた値です。独立な2つが両方起きる確率は掛け算になります。
- C. 正しい。1 ÷ (1/1,000)² = 1,000,000回です。