初級では「同じ鍵で施錠・開錠」と捉えました。中級では、中身の型と、正しい使い方(モード)の存在を見ます。
概要 — まず全体をつかむ
詳細 — 1段階ずつ追う
ブロック暗号とストリーム暗号
共通鍵暗号には、処理の単位で2つの型があります。
- ブロック暗号 — 固定長(AESは128ビット)ずつ処理する。鍵に応じて中身をかき混ぜる
- ストリーム暗号 — ビット列に鍵ストリームをXORしていく(ChaCha20など)
- 鍵長 — AES-128/256。長いほど総当たりに強い
どちらも「同じ鍵で暗号化・復号できる」点は共通で、速いのが強みです。
この部分をもっと深く(上級)
代表の AES はブロック暗号。固定長(128ビット)のブロック単位で、鍵に応じて置換と転置を何ラウンドも繰り返す(SPN構造)ことで、平文と鍵の関係をかき混ぜます。
- ブロック暗号 — 固定長ずつ処理(AES)
- ストリーム暗号 — ビット列に鍵ストリームをXOR(ChaCha20など)
- 鍵長 — AES-128/256。長いほど総当たりに強い
やさしく言うと(初級)
家の鍵を想像してください。1本の鍵で、閉めることも開けることもできる。共通鍵暗号も同じで、送る人と受け取る人が、同じ鍵を持ちます。

- 暗号化 — 平文+鍵 → 暗号文
- 復号 — 暗号文+同じ鍵 → 平文
アニメーション『共通鍵暗号(同じ鍵)』を開く
代表は AES。処理が速く、大量のデータの暗号化に向きます。
利用モードとIV/nonce
ブロック暗号は、ブロックをどう連結するか(利用モード)で安全性が大きく変わります。
- モードの存在 — 同じ鍵でも、モードが悪いと規則性が漏れる(ECBは非推奨)
- IV/nonce — 毎回変わる初期値で暗号文を撹拌し、同じ平文が同じ暗号文にならないようにする
- 認証付き暗号(AEAD) — GCMなどは暗号化と改ざん検知を一体で行う(推奨)
- 鍵導出(KDF) — パスワードから鍵を作るときは専用の関数を使う
(各モードの詳しい仕組みは上級で扱います)
アニメーション『ブロック暗号のモード(ECB vs CBC/CTR)』を開く
この部分をもっと深く(上級)
ブロック暗号は「どう連結するか(モード)」で安全性が大きく変わります。
- ECB(使ってはいけない) — ブロックごと独立。同じ平文が同じ暗号文になり模様が残る
- CBC — 前のブロックと連鎖。IVで撹拌(IVの予測不可・パディングに注意)
- CTR — カウンタから鍵ストリームを生成(並列可)。nonce一意が必須
- GCM(推奨) — CTR+認証タグ。暗号化と改ざん検知を一体で(AEAD)
- 鍵導出(KDF) — パスワードから鍵を作るには専用のKDF(PBKDF2/argon2)
やさしく言うと(初級)
- 強み — 速い(通信の本体や、保存データの暗号化に使う)
- 弱み — 鍵の受け渡し。同じ鍵を、相手にどうやって安全に渡すか?(盗聴されている経路では渡せない)
この「鍵配送問題」を解くのが、次の公開鍵暗号です。実際は、公開鍵で共通鍵を渡してから共通鍵で通信する、と組み合わせます。
⚠️ 気をつける
- 鍵配送問題 — 同じ鍵をどう安全に渡すか。実際は公開鍵と組み合わせて解く
- IV/nonceの使い回し — 同じ鍵で再利用すると規則が漏れ、平文が復元されうる
- 認証なし暗号 — 改ざん検知が無いと暗号文を細工される(AEADで防ぐ)
- 鍵管理 — 保管・配送・ローテーションが結局は最重要
この部分をもっと深く(上級)
- ECBの使用 — パターンが透ける(有名な「ペンギン画像」)
- nonce/IV再利用 — CTR/GCMでは致命的(鍵ストリーム再利用で平文露出)
- パディングオラクル — CBCのパディング検証の情報が漏れると復号される
- 認証なし暗号 — 改ざん検知が無いと、暗号文を細工される(AEADで防ぐ)
- 鍵管理 — 結局は鍵の保管・配送・ローテーションが最重要
やさしく言うと(初級)
- 鍵配送問題 — 鍵を安全に共有する手段が別に要る
- 鍵が漏れたら終わり — 1本の鍵に全てが懸かる
- 鍵の使い回し — 用途ごとに分け、定期的に更新する
理解度チェック
そのまま解けます(成績は保存されません)。無料アカウントを作ると、学習の記録と進捗の山登りが始まります。
問1. 暗号化と「改ざんされていないか」の検知を一体で行う方式(認証付き暗号)の代表は?
問2. 共通鍵暗号の「ブロック暗号」と「ストリーム暗号」の違いで正しいのは?
問3. 共通鍵暗号の一般的な強みとして正しいのは?
問4. ストリーム暗号の代表例として正しいのは?
問5. IV/nonceを暗号化のたびに変える目的として正しいのは?
問6. パスワードから暗号鍵を作るときの正しいやり方はどれ?
問7. 同じ平文が同じ暗号文にならないよう、暗号化のたびに変える初期値を英字2文字の略語で答えてください。
問8. 現在標準的に使われる共通鍵暗号のブロック暗号アルゴリズムを英字3文字で答えてください。