暗号化の基礎

鍵交換 かぎこうかん

公開鍵暗号Diffie-HellmanTLS共通鍵暗号化セキュリティ
鍵交換について教えて

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

盗み見られても安全な方法で「暗号の合言葉」を共有する仕組みだよ!パスワードを直接送らずに、ふたりだけが知る秘密の鍵を作り出せるんだ。インターネットの「鍵のかけ方」の根っこにある技術だよ!


鍵交換とは

鍵交換(Key Exchange) とは、暗号通信を始めるにあたって、通信する両者が「共通の暗号鍵」を安全に共有するための手続きです。「暗号鍵」とは、データを暗号化・復号するための値(数値やビット列)のこと。この鍵が盗まれると通信内容が丸見えになるため、鍵そのものをどう安全に届けるかが大きな課題になります。

一見「鍵を送ればいいじゃないか」と思えますが、インターネットは誰でも通信を傍受できる可能性がある経路です。そこで考案されたのが、鍵自体をネットワーク上に流さずに、両者が同じ鍵を「算出」できるアルゴリズムです。代表例が Diffie-Hellman(DH)鍵交換 であり、これにより「秘密の鍵を一度も送信せず、共通の秘密を生成する」という魔法のようなことが実現できます。

現代のWebアクセス(HTTPS)やVPNメール暗号化など、あらゆる暗号通信の根底には鍵交換の仕組みが動いています。システム発注・選定において「TLSを使う」「エンドツーエンド暗号化対応」と書かれていたら、その裏で必ず鍵交換が行われていると考えてください。


鍵交換の仕組みと種類

代表的な鍵交換アルゴリズム

アルゴリズム特徴主な用途
DH(Diffie-Hellman)最も古典的。数学的「離散対数問題」を利用TLS, IPsec
ECDH(楕円曲線DH)DHを楕円曲線暗号で強化。短い鍵で高強度TLS 1.3, モバイル
RSA鍵交換受信側の公開鍵で共通鍵を暗号化して送るTLS 1.2以前(現在は非推奨)
ECDHEECDHに「一時鍵(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を例に全体の流れを見てみましょう。

TLS接続確立における鍵交換の位置づけ ① ハンドシェイク開始 クライアント → サーバーへ接続要求 ② 証明書の提示 サーバーがTLS証明書を送付 ③ 鍵交換(Key Exchange) ECDHEなどで共通の「セッション鍵」を生成 ※ 鍵そのものはネットに流れない ④ セッション鍵の確認 両者が同じ鍵を持っているか検証 Finishedメッセージで照合 ⑤ 暗号化通信の開始 AES-GCMなど共通鍵暗号でデータ送受信 ⑥ セッション終了 一時鍵を破棄(前方秘匿性を実現) 鍵交換の担当範囲 共通鍵暗号(AES等)の担当範囲

「公開鍵暗号」との違い

鍵交換公開鍵暗号(RSAなど)
目的共通鍵を安全に生成・共有するデータそのものを暗号化・署名する
通信量少ない(鍵の素材だけ)多い(データ全体を処理)
速度高速低速(大量データには不向き)
使われ方TLSハンドシェイクなど「準備段階」電子署名、メール暗号化など

実務では、鍵交換で共通鍵を作り、その共通鍵でAESなどの高速な暗号化を行うというハイブリッド構成が一般的です。


関連する規格・RFC

規格・RFC番号内容
RFC 7748Curve25519/Curve448(楕円曲線ECDH用曲線の定義)
RFC 8446TLS 1.3 — ECDHEを必須化し、RSA鍵交換を廃止
RFC 4492TLS向けECDH/ECDHE鍵交換の定義
RFC 3526IKE向けDiffie-Hellmanグループの定義
RFC 7919TLS向けDHパラメータの標準化(DHグループ固定)

関連用語

  • 公開鍵暗号 — 鍵交換の基盤となる非対称暗号の仕組み
  • 共通鍵暗号 — 鍵交換で生成した鍵を使って実際のデータを暗号化する方式
  • TLS — 鍵交換を内包するWebの標準暗号化プロトコル
  • 電子証明書 — 鍵交換相手が本物かを確認するための仕組み
  • Diffie-Hellman — 最初の実用的な鍵交換アルゴリズム
  • 前方秘匿性 — 一時鍵で過去の通信を守るセキュリティ特性
  • ハンドシェイク — 通信開始前に行う鍵交換を含む合意プロセス
  • 耐量子暗号 — 量子コンピュータ時代に向けた次世代鍵交換技術