ハードウェアセキュリティ

暗号の処理を「定数時間」で実装するときに守るべきこととして正しいものはどれか。

  1. A処理の全体を、必ず1秒で終わるようにする
  2. B処理の途中で、時計を止める
  3. C秘密の値によって、条件分岐の向き、繰り返しの回数、メモリを読み書きする番地が変わらないようにする
答えと解説を見る

正解:C. 秘密の値によって、条件分岐の向き、繰り返しの回数、メモリを読み書きする番地が変わらないようにする

定数時間とは、処理の時間が秘密の値によって変わらないという意味です。秘密の値でif文の向きが変われば時間が変わり、秘密の値で配列の添字が決まればキャッシュの痕跡が変わります。そのため、条件分岐の代わりにビット演算で両方の結果を計算して選ぶ、秘密の値で表を引かない、といった書き方をします。コンパイラの最適化で分岐が生まれないかを確かめることも必要です。

  • A. 決まった秒数のことではありません。
  • B. 時計を止めるわけではありません。
  • C. 正しい。時間やキャッシュの痕跡を秘密から切り離します。
この分野を解く 分野ページへ

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

  1. キャッシュのサイドチャネルへの対策として、共有のキャッシュを分割(パーティショニング)する考え方として正しいものはどれか。
  2. 機密の処理を行うシステムで、CPUの同時マルチスレッディング(SMT)を無効にすることがある理由として正しいものはどれか。
  3. パソコンにつないだ外部の機器が、DMAを使ってメインメモリの内容を勝手に読み書きする攻撃への対策として正しいものはどれか。
  4. ハードウェアとソフトウェアのセキュリティで重視される「多層防御」の考え方として正しいものはどれか。
  5. 多数の機器を製造するとき、すべての機器に同じ鍵を入れずに、機器ごとに違う鍵を持たせる理由として正しいものはどれか。