午前I問題
共通鍵暗号方式に関する記述として、適切なものはどれか。
ア)ブロック暗号は平文を固定長のブロックに分割して暗号化する方式であり、AESはブロック長128ビット、鍵長128/192/256ビットから選択できる。
イ)ストリーム暗号はブロック暗号よりも常に安全性が高いため、現在ではブロック暗号は利用されていない。
ウ)共通鍵暗号方式は公開鍵暗号方式と異なり、暗号化と復号に異なる鍵を使用する。
エ)AESは鍵長が長いほど処理速度が高速になるため、常に256ビット鍵を選択すべきである。
午前I の解答・解説を見る
正解: ア
解説:
- ア)正解。AES(Advanced Encryption Standard)はブロック長128ビット固定のブロック暗号であり、鍵長は128/192/256ビットの3種類から選択できます。これはFIPS 197で規定されている標準仕様です。
- イ)不正解。ストリーム暗号(RC4等)とブロック暗号(AES等)はそれぞれ異なる特性・用途を持ち、一方が常に他方より安全というわけではありません。現在もAESなどのブロック暗号は広く利用されています。
- ウ)不正解。暗号化と復号に異なる鍵を使うのは公開鍵暗号方式(非対称鍵暗号)の特徴です。共通鍵暗号方式は暗号化・復号に同一の鍵を使用します。
- エ)不正解。鍵長が長いほど安全性(総当たり攻撃への耐性)は高まりますが、その分演算処理は増えるため一般に処理速度は低下します。用途に応じて安全性と性能のバランスでモードや鍵長を選ぶべきであり、常に256ビットが最適とは限りません。
午前II問題
AESの暗号利用モードに関する記述のうち、適切なものはどれか。
ア)ECB(Electronic Codebook)モードは、同一の平文ブロックが常に同一の暗号文ブロックに変換されるため、画像データなどではパターンが暗号文に露見する脆弱性があり、実務での利用は推奨されない。
イ)CBC(Cipher Block Chaining)モードは初期化ベクトル(IV)を秘密情報として扱い、通信のたびに同じIVを使い回すことで安全性を高める。
ウ)GCM(Galois/Counter Mode)は暗号化のみを提供するモードであり、データの改ざん検知には別途MACの付加実装が必須である。
エ)CTR(Counter)モードはブロックごとにカウンタ値を暗号化して鍵ストリームを生成する方式であり、復号処理には暗号化アルゴリズムではなく専用の復号アルゴリズムが必要である。
午前II の解答・解説を見る
正解: ア
解説:
- ア)正解。ECBモードはブロックごとに独立して同じ鍵で暗号化するため、同一平文ブロックは常に同一暗号文ブロックになります。有名な「ECBペンギン」の例のように、画像のような構造を持つデータではブロックパターンがそのまま暗号文に透けて見えてしまい、機密性が実質的に失われるため実務では使用禁止とされます。
- イ)不正解。CBCのIVは秘密情報として扱う必要はなく、公開されても問題ありません(暗号文と一緒に送信するのが一般的)。ただしIVは予測不能かつ通信ごとに異なる値を使う必要があり、同じIVを使い回すと同一の平文接頭辞に対して同じ暗号文が生成され、情報漏えいにつながります。
- ウ)不正解。GCM(Galois/Counter Mode)はCTRモードによる暗号化とGHASH関数による認証タグ生成を組み合わせた**認証付き暗号(AEAD: Authenticated Encryption with Associated Data)**であり、暗号化と改ざん検知(認証)を単一のモードで同時に提供します。別途MACを付加する必要はありません。
- エ)不正解。CTRモードはカウンタ値を暗号化アルゴリズムで暗号化して鍵ストリームを生成し、平文とXORすることで暗号文を得ます。復号も同じ手順(カウンタを暗号化してXOR)で行うため、暗号化アルゴリズムのみで復号が可能です(ブロック暗号の復号関数は不要)。
| モード | 特徴 | 実務での位置づけ |
|---|---|---|
| ECB | ブロック単位で独立暗号化 | パターン露見の脆弱性あり。使用禁止 |
| CBC | 前ブロックの暗号文とXORして連鎖 | IVの予測不能性・パディングオラクル攻撃に注意 |
| CTR | カウンタを鍵ストリーム生成に利用 | 並列処理可能。認証機能なし |
| GCM | CTR+GHASHによるAEAD | 機密性と完全性を同時に提供。TLS 1.3等で標準採用 |
午後問題
H社は自社ECサイトの決済情報保存機能をリファクタリングするプロジェクトを進めている。既存実装をコードレビューしたところ、以下の点が判明した。
(問題点1)クレジットカードの下4桁を除いた情報を含む会員プロファイル画像(顧客が任意でアップロードする本人確認書類の画像)を、AES-128-ECBモードで暗号化してデータベースに保存していた。
(問題点2)決済トークンをAES-256-CBCモードで暗号化する際、実装者が「実装を簡略化するため」としてIVを全ゼロの固定値で運用していた。
(問題点3)暗号化ライブラリの選定にあたり、開発者から「GCMモードならMAC実装が不要になり改ざん検知も同時にできるので移行したい」という提案が出た。
設問1
問題点1について、本人確認書類の画像データをECBモードで暗号化することの具体的なリスクを、ECBモードの特性を踏まえて40字以内で述べよ。また、推奨される是正策をモード名を挙げて答えよ。
設問1の解答・解説を見る
正解例(リスク): 同一平文ブロックが同一暗号文ブロックになるため、画像の構造的パターンが暗号文からも視認できてしまう。
正解例(是正策): GCMモードまたはCBCモード(適切なIV管理を伴う)へ変更する。
解説: 画像データは背景色や余白など同一パターンの繰り返しを含むことが多く、ECBモードで暗号化するとブロック単位のパターンがそのまま暗号文に反映されてしまいます。この結果、暗号化されているにもかかわらず元画像の輪郭やレイアウトが推測できてしまう「ECBペンギン問題」と同種のリスクが生じます。本人確認書類のような機微情報でこれが起きると、画像の内容(顔写真の有無、書類の種類など)が推測される可能性があり重大な問題です。是正策としては、ブロック間の依存関係を持たせるCBCモード(IVを適切に管理)か、認証も同時に得られるGCMモードへの移行が推奨されます。
採点基準(12点):
- リスク:「同一平文ブロック→同一暗号文ブロック」の特性(4点)+「画像の構造・パターンが露見する」(4点)
- 是正策:CBCまたはGCMなど、ECB以外の適切なモードを具体的に挙げている(4点)
設問2
問題点2について、IVを全ゼロの固定値で運用することの脅威を、CBCモードにおけるIVの役割を踏まえて説明せよ。また、問題点3の開発者提案の技術的な妥当性について、GCMモードの特性を踏まえて評価せよ。
設問2の解答・解説を見る
正解例(IV固定の脅威): CBCモードのIVは1回目のブロック暗号化時に平文とXORされ暗号文の予測不能性を担保する役割を持つ。IVを固定すると、同一の決済トークン(平文)を暗号化した際に常に同一の暗号文が生成されるため、攻撃者が暗号文のパターンから同一トークンの再利用や平文の推測を行える(IND-CPA安全性が失われる)。
正解例(GCM提案の評価): 技術的に妥当である。GCMはCTRモードによる暗号化とGHASHによる認証タグ生成を組み合わせたAEADであり、暗号化と改ざん検知を1つのモードで実現できるため、別途MACを実装する必要がなくなり実装ミスのリスクも減らせる。ただしGCMではノンス(IVに相当する値)を同一鍵で絶対に再利用してはならず、再利用すると認証と機密性の両方が破られる致命的な脆弱性となるため、ノンスの一意性を保証する設計(カウンタ管理等)が別途必要である。
解説: CBCモードにおいてIVは「暗号文に多様性を持たせ、同一平文から常に異なる暗号文を生成する」ための重要な要素です。IVを固定すると特に1ブロック目で同一平文から同一暗号文が生成されてしまい、暗号学的な安全性の定義であるIND-CPA(選択平文攻撃に対する識別不可能性)を満たさなくなります。決済トークンのような機微情報では、暗号文のパターンから特定のトークンが再送されたことが分かってしまうリスクがあります。GCMへの移行提案自体は、認証付き暗号化により実装の単純化と安全性向上を両立できる点で妥当ですが、GCM特有の「ノンス使い回し厳禁」という制約を理解せずに移行すると、かえって深刻な脆弱性(鍵ストリームの漏えいや認証タグ偽造)を招く点への注意喚起が必要です。
採点基準(16点):
- IV固定の脅威:「IVは暗号文の多様性・予測不能性を担保する役割」(4点)+「固定すると同一平文が同一暗号文になる」(4点)
- GCM評価:「AEADとして機密性・完全性を同時に提供でき妥当」(4点)+「ノンス(IV)の再利用は致命的脆弱性となるため一意性管理が必須」という留保(4点)
重要キーワード
| 用語 | 説明 |
|---|---|
| AES(Advanced Encryption Standard) | ブロック長128ビットの共通鍵ブロック暗号。鍵長は128/192/256ビットから選択 |
| ECBモード | ブロックごとに独立暗号化するモード。同一平文が同一暗号文になり実務では非推奨 |
| CBCモード | 前ブロックの暗号文とXORして連鎖させるモード。IVの予測不能性が安全性の鍵 |
| GCM(Galois/Counter Mode) | CTR暗号化とGHASH認証を組み合わせたAEAD。機密性と完全性を同時提供。TLS 1.3で標準採用 |
| IV(初期化ベクトル) | 暗号文に多様性を持たせるための初期値。公開してよいが予測不能かつ使い回し厳禁 |
| ノンス(Nonce) | GCM等で使われる一意な値。鍵と組み合わせて同一値を再利用すると致命的脆弱性となる |
まとめ
- 午前I視点: AESの基本仕様(ブロック長128ビット固定、鍵長128/192/256ビット)と共通鍵・公開鍵暗号の基礎的な違いを正確に押さえる
- 午前II視点: ECB・CBC・CTR・GCMそれぞれのモードの仕組みと弱点を区別できるようにする。特にECBの危険性とGCMのAEADとしての優位性は頻出
- 午後視点: 「ECBは構造的パターンが露見する」「CBCのIV固定は致命的」「GCMは便利だがノンス再利用は禁止」という3点セットの実務的な落とし穴を説明できることが重要