暗号化の基礎

ECDH(楕円曲線ディフィー・ヘルマン鍵共有) いーしーでぃーえいち

鍵共有楕円曲線暗号公開鍵暗号TLSディフィー・ヘルマン前方秘匿性
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の違い

ECDHECDHE
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デバイスなどリソースが限られる環境での暗号通信の主役として不可欠な技術

他の鍵共有・暗号方式との比較

鍵共有・暗号方式の比較マップ RSA鍵交換 鍵長: 2048〜4096 bit 速度: 遅い PFS: ❌ なし TLS 1.3: 廃止 基盤: 素因数分解 用途: 署名・旧TLS DH(従来型) 鍵長: 2048〜4096 bit 速度: 遅め PFS: △(DHEなら○) TLS 1.3: 利用可 基盤: 離散対数 用途: 旧TLS ECDHE ★現代標準 鍵長: 256〜521 bit 速度: 速い PFS: ✅ あり TLS 1.3: 必須 基盤: 楕円曲線離散対数 用途: HTTPS・VPN・SSH ← 進化の方向(より短い鍵・より高速・より安全)→ ECDHで使われる主要な楕円曲線(カーブ) P-256 NIST標準 256 bit 最も広く普及 P-384 NIST標準 384 bit 高セキュリティ用途 X25519 Curve25519ベース 255 bit 高速・実装が安全 X448 Curve448ベース 448 bit 長期保護向け

実務でどこに使われているか

用途具体例使われるカーブ
HTTPS(Web暗号化)Chrome・SafariでのサイトアクセスX25519、P-256
VPNWireeguardVPN、IKEv2X25519、P-256
SSHサーバーへのリモートアクセスX25519、P-256
メッセージングアプリSignal、WhatsApp(Signal Protocol)X25519
スマートカード・ICカード電子パスポート、マイナンバーカードP-256

関連する規格・RFC

規格・RFC番号内容
RFC 4492TLS向けECDH・ECDHEの定義(現在はRFC 8422に更新)
RFC 8422TLS 1.2以前向けECC暗号スイートの更新版定義
RFC 8446TLS 1.3の仕様。ECDHEを標準鍵交換として規定
RFC 7748X25519・X448(Curve25519/448ベースのECDH)の定義
RFC 5639ブレインプール楕円曲線の定義(欧州標準)

関連用語