概要
AES(Advanced Encryption Standard)は、米国 NIST が 2001 年に標準化した共通鍵ブロック暗号です。TLS・VPN・ファイル暗号化・ストレージ暗号化など、現代の暗号化インフラのほぼすべてに使われています。SC試験では「動作モードの特性」と「なぜ GCM が推奨されるか」が頻出です。
仕組みと動作原理
共通鍵暗号の基本
| パラメータ | AES の仕様 |
|---|---|
| ブロックサイズ | 128ビット(固定) |
| 鍵長 | 128・192・256ビットのいずれか |
| ラウンド数 | 鍵長128で10ラウンド(192で12・256で14) |
同一の鍵で暗号化と復号を行うため、「鍵を安全に共有する方法」が常に問題になります(鍵配送問題)。
動作モードの比較
ECB(Electronic Codebook)モード
同じ平文ブロック → 同じ暗号文ブロック。パターンが露呈するため使用禁止。
CBC(Cipher Block Chaining)モード
各ブロックを前の暗号文ブロックと XOR してから暗号化。最初のブロックは IV(初期化ベクタ)と XOR。
| 特性 | 評価 |
|---|---|
| パターン隠蔽 | ○(前ブロックに依存) |
| 並列暗号化 | ✗(シーケンシャル) |
| 並列復号 | ○ |
| 改ざん検知 | ✗(別途 MAC が必要) |
| 主な脆弱性 | パディングオラクル攻撃 |
CTR(Counter)モード
カウンタ値を暗号化した値と平文を XOR。ストリーム暗号的に動作。
| 特性 | 評価 |
|---|---|
| 並列暗号化・復号 | ○ |
| ランダムアクセス | ○ |
| 改ざん検知 | ✗ |
GCM(Galois/Counter Mode) ← 現在の推奨
CTR モードに GHASH による認証タグを追加した **AEAD(認証付き暗号)**モード。
| 特性 | 評価 |
|---|---|
| 機密性 | ○(CTR ベース暗号化) |
| 完全性・認証 | ○(GHASHによる認証タグ) |
| 並列処理 | ○ |
| TLS 1.3 での使用 | ◎(主要暗号スイート) |
認証付き暗号(AEAD)の重要性
暗号化のみでは「改ざんされていないか」がわかりません。AEAD は暗号化と MAC(メッセージ認証コード)を一体化し、機密性+完全性+認証を同時に提供します。
暗号化のみ(CBC等):平文 → 暗号文 → 受信者は内容を復号できるが改ざんに気づけない
AEAD(GCM等):平文 → 暗号文 + 認証タグ → 受信者は認証タグで改ざん検知できる
鍵配送問題とその解決
共通鍵を安全に相手に渡す方法が問題です。
| 解決策 | 仕組み |
|---|---|
| 公開鍵暗号(RSA/ECDH)で共通鍵を配送 | TLS ハンドシェイクで使用 |
| 鍵交換アルゴリズム(Diffie-Hellman) | 安全でない経路でも安全に鍵を共有 |
| 事前共有鍵(PSK) | 帯域外で安全に共有済みの鍵を使用 |
SC試験での頻出ポイント
- ECB モードが使用禁止な理由:同じ平文が同じ暗号文になりパターンが露呈する
- CBC の IV(初期化ベクタ)の役割:同じ平文でも毎回異なる暗号文を生成するためのランダム値
- GCM が推奨される理由:機密性と完全性を一つで実現(AEAD)
- パディングオラクル攻撃:CBC モードの実装の欠陥を突いてパディングエラーの有無から平文を推測
- AES-256 と AES-128 の使い分け:一般用途は AES-128 で十分な安全性。量子コンピュータ耐性が必要なら AES-256
よくある誤問・ひっかけパターン
誤り① 「CBC モードは改ざんを検知できる」→ 誤。CBC 単体では改ざん検知機能はありません。別途 HMAC などの MAC が必要です。
誤り② 「共通鍵暗号は公開鍵暗号より安全性が低い」→ 誤。鍵長が適切であれば安全性は十分です。処理速度が速いため実際のデータ暗号化に使われます。
誤り③ 「GCM の認証タグを検証せずに復号してもよい」→ 誤。認証タグの検証前に復号結果を処理すると改ざんデータを使うリスクがあります。
関連用語
- 公開鍵暗号(RSA)とデジタル署名 — AES の鍵交換に公開鍵暗号を組み合わせる
- TLS(Transport Layer Security) — TLS 1.3 の主力暗号は AES-GCM
- VPN(IPsec / SSL-VPN) — IPsec の ESP は AES-GCM を推奨
重要キーワード
| 用語 | 説明 |
|---|---|
| ブロック暗号 | 固定長ブロック単位で暗号化するアルゴリズム |
| 動作モード | ブロック暗号を長いデータに適用するための方式(CBC・GCM等) |
| IV(初期化ベクタ) | 同じ平文でも異なる暗号文を生成するためのランダム値 |
| AEAD | 暗号化と認証を一体化した方式。機密性・完全性を同時保証 |
| 認証タグ | GCMが生成する改ざん検知用のMAC値 |
| 鍵配送問題 | 共通鍵を安全に相手に渡す方法の問題 |