鍵交換 かぎこうかん
簡単に言うとこんな感じ!
盗み見られても安全な方法で「暗号の合言葉」を共有する仕組みだよ!パスワードを直接送らずに、ふたりだけが知る秘密の鍵を作り出せるんだ。インターネットの「鍵のかけ方」の根っこにある技術だよ!
鍵交換とは
鍵交換(Key Exchange) とは、暗号通信を始めるにあたって、通信する両者が「共通の暗号鍵」を安全に共有するための手続きです。「暗号鍵」とは、データを暗号化・復号するための値(数値やビット列)のこと。この鍵が盗まれると通信内容が丸見えになるため、鍵そのものをどう安全に届けるかが大きな課題になります。
一見「鍵を送ればいいじゃないか」と思えますが、インターネットは誰でも通信を傍受できる可能性がある経路です。そこで考案されたのが、鍵自体をネットワーク上に流さずに、両者が同じ鍵を「算出」できるアルゴリズムです。代表例が Diffie-Hellman(DH)鍵交換 であり、これにより「秘密の鍵を一度も送信せず、共通の秘密を生成する」という魔法のようなことが実現できます。
現代のWebアクセス(HTTPS)やVPN、メール暗号化など、あらゆる暗号通信の根底には鍵交換の仕組みが動いています。システム発注・選定において「TLSを使う」「エンドツーエンド暗号化対応」と書かれていたら、その裏で必ず鍵交換が行われていると考えてください。
鍵交換の仕組みと種類
代表的な鍵交換アルゴリズム
| アルゴリズム | 特徴 | 主な用途 |
|---|---|---|
| DH(Diffie-Hellman) | 最も古典的。数学的「離散対数問題」を利用 | TLS, IPsec |
| ECDH(楕円曲線DH) | DHを楕円曲線暗号で強化。短い鍵で高強度 | TLS 1.3, モバイル |
| RSA鍵交換 | 受信側の公開鍵で共通鍵を暗号化して送る | TLS 1.2以前(現在は非推奨) |
| ECDHE | ECDHに「一時鍵(Ephemeral)」を加えた方式。前方秘匿性あり | TLS 1.3標準 |
| Post-Quantum(格子暗号など) | 量子コンピュータ対策の次世代方式 | 規格化進行中(NIST) |
「前方秘匿性(Forward Secrecy)」とは
通信ごとに使い捨ての一時鍵を生成する性質のこと。仮に長期的な秘密鍵が漏れても、過去の通信は解読されないという強力な保護を提供します。TLS 1.3では前方秘匿性を持つECDHEが必須となっています。
覚え方:「塗料混ぜ」のたとえ
Diffie-Hellman鍵交換は「色の混ぜ合わせ」で直感的に理解できます。
① 共通の色(黄色)を公開情報として共有
② アリスは自分だけの秘密色(青)を混ぜて「緑」を送る
③ ボブは自分だけの秘密色(赤)を混ぜて「オレンジ」を送る
④ アリスはボブの「オレンジ」に自分の青を、
ボブはアリスの「緑」に自分の赤を混ぜる
→ 両者とも同じ「茶色(共通鍵)」が完成!
⑤ 盗聴者には「緑」と「オレンジ」しか見えず、
元の秘密色は絶対にわからない!
歴史と背景
- 1976年 — ホイットフィールド・ディフィーとマーティン・ヘルマンが Diffie-Hellman鍵交換 を論文発表。「公開チャンネルで秘密を共有できる」という概念は革命的だった
- 1977年 — RSA暗号が発明され、公開鍵暗号として鍵交換にも応用されるように
- 1994年 — SSL(後のTLS)が登場し、Webショッピングなど商用インターネットに鍵交換が組み込まれる
- 1999年 — TLS 1.0として標準化(RFC 2246)。DH・RSA鍵交換を採用
- 2006年 — ECDH(楕円曲線版DH)がRFC 4492で標準化。モバイル時代に対応
- 2018年 — TLS 1.3(RFC 8446)が策定。RSA鍵交換を廃止し、ECDHE一本化。前方秘匿性が必須に
- 2022年〜 — NISTが耐量子暗号の標準アルゴリズムを選定開始。鍵交換の次世代化が進行中
鍵交換と暗号方式の関係
鍵交換は「通信を始める準備段階」であり、実際のデータ暗号化(AESなど)とは役割が異なります。TLSを例に全体の流れを見てみましょう。
「公開鍵暗号」との違い
| 鍵交換 | 公開鍵暗号(RSAなど) | |
|---|---|---|
| 目的 | 共通鍵を安全に生成・共有する | データそのものを暗号化・署名する |
| 通信量 | 少ない(鍵の素材だけ) | 多い(データ全体を処理) |
| 速度 | 高速 | 低速(大量データには不向き) |
| 使われ方 | TLSハンドシェイクなど「準備段階」 | 電子署名、メール暗号化など |
実務では、鍵交換で共通鍵を作り、その共通鍵でAESなどの高速な暗号化を行うというハイブリッド構成が一般的です。
関連する規格・RFC
| 規格・RFC番号 | 内容 |
|---|---|
| RFC 7748 | Curve25519/Curve448(楕円曲線ECDH用曲線の定義) |
| RFC 8446 | TLS 1.3 — ECDHEを必須化し、RSA鍵交換を廃止 |
| RFC 4492 | TLS向けECDH/ECDHE鍵交換の定義 |
| RFC 3526 | IKE向けDiffie-Hellmanグループの定義 |
| RFC 7919 | TLS向けDHパラメータの標準化(DHグループ固定) |