この記事の3秒まとめ
- 共通鍵暗号:1本の鍵を使いまわす。高速だが「鍵配送問題」が弱点。
- 公開鍵暗号:数学的に結びついた2本一組(公開鍵+秘密鍵)。鍵を渡さずに安全に使える革命的発明。
- 現実のHTTPS通信:TLSハンドシェイクで「公開鍵暗号で共通鍵を安全に交換 → 共通鍵で高速通信」というハイブリッド方式を採用している。
🔑 共通鍵暗号(対称鍵暗号)とは?
共通鍵暗号(対称鍵暗号)は、暗号化と復号にまったく同じ1本の鍵を使う方式です。

共通鍵暗号の代表選手は「AES(Advanced Encryption Standard)」だよ。現代のデータ暗号化の主力選手なんだ🐾
🔢 鍵の長さ(ビット数)と安全性の関係
共通鍵の「強さ」は鍵のビット数で決まります。現代の標準はAESです。
| アルゴリズム | 鍵長 | 安全性の目安 | 用途 |
|---|---|---|---|
| DES | 56 bit | ❌ 1998年に完全解読済み | 現在は使用禁止 |
| 3DES | 112/168 bit | ⚠️ 非推奨(2024年に廃止勧告) | レガシーシステム |
| AES-128 | 128 bit | ✅ 現在安全(一般用途) | HTTPS・ファイル暗号化 |
| AES-256 | 256 bit | ✅ 軍・金融レベルの安全性 | 政府・金融機関・軍事 |

AES-128の「128 bit」って、どのくらい強いの?

2の128乗通り≒340澗(3.4×10の38乗)というとんでもない組み合わせ数だよ。仮に世界中のスーパーコンピュータを全部使っても、宇宙の年齢をはるかに超える時間がかかるんだ🐾
しかし共通鍵暗号には根本的な問題があります。それが「鍵配送問題」です。
⚠️ 鍵配送問題とは?
アリスがボブに暗号通信したいとき、事前に「鍵」を安全に渡す必要があります。でも「その鍵をどうやって安全に渡すのか?」が解決できない——という200年以上解けなかった難問が「鍵配送問題」です。
🧩 公開鍵暗号(非対称鍵暗号)とは?
鍵配送問題を革命的に解決したのが、公開鍵暗号(非対称鍵暗号)です。1976年にDiffieとHellmanが理論を発表し、1977年にRivest・Shamir・Adlemanが最初の実用実装「RSA暗号」を開発しました。
仕組みは「数学的に結びついた2本一組の鍵ペア」を使います。
公開鍵(Public Key)
メッセージを暗号化するための鍵。インターネット上に公開しても問題ない。
例:RSA-2048では2048ビットの整数
秘密鍵(Private Key)
暗号化されたメッセージを復号するための鍵。本人のみが所持する。
盗まれると全通信が解読される
🔢 RSAの鍵長と安全性
| RSA鍵長 | 安全性 | 相当する共通鍵 | 現状 |
|---|---|---|---|
| 512 bit | ❌ 1999年に解読済み | 共通鍵56bit相当 | 使用禁止 |
| 1024 bit | ⚠️ 理論上解読可能 | 共通鍵80bit相当 | 非推奨 |
| 2048 bit | ✅ 2030年頃まで安全 | 共通鍵112bit相当 | 現在の標準 |
| 4096 bit | ✅ 長期安全性 | 共通鍵128bit相当 | 高セキュリティ用途 |
※ NISTガイドライン(SP 800-57)に基づく概算値。量子コンピュータが実用化されるとRSAの安全性は根底から変わります。
📡 ディフィー・ヘルマン(DH)鍵交換:現代の主流

RSAで公開鍵暗号を使えば鍵配送問題は解決できると思うんだけど、なぜTLSではDH鍵交換というものが主流なの?

鋭い質問!「前方秘匿性(Forward Secrecy)」という概念があるんだ。RSAの場合、秘密鍵が将来漏えいすると、過去の全通信記録も解読される可能性がある。でもDHなら、通信ごとに使い捨ての鍵を作るので、その心配がないんだよ🐾
DH鍵交換の仕組み(数値で理解する)
DH鍵交換は「公開した値から共通の秘密値を計算する」というトリックです。離散対数問題の困難さを利用しています。
⚙️ DH鍵交換の手順(簡略数値例)
p = 23、原始根 g = 5 を全員に公開する(傍受されても問題ない)a = 6 を選ぶ公開値
A = g^a mod p = 5^6 mod 23 = 8 を公開
b = 15 を選ぶ公開値
B = g^b mod p = 5^15 mod 23 = 19 を公開
B^a mod p = 19^6 mod 23 = 2ボブ :
A^b mod p = 8^15 mod 23 = 2
🌐 TLSハンドシェイク:HTTPSの内部で何が起きているか
ブラウザのアドレスバーに「🔒」マークが出るHTTPS通信では、毎回「TLSハンドシェイク」が行われています。これが共通鍵と公開鍵の「いいとこ取り」をする現実の実装です。

つまりHTTPSは「公開鍵で安全な入口を作り → 共通鍵で高速な大通りを走る」という2段階構造なんだ!これがハイブリッド暗号の本質だよ🐾
🔁 比較まとめ:共通鍵 vs 公開鍵
| 比較項目 | 共通鍵暗号 | 公開鍵暗号 |
|---|---|---|
| 鍵の本数 | 1本(共有) | 2本(公開鍵+秘密鍵) |
| 鍵の配布 | 事前に安全な共有が必要 | 公開鍵は誰でもOK |
| 処理速度 | 🚀 高速(AES) | 🐢 低速(RSA) |
| 代表的鍵長 | 128〜256 bit | 2048〜4096 bit |
| 主な用途 | 大量データの暗号通信 | 鍵交換・デジタル署名 |
| 前方秘匿性(FS) | — | ECDHE使用で確保 |
📌 まとめ:ハイブリッド暗号こそが現代のスタンダード
- 共通鍵は速いが「鍵配送問題」がある
- 公開鍵は遅いが「秘密の事前共有なし」で安全に通信できる革命的発明
- 現代のHTTPS(TLS)は両者を組み合わせ:ECDHE で安全に鍵交換 → AES で高速通信
- 量子コンピュータ時代を見据え、CRYSTALS-Kyber(格子ベース)などのポスト量子暗号への移行研究が進んでいる

この「ハイブリッド」のアイデアが、世界中の安全なネット通信を支えてるんだよ。暗号は一種類じゃなく、組み合わせることで最強になるんだ🐾

TLSの裏でこんなことが起きているなんて知らなかった!「🔒」マークがもっとリッパに見えるよ!