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

概要 — まず全体をつかむ

暗号の1つ目のタイプが共通鍵暗号施錠も開錠も、同じ鍵を使います。

詳細 — 1段階ずつ追う

これは何?

家の鍵を想像してください。1本の鍵で、閉めることも開けることもできる。共通鍵暗号も同じで、送る人と受け取る人が、同じ鍵を持ちます

南京錠と鍵
共通鍵 — 1本の鍵で閉めて開ける
  • 暗号化 — 平文+鍵 → 暗号文
  • 復号 — 暗号文+同じ鍵 → 平文
アニメーション『共通鍵暗号(同じ鍵)』を開く
共通鍵暗号 — 同じ1本の鍵で、施錠も開錠も送り手(施錠する)受け手(開錠する)平文こんにちは施錠暗号文X9#a?+…経路を通って届く暗号文X9#a?+…開錠平文こんにちは同じ鍵をどう安全に渡す?= 鍵配送問題盗聴されている経路では、その鍵を渡せない送り手と受け手が「同じ鍵」を共有速いが、鍵の受け渡しが課題

代表は AES。処理が速く、大量のデータの暗号化に向きます。

この部分をもっと深く(中級

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

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

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

強みと弱み

  • 強み — 速い(通信の本体や、保存データの暗号化に使う)
  • 弱み鍵の受け渡し。同じ鍵を、相手にどうやって安全に渡すか?(盗聴されている経路では渡せない)

この「鍵配送問題」を解くのが、次の公開鍵暗号です。実際は、公開鍵で共通鍵を渡してから共通鍵で通信する、と組み合わせます。

この部分をもっと深く(中級

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

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

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

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

⚠️ 気をつける

  • 鍵配送問題 — 鍵を安全に共有する手段が別に要る
  • 鍵が漏れたら終わり — 1本の鍵に全てが懸かる
  • 鍵の使い回し — 用途ごとに分け、定期的に更新する
この部分をもっと深く(中級
  • 鍵配送問題 — 同じ鍵をどう安全に渡すか。実際は公開鍵と組み合わせて解く
  • IV/nonceの使い回し — 同じ鍵で再利用すると規則が漏れ、平文が復元されうる
  • 認証なし暗号 — 改ざん検知が無いと暗号文を細工される(AEADで防ぐ)
  • 鍵管理 — 保管・配送・ローテーションが結局は最重要

理解度チェック

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

1. 共通鍵暗号の代表的なアルゴリズムは?

2. 共通鍵暗号の特徴は?

3. 共通鍵暗号の「復号」で使う鍵はどれ?

4. 共通鍵暗号の弱点(課題)として正しいのは?

5. 実際の通信で、共通鍵をどう安全に渡すのが一般的?

6. 共通鍵が漏れるとどうなる?

7. 共通鍵暗号の「同じ鍵をどう安全に相手へ渡すか」という課題を何と呼ぶ?

8. 現在標準的に使われる共通鍵暗号アルゴリズムを英字3文字で答えてください。