暗号技術の基礎と応用
CBCモードで暗号化したデータを受け取るサーバが、復号した後のパディングが正しくないときと、パディングは正しいが中身の検査に失敗したときとで、異なるエラーを返していた。この状況についての説明として、正しいものはどれか。
- A攻撃者は暗号文を書き換えて送り、エラーの違いを手掛かりに、鍵を知らずに平文を1バイトずつ求められるおそれがある
- Bエラーの違いから分かるのはパディングの長さだけなので、鍵が漏れない限り、平文の内容そのものが漏れるおそれはない
- C鍵をAES-128からAES-256に変えれば、エラーの違いから平文を求められるおそれはなくなる
答えと解説を見る
正解:A. 攻撃者は暗号文を書き換えて送り、エラーの違いを手掛かりに、鍵を知らずに平文を1バイトずつ求められるおそれがある
CBCモードの復号では、ある暗号文ブロックのビットを反転させると、次のブロックの復号結果の同じ位置のビットが反転します。攻撃者は、直前のブロックの最後のバイトを変えながら送り、「パディングが正しい」と判定される値を探すことで平文の最後のバイトを求め、これを繰り返して1バイトずつ平文を明らかにできます。これがパディングオラクル攻撃で、エラーの種類や応答時間の違いが手掛かり(オラクル)になります。対策の基本は、GCMのような認証付き暗号を使うか、暗号文に付けたMACを先に検証して、改ざんされた暗号文は復号の前に一律に拒否することです。
- A. 正しい。パディングの正誤が分かるだけの応答から、平文を1バイトずつ求められます。
- B. パディングの正誤が分かることと暗号文の書き換えを組み合わせると、平文そのものを求められます。
- C. この攻撃は鍵を求めずに、CBCモードの性質とエラーの違いを使うので、鍵長を変えても防げません。