ECDH(楕円曲線ディフィー・ヘルマン鍵共有) いーしーでぃーえいち
簡単に言うとこんな感じ!
ECDHは「鍵を直接渡さずに、ふたりだけが知る秘密の鍵を作り出す」魔法みたいな仕組みだよ!たとえるなら、お互いに違う色の絵の具を公開して、それを混ぜ合わせると「ふたりだけしか出せない色」になる感じ。盗み見されても、元の色はバレないってこと!
ECDHとは
ECDH(Elliptic Curve Diffie-Hellman) は、楕円曲線暗号(ECC)をベースにした鍵共有プロトコルの一種です。「鍵共有」とは、暗号通信に使う共通の秘密鍵を、安全ではない通信路を通じて二者間で生成・共有するための手法を指します。直接「秘密鍵を送る」のではなく、それぞれが持つ情報を組み合わせることで同じ秘密値を独立に計算できる点が最大の特徴です。
ECDHは、1976年に提案された古典的なディフィー・ヘルマン鍵共有(DH) の仕組みを、楕円曲線の数学的性質に置き換えたものです。楕円曲線を使うことで、RSAや従来DHと比べて短い鍵長でも同等以上のセキュリティ強度が得られるため、処理速度が速く・消費リソースが少ないという実用上の大きなメリットがあります。
現代のWebセキュリティの根幹を支えるTLS 1.3では、鍵共有方式としてECDHE(ECDHに一時鍵を組み合わせたもの)が標準的に使われており、あなたが日常的にアクセスしているHTTPSサイトのほぼすべてで、ECDHが動いています。
ECDHの仕組み
「絵の具の色混ぜ」モデルで理解する
ECDHの本質を直感的に理解するための有名なたとえ話が「色の混合モデル」です。
| ステップ | アリス(送信側) | ボブ(受信側) | 盗聴者イヴ |
|---|---|---|---|
| ① 共通の土台 | 黄色(公開) | 黄色(公開) | 黄色(知っている) |
| ② 秘密の色 | 赤(秘密) | 青(秘密) | ❌ 知らない |
| ③ 公開する混合色 | 黄色+赤=橙 | 黄色+青=緑 | 橙・緑(知っている) |
| ④ 最終的な共有秘密 | 緑+赤=茶色 | 橙+青=茶色 | ❌ 再現できない |
実際の数学では「色の混合」の代わりに楕円曲線上の点のスカラー倍算が使われます。スカラー倍算は「掛け算は簡単だが、逆算(何倍したかを求めること)が極めて困難」という性質(離散対数問題)を持っているため、盗聴者は公開情報だけから秘密を復元できません。
鍵共有の手順(具体的なステップ)
1. 【事前合意】アリスとボブは楕円曲線のパラメータ(曲線の種類・基点G)を共有する
2. 【鍵生成】
アリス: 秘密鍵 a を生成 → 公開鍵 A = a × G を計算・公開
ボブ : 秘密鍵 b を生成 → 公開鍵 B = b × G を計算・公開
3. 【共有秘密の計算】
アリス: S = a × B = a × (b × G) = ab × G
ボブ : S = b × A = b × (a × G) = ab × G
→ 同じ S が得られる!
4. 【鍵導出】S をもとに実際の暗号化・認証用の鍵を生成する(KDF)
ECDHとECDHEの違い
| ECDH | ECDHE | |
|---|---|---|
| Eの意味 | — | Ephemeral(一時的) |
| 鍵の寿命 | 長期間使い回し | セッションごとに使い捨て |
| 前方秘匿性(PFS) | ❌ なし | ✅ あり |
| 主な用途 | 静的な鍵合意 | TLS 1.3の標準鍵交換 |
前方秘匿性(Perfect Forward Secrecy) とは、長期秘密鍵が漏洩しても、過去の通信記録が解読されない性質のことです。TLS 1.3ではECDHEが必須となっています。
歴史と背景
- 1976年 — ホイットフィールド・ディフィーとマーティン・ヘルマンが鍵共有の概念(DH)を論文で発表。「鍵を事前に共有せずに安全な通信路を確立できる」という革命的なアイデア
- 1985年 — ニール・コブリッツとビクター・ミラーが独立に楕円曲線暗号(ECC)を提案
- 1990年代後半 — ECCをDHに適用したECDHが実用化され始める
- 2005年 — NSA(米国家安全保障局)がSuite Bと呼ばれる暗号スイートにECDHを採用、政府・軍向け通信での利用が広がる
- 2006年 — RFC 4492 でTLS向けECDH・ECDHEが標準化される
- 2013年 — スノーデン事件を受け、前方秘匿性の重要性が再認識。ECDHEへの移行が加速
- 2018年 — TLS 1.3(RFC 8446)でECDHEが鍵交換の標準となり、従来のRSA鍵交換が廃止される
- 現在 — スマートフォン・IoTデバイスなどリソースが限られる環境での暗号通信の主役として不可欠な技術
他の鍵共有・暗号方式との比較
実務でどこに使われているか
| 用途 | 具体例 | 使われるカーブ |
|---|---|---|
| HTTPS(Web暗号化) | Chrome・Safariでのサイトアクセス | X25519、P-256 |
| VPN | WireeguardVPN、IKEv2 | X25519、P-256 |
| SSH | サーバーへのリモートアクセス | X25519、P-256 |
| メッセージングアプリ | Signal、WhatsApp(Signal Protocol) | X25519 |
| スマートカード・ICカード | 電子パスポート、マイナンバーカード | P-256 |
関連する規格・RFC
| 規格・RFC番号 | 内容 |
|---|---|
| RFC 4492 | TLS向けECDH・ECDHEの定義(現在はRFC 8422に更新) |
| RFC 8422 | TLS 1.2以前向けECC暗号スイートの更新版定義 |
| RFC 8446 | TLS 1.3の仕様。ECDHEを標準鍵交換として規定 |
| RFC 7748 | X25519・X448(Curve25519/448ベースのECDH)の定義 |
| RFC 5639 | ブレインプール楕円曲線の定義(欧州標準) |
関連用語
- 楕円曲線暗号(ECC) — ECDHの数学的基盤となる暗号方式
- ディフィー・ヘルマン鍵共有(DH) — ECDHの元となった鍵共有プロトコル
- TLS(Transport Layer Security) — ECDHEが標準鍵交換として使われるWebの暗号化プロトコル
- 公開鍵暗号 — ECDHが属する暗号方式の大分類
- 前方秘匿性(PFS) — ECDHEが提供するセキュリティ特性
- HTTPS — ECDHEを内部で使用するWebの暗号化通信
- RSA暗号 — ECDHと比較される従来型の公開鍵暗号・鍵交換方式
- 鍵導出関数(KDF) — ECDHで得た共有秘密から実際の暗号鍵を生成する仕組み