SC Workbook
科目 A-2 · セキュリティ

パディング検査結果の漏えい

ある Web アプリケーションは,AES の CBC モードで暗号化したトークンを利用者に渡し,受信したトークンを復号して利用している。トークンに MAC は付与していない。復号後のパディングが不正な場合は 500 エラーを,パディングは正しいが内容が不正な場合は 403 エラーを返す。この実装に関する記述として,適切なものはどれか。

  1. ア攻撃者は,暗号文を改変して送信を繰り返し,応答の違いを手掛かりにすることによって,鍵を知らなくてもトークンの平文を解読できるおそれがある。
  2. イ攻撃者は,応答の違いを手掛かりに AES の鍵を 1 バイトずつ特定し,同じ鍵で暗号化された全てのトークンを解読できるおそれがある。
  3. ウCBC モードでは同じ平文ブロックが常に同じ暗号文ブロックになるので,攻撃者はトークン中の繰返しのパターンから平文を推測できるおそれがある。
  4. エ暗号化した後の暗号文に MAC を付与し,復号の前に MAC を検証する方式に改めても,パディングの検査結果が応答に表れる限り,この攻撃は防げない。
正解と解説を見る

正解 ア

この問題の基礎知識

  • CBC モードの復号では,暗号文ブロックを復号した結果と直前の暗号文ブロックを XOR して平文ブロックを得るので,直前の暗号文ブロックを改変すると平文の対応するビットが変わる。
  • ブロック暗号では平文の長さをブロック長の倍数にするためにパディングを付け,復号後にその形式を検査する。
  • パディングオラクル攻撃は,パディングの正否がエラーの違いなどから分かることを利用し,暗号文の改変と送信を繰り返して鍵を使わずに平文を求める攻撃である。
  • Encrypt-then-MAC は暗号化した後の暗号文に MAC を付け,受信側が復号の前に MAC を検証する方式であり,改変された暗号文を復号の前に拒否できる。
ア攻撃者は,暗号文を改変して送信を繰り返し,応答の違いを手掛かりにすることによって,鍵を知らなくてもトークンの平文を解読できるおそれがある。正解

パディングの正否が応答から分かると,それがパディングオラクルになる。CBC モードの復号では直前の暗号文ブロックとの XOR を取るので,暗号文を改変して応答を観察することを繰り返し,鍵を用いずに平文を求められる。

イ攻撃者は,応答の違いを手掛かりに AES の鍵を 1 バイトずつ特定し,同じ鍵で暗号化された全てのトークンを解読できるおそれがある。

パディングオラクル攻撃で得られるのは,攻撃者が送った暗号文に対応する平文であり,鍵そのものは求められない。鍵を使わずに平文を得る点がこの攻撃の特徴である。

ウCBC モードでは同じ平文ブロックが常に同じ暗号文ブロックになるので,攻撃者はトークン中の繰返しのパターンから平文を推測できるおそれがある。

同じ平文ブロックが常に同じ暗号文ブロックになるのは ECB モードの性質である。CBC モードでは各平文ブロックを直前の暗号文ブロックと XOR してから暗号化するので,この性質はない。

エ暗号化した後の暗号文に MAC を付与し,復号の前に MAC を検証する方式に改めても,パディングの検査結果が応答に表れる限り,この攻撃は防げない。

Encrypt-then-MAC では,改変された暗号文は MAC の検証で拒否され,復号やパディングの検査まで処理が進まないので,パディングオラクルは生じない。TLS でもパディングオラクル攻撃の対策として用いられる。

検証用の出典出典照合済み
RFC 7457 Summary of Known Attacks on Transport Layer Security (TLS) and Datagram TLS (DTLS) / RFC 7366 Encrypt-then-MAC for Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) / NIST SP 800-38A Recommendation for Block Cipher Modes of Operation
照合の根拠(5 件)
  • ア(正解): パディングオラクル攻撃によって,攻撃者は任意の暗号文を復号できる(鍵ではなく暗号文に対応する平文が得られる)
    A recent incarnation of these attacks is the Lucky Thirteen attack (CVE-2013-0169) [CBC-Attack], a timing side-channel attack that allows the attacker to decrypt arbitrary ciphertext.
    RFC 7457 · Section 2.4 Padding Oracle Attacks(新しいタブで開きます)
  • ア(正解)・イ(誤り): CBC の復号では直前の暗号文ブロックと XOR を取るので,直前のブロックを改変すると復号結果(パディング)を操作でき,応答の違いから鍵を使わずに平文を求められる。攻撃で得られるのは平文であり,鍵ではない
    In general, to recover any plaintext block (except the first), the inverse cipher function is applied to the corresponding ciphertext block, and the resulting block is exclusive-ORed with the previous ciphertext block.
    NIST SP 800-38A · 6.2 The Cipher Block Chaining Mode(新しいタブで開きます)
  • ウ(誤り): CBC は各平文ブロックを直前の暗号文ブロックと XOR してから暗号化するので,同じ平文ブロックが常に同じ暗号文ブロックになる性質(ECB の性質)はない
    Each successive plaintext block is exclusive-ORed with the previous output/ciphertext block to produce the new input block.
    NIST SP 800-38A · 6.2 The Cipher Block Chaining Mode(新しいタブで開きます)
  • エ(誤り): Encrypt-then-MAC では復号の前に MAC を検証し,失敗すれば直ちに処理を終えるので,改変された暗号文はパディング検査まで進まない
    The MAC SHALL be evaluated before any further processing such as decryption is performed, and if the MAC verification fails, then processing SHALL terminate immediately.
    RFC 7366 · Section 3 Applying Encrypt-then-MAC(新しいタブで開きます)
  • エ(誤り): TLS でも encrypt-then-MAC がパディングオラクル攻撃の対策とされる
    The Lucky Thirteen attack can be mitigated by using authenticated encryption like AES-GCM [RFC5288] or encrypt-then-MAC [RFC7366] instead of the TLS default of MAC-then-encrypt.
    RFC 7457 · Section 2.4 Padding Oracle Attacks(新しいタブで開きます)

500 と 403 の違いでパディングの正否が分かるのでパディングオラクルになる。解説の Encrypt-then-MAC の効果は,RFC 7366 の「復号前に MAC を検証し失敗したら直ちに終了する」という処理から一般に言える範囲にとどめている。

問題 ID A2-SEC-0105 · AI 作成のオリジナル問題 · 正解と各選択肢の根拠を出典の原文で確認しています。 照合日 2026-11-08

非公式の学習用アプリです(IPA とは関係ありません)。問題はすべて AI が作成したオリジナルで、誤りを含む場合があります。