暗号化の基礎

共通鍵暗号 きょうつうかぎあんごう

対称鍵暗号AESDES暗号化復号鍵配送問題
共通鍵暗号について教えて

簡単に言うとこんな感じ!

送る人も受け取る人も「同じ鍵」でデータを暗号化・復号する方式だよ。南京錠で例えると、同じ鍵を持っている人しか開け閉めできない、ってイメージ!速くて効率的な反面、「その鍵をどうやって安全に渡すか」が悩みどころなんだ。


共通鍵暗号とは

共通鍵暗号(別名:対称鍵暗号)とは、データを暗号化するときと、暗号化されたデータを元に戻す(復号する)ときに、同一の鍵を使う暗号方式のことです。送信者と受信者が同じ鍵を共有しているため「共通鍵」と呼ばれます。

処理が軽く高速なため、大量のデータを暗号化するのに向いており、ファイルの暗号化やデータベースの保護、VPN通信など幅広い場面で実際に使われています。ただし、安全にやり取りするためには「どうやって鍵を相手に渡すか」という鍵配送問題が常につきまといます。

この問題を解決するために後から登場したのが公開鍵暗号(非対称鍵暗号)ですが、公開鍵暗号は処理が重いため、現実のシステムでは「鍵の受け渡しだけ公開鍵暗号でやって、実際のデータ通信は共通鍵暗号で行う」というハイブリッド方式が主流です。


共通鍵暗号の仕組みと種類

共通鍵暗号は、データの処理方法によって大きく2種類に分かれます。

方式概要代表的なアルゴリズム
ブロック暗号データを一定サイズのブロックに分割して暗号化AES、DES、3DES、Camellia
ストリーム暗号データを1ビット/1バイト単位で連続的に暗号化RC4、ChaCha20

代表的なアルゴリズムの比較

アルゴリズム鍵の長さ安全性現在の状況
DES56bit❌ 脆弱現在は使用禁止
3DES112〜168bit△ 低下中2024年以降非推奨
AES128/192/256bit✅ 安全現在の標準
Camellia128/192/256bit✅ 安全AESと同等・日本発
ChaCha20256bit✅ 安全モバイル向けに普及

覚え方:「同じ鍵で締めて、同じ鍵で開ける」

南京錠のイメージが一番わかりやすいです。「同じ形の鍵を2本コピーして、1本を相手に渡す」、それが共通鍵暗号です。逆に公開鍵暗号は「誰でも入れられる投入口(公開鍵)と、自分だけが開けられる取り出し口(秘密鍵)」のある郵便受けのイメージです。

AESの鍵長と安全性の目安

鍵長総当たりの組み合わせ数現在の評価
128bit約3.4 × 10³⁸ 通り十分安全
192bit約6.3 × 10⁵⁷ 通りより安全
256bit約1.2 × 10⁷⁷ 通り最高レベル

歴史と背景

  • 古代〜近代:シーザー暗号やエニグマなど、広い意味では「共通の規則を知る者同士だけが解読できる」方式が長く使われてきた
  • 1977年:米国標準局(現NIST)がDES(Data Encryption Standard)を標準暗号として採用。56bit鍵のブロック暗号
  • 1990年代後半:コンピュータの高速化によりDESへの総当たり攻撃が現実的になり、安全性が問題視される
  • 1998年:DESへの総当たり攻撃成功(約56時間で解読)が実証され、廃止への流れが加速
  • 2001年:NISTがAES(Advanced Encryption Standard)を新標準として採用。ベルギー発の「Rijndael(レインダール)」アルゴリズムが選ばれる
  • 2000年代〜現在:AESがSSL/TLS・ディスク暗号化・クラウドストレージなどで事実上の世界標準に。日本発のCamelliaもISO標準として採用

共通鍵暗号 vs 公開鍵暗号

現代の暗号システムでは、共通鍵暗号と公開鍵暗号は対立するものではなく、それぞれの強みを組み合わせたハイブリッド方式が使われます。

共通鍵暗号 vs 公開鍵暗号 共通鍵暗号(対称鍵) 🔑 暗号化と復号に同じ鍵を使う ⚡ 処理が高速 📦 大量データの暗号化に向く ⚠️ 鍵配送問題がある 代表: AES / DES / 3DES Camellia / ChaCha20 公開鍵暗号(非対称鍵) 🔓 公開鍵で暗号化・秘密鍵で復号 🐢 処理が低速(数十〜百倍) 🔐 鍵配送問題を解決できる 📝 デジタル署名にも使える 代表: RSA / ECDSA Diffie-Hellman ハイブリッド方式 鍵交換: 公開鍵暗号 データ転送: 共通鍵暗号 TLS/HTTPS はこのハイブリッド方式の代表例

TLS(HTTPS)でのハイブリッド方式の流れ

① ブラウザ ──[公開鍵を要求]──────────────────→ サーバー
② ブラウザ ←─[サーバーの公開鍵を送付]──────── サーバー
③ ブラウザ ──[共通鍵を公開鍵で暗号化して送信]→ サーバー
           ※サーバーだけが秘密鍵で復号できる
④ ブラウザ ←─[共通鍵で暗号化した通信]────────→ サーバー
           ※以降は高速な共通鍵暗号でやり取り

関連する規格・RFC

規格・RFC番号内容
FIPS PUB 197NIST によるAES(Advanced Encryption Standard)の公式仕様
RFC 3565CMS(暗号メッセージ構文)でのAES利用方法
RFC 7539ChaCha20-Poly1305 ストリーム暗号の仕様
RFC 5246TLS 1.2 仕様(共通鍵暗号のハイブリッド利用を規定)
RFC 8446TLS 1.3 仕様(AES-GCM・ChaCha20 を中心に再定義)

関連用語

  • 公開鍵暗号 — 暗号化と復号に異なる鍵ペアを使う方式。鍵配送問題を解決する
  • AES — 現在の共通鍵暗号の世界標準アルゴリズム(Advanced Encryption Standard)
  • DES — AES以前の標準共通鍵暗号。現在は安全性が低く使用禁止
  • TLS — Webの暗号化通信(HTTPS)で使われるプロトコル。ハイブリッド方式の代表例
  • 鍵配送問題 — 共通鍵を安全に相手へ渡す方法がないという根本的な課題
  • ハイブリッド暗号 — 公開鍵暗号と共通鍵暗号を組み合わせた現代の主流方式
  • デジタル署名 — 公開鍵暗号を応用してデータの改ざん・なりすましを防ぐ技術
  • PKI(公開鍵基盤) — 公開鍵の正当性を証明する仕組み。デジタル証明書を管理する体系