共通鍵暗号 — 同じ鍵で施錠・開錠

概要 — まず全体をつかむ

初級では「同じ鍵で施錠・開錠」と捉えました。上級では、中身の仕組みと、正しい使い方(モード) へ。

詳細 — 1段階ずつ追う

ブロック暗号の中身

代表の AESブロック暗号。固定長(128ビット)のブロック単位で、鍵に応じて置換と転置を何ラウンドも繰り返す(SPN構造)ことで、平文と鍵の関係をかき混ぜます。

  • ブロック暗号 — 固定長ずつ処理(AES)
  • ストリーム暗号 — ビット列に鍵ストリームをXOR(ChaCha20など)
  • 鍵長 — AES-128/256。長いほど総当たりに強い
やさしく言うと(中級

共通鍵暗号には、処理の単位で2つの型があります。

  • ブロック暗号 — 固定長(AESは128ビット)ずつ処理する。鍵に応じて中身をかき混ぜる
  • ストリーム暗号 — ビット列に鍵ストリームをXORしていく(ChaCha20など)
  • 鍵長 — AES-128/256。長いほど総当たりに強い

どちらも「同じ鍵で暗号化・復号できる」点は共通で、速いのが強みです。

利用モードが決定的に重要

ブロック暗号は「どう連結するか(モード)」で安全性が大きく変わります。

  • ECB(使ってはいけない) — ブロックごと独立。同じ平文が同じ暗号文になり模様が残る
  • CBC — 前のブロックと連鎖。IVで撹拌(IVの予測不可・パディングに注意)
  • CTR — カウンタから鍵ストリームを生成(並列可)。nonce一意が必須
  • GCM(推奨) — CTR+認証タグ。暗号化と改ざん検知を一体で(AEAD
  • 鍵導出(KDF) — パスワードから鍵を作るには専用のKDF(PBKDF2/argon2)
やさしく言うと(中級

ブロック暗号は、ブロックをどう連結するか(利用モード)で安全性が大きく変わります。

  • モードの存在 — 同じ鍵でも、モードが悪いと規則性が漏れる(ECBは非推奨)
  • IV/nonce — 毎回変わる初期値で暗号文を撹拌し、同じ平文が同じ暗号文にならないようにする
  • 認証付き暗号(AEAD) — GCMなどは暗号化と改ざん検知を一体で行う(推奨)
  • 鍵導出(KDF) — パスワードから鍵を作るときは専用の関数を使う

(各モードの詳しい仕組みは上級で扱います)

アニメーション『ブロック暗号のモード(ECB vs CBC/CTR)』を開く
ブロック暗号のモード — 同じ平文を、模様ごと残すか消すか平文(同じ模様の繰り返し)同じ色=同じ平文ブロック⚠ ECB(各ブロックを独立に暗号化)前後を混ぜない。同じ平文ブロック→ 必ず同じ暗号文。模様が残る=危険暗号文(模様が透ける)✓ CBC / CTR(前ブロック・連番を混ぜる)直前の暗号文やカウンタを混ぜる。同じ平文でも毎回違う。模様が消える=安全暗号文(ノイズ・模様なし)ECBは規則性が漏れる。IV/連番で撹拌するモード(CBC/CTR)を使い、同じ平文を同じ暗号文にしない

⚠️ 実装の落とし穴

  • ECBの使用 — パターンが透ける(有名な「ペンギン画像」)
  • nonce/IV再利用 — CTR/GCMでは致命的(鍵ストリーム再利用で平文露出)
  • パディングオラクル — CBCのパディング検証の情報が漏れると復号される
  • 認証なし暗号 — 改ざん検知が無いと、暗号文を細工される(AEADで防ぐ)
  • 鍵管理 — 結局は鍵の保管・配送・ローテーションが最重要
やさしく言うと(中級
  • 鍵配送問題 — 同じ鍵をどう安全に渡すか。実際は公開鍵と組み合わせて解く
  • IV/nonceの使い回し — 同じ鍵で再利用すると規則が漏れ、平文が復元されうる
  • 認証なし暗号 — 改ざん検知が無いと暗号文を細工される(AEADで防ぐ)
  • 鍵管理 — 保管・配送・ローテーションが結局は最重要

理解度チェック

そのまま解けます(成績は保存されません)。無料アカウントを作ると、学習の記録と進捗の山登りが始まります。

1. CBCで「パディング検証の成否」が攻撃者に漏れると成立しうる攻撃はどれ?

2. パスワードから暗号鍵を作るための専用関数(PBKDF2やargon2など)の総称を、英字3文字の略語で答えてください。

3. 暗号化と改ざん検知(認証)を一体で行う暗号方式の総称を、英字4文字の略語で答えてください。

4. CTRやGCMで、同じ鍵のもとnonce(初期値)を使い回すと?

5. 同じ平文ブロックが同じ暗号文になり、模様が透けてしまう危険な利用モードは?

6. AESのブロック暗号が一度に処理する固定長(ブロック長)はどれ?

7. CBCモードのIV(初期化ベクトル)に求められる性質として正しいのは?

8. GCMがCTRに対して追加で提供するものはどれ?