セキュリティ
第1章 - 1節
約30分
暗号化技術の詳細
暗号化技術(発展)
暗号化技術の詳細
前提知識: 暗号化の基礎を先に学習してください。
この章では、情報処理安全確保支援士試験で問われる暗号技術の詳細について学びます。
ブロック暗号の暗号利用モード
AESなどのブロック暗号は、固定長(例:128ビット)のブロック単位で暗号化します。任意長のデータを暗号化するには暗号利用モードを使用します。
ECBモード(Electronic Codebook)
最も単純なモードですが、セキュリティ上推奨されません。
平文: [ブロック1][ブロック2][ブロック3]
↓暗号化 ↓暗号化 ↓暗号化
暗号文:[暗号1 ][暗号2 ][暗号3 ]
問題点: 同じ平文ブロックは同じ暗号文になるため、パターンが漏れる
CBCモード(Cipher Block Chaining)
前のブロックの暗号文と平文をXORしてから暗号化します。
平文1 ⊕ IV → 暗号化 → 暗号1
平文2 ⊕ 暗号1 → 暗号化 → 暗号2
平文3 ⊕ 暗号2 → 暗号化 → 暗号3
特徴:
- 初期化ベクトル(IV)が必要
- 同じ平文でも異なる暗号文
- SSL/TLSで使用(ただし脆弱性あり→GCMへ移行)
CTRモード(Counter)
カウンタ値を暗号化し、平文とXORします。
暗号化(Nonce||Counter) ⊕ 平文1 → 暗号1
暗号化(Nonce||Counter+1) ⊕ 平文2 → 暗号2
特徴:
- 並列処理が可能(高速)
- ストリーム暗号のように使える
- Nonceの再利用は厳禁
GCMモード(Galois/Counter Mode)
CTRモードに認証タグを追加した**認証付き暗号(AEAD)**モードです。
特徴:
- 機密性と完全性を同時に提供
- TLS 1.3で推奨
- パフォーマンスが良い
公開鍵暗号の詳細
RSA暗号のしくみ
-
鍵生成:
- 大きな素数p, qを選択
- n = p × q を計算(これが公開鍵の一部)
- φ(n) = (p-1)(q-1) を計算
- e(公開指数)を選択(通常65537)
- d = e^(-1) mod φ(n) を計算(秘密鍵)
-
暗号化: C = M^e mod n
-
復号: M = C^d mod n
セキュリティの根拠: 大きなnの素因数分解が困難
楕円曲線暗号(ECC)
RSAより短い鍵長で同等の安全性を提供します。
| 安全性レベル | RSA鍵長 | ECC鍵長 |
|---|---|---|
| 80ビット | 1024 | 160 |
| 128ビット | 3072 | 256 |
| 256ビット | 15360 | 512 |
用途: TLS、Bitcoin、スマートカード
鍵管理
鍵のライフサイクル
生成 → 配布 → 保管 → 使用 → 更新 → 廃棄
鍵交換プロトコル
Diffie-Hellman鍵交換
安全でない通信路上で共有秘密を確立します。
1. Alice: A = g^a mod p を送信
2. Bob: B = g^b mod p を送信
3. 共有秘密: K = B^a = A^b = g^ab mod p
問題点: 中間者攻撃に脆弱 → 認証と組み合わせる必要
ECDHE(Elliptic Curve Diffie-Hellman Ephemeral)
楕円曲線を使用し、一時鍵を使用するDH。TLS 1.3の標準。
前方秘匿性(PFS): 長期鍵が漏洩しても過去の通信は復号できない
暗号に関する攻撃
| 攻撃手法 | 説明 | 対策 |
|---|---|---|
| 既知平文攻撃 | 平文と暗号文のペアから鍵を推測 | 十分な鍵長 |
| 選択平文攻撃 | 任意の平文を暗号化できる状況 | ランダムなIV/Nonce |
| サイドチャネル攻撃 | 処理時間や電力消費から情報漏洩 | 定時間実装 |
| パディングオラクル攻撃 | パディング検証の違いを利用 | GCMモード使用 |
重要ポイント
- ECBモードは使用禁止 - パターンが漏れる
- GCMモード推奨 - 認証付き暗号
- 鍵長: RSA 2048ビット以上、ECC 256ビット以上
- 前方秘匿性: ECDHE等の一時鍵を使用
- 鍵管理: ライフサイクル全体を考慮
確認問題
この内容に関連する過去問で理解を深めましょう。