1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ディフィー・ヘルマン鍵交換方式

1
Last updated at Posted at 2026-08-25

はじめに

リビン・テクノロジーズ株式会社では、ネットワークスペシャリストの資格取得を目指す方向けに、隔週でネットワーク講座を行なっています。その講座のセキュリティをテーマにした回で「ディフィー・ヘルマン鍵交換方式」について講義したのですが、十分に説明しきれなかったので、改めて解説記事を書くことにしました。

なぜ「ハイブリッド暗号方式」が使われるのか?

インターネット上でデータを安全に送受信するために、暗号技術は欠かせません。暗号化アルゴリズムには大きく分けて 「共通鍵暗号方式」「公開鍵暗号方式」 の2種類があり、それぞれにトレードオフが存在します。

暗号方式 長所 短所
共通鍵暗号方式
(AES など)
処理速度が非常に高速 鍵をあらかじめ安全に相手へ共有する手順(鍵配送問題)が難しい。
公開鍵暗号方式
(RSA など)
公開鍵を広く配布できるため、事前に鍵を渡しておく必要がない。 複雑な数学的計算を伴うため、処理速度が低速(共通鍵の数100〜1,000倍遅い)。

大量のデータ(Webページのコンテンツや動画など)を高速に暗号化しつつ、安全に相手へ届けるため、現代の通信では両者の長所を組み合わせた 「ハイブリッド暗号方式」 が採用されています。

ハイブリッド暗号における「公開鍵技術」の役割

ハイブリッド暗号では、役割を以下のように分担します。

  1. 共通鍵の安全な共有: 「公開鍵暗号の技術(公開鍵と秘密鍵のペアを用いる数学的仕組み)」 を使用して、共通鍵暗号方式の「共通鍵」を安全に共有する。
  2. データ本体の暗号化: 1 で共有した共通鍵で高速な 「共通鍵暗号方式」 を使用して大量のデータを暗号化する。

共通鍵を共有するための「公開鍵技術のアプローチ」には、大きく分けて以下の2パターンが存在します。

【方式1】 RSA方式(共通鍵を暗号化して送信)

【方式2】 DH鍵交換方式(共通鍵をお互い計算して生成)

現在広く使われている ディフィー・ヘルマン(Diffie-Hellman: DH)鍵交換 は、この【方式2】にあたる公開鍵暗号技術です。

ディフィー・ヘルマン (DH) 鍵交換の具体的な手順

DH鍵交換は、盗聴者が通信をすべて傍受していても、当事者(AliceとBob)だけが同じ共通鍵を計算できる革新的な仕組みです。数学的には「離散対数問題」の難しさに基づいています。

ステップ1: 公開パラメータの準備

全員に見えてもよい数値として、以下を決めます。

  • $p$:非常に大きな素数
  • $g$:生成元(1以上 $p$ 未満の整数)

ステップ2: 秘密鍵と公開鍵の生成

  1. Aliceは秘密の数値 $a$(秘密鍵)をランダムに選ぶ。
    Aliceの公開パラメータ $A = g^a \pmod{p}$ を計算し、Bobに送信する。

  2. Bobは秘密の数値 $b$(秘密鍵)をランダムに選ぶ。
    Bobの公開パラメータ $B = g^b \pmod{p}$ を計算し、Aliceに送信する。

ステップ3: 共通鍵の計算

相手から公開パラメータを受け取ったら、自身の秘密鍵を使って以下の計算を行います。

  • Aliceの計算: $K = B^a \pmod{p} = (g^b)^a \pmod{p} = g^{ba} \pmod{p}$
  • Bobの計算: $K = A^b \pmod{p} = (g^a)^b \pmod{p} = g^{ab} \pmod{p}$

指数法則により $g^{ba} \equiv g^{ab}$ となるため、通信路上に直接鍵を送ることなく、AliceとBobはまったく同じ値 $K$(ハイブリッド暗号で使う共通鍵)を得ることができます。

なぜ盗聴者に破られないのか?

通信路上を流れるのは $p, g, A, B$ のみです。盗聴者が共通鍵 $K$ を計算するには $a$ または $b$ を知る必要がありますが、$A = g^a \pmod{p}$ から $a$ を求める処理(離散対数問題)は現代の計算機では莫大な時間がかかるため安全です。

前方秘匿性(PFS)を実現できる理由

ハイブリッド暗号でDH鍵交換を使う最大のメリットは、前方秘匿性(PFS : Perfect Forward Secrecy) を提供できる点です。

前方秘匿性(PFS)とは?
「将来、サーバーの固定秘密鍵が漏洩・盗難されたとしても、過去に記録された暗号化通信を復号できない」 というセキュリティ特性です。

RSA鍵暗号化(PFSなし)の危険性
従来のRSAを使ったハイブリッド暗号(【方式1】)では、クライアントが生成した共通鍵を「サーバーの固定公開鍵」で暗号化して送っていました。この場合、悪意のある第三者が通信内容を保存しておけば、将来サーバーの秘密鍵を手に入れた際に、過去のすべての通信を一括復号されてしまうリスクがありました。

DH鍵交換(DHE / ECDHE)がPFSを実現する仕組み

  • DH鍵交換(【方式2】)では、セッション(接続)ごとに使い捨ての秘密鍵($a, b$)を一時的(Ephemeral)に生成します。
  • 通信が終わると、この一時的な鍵はメモリ上から消去されます。
  • そのため、仮に将来サーバーの長期秘密鍵が漏洩したとしても、セッション限りの $a, b$ はどこにも残っていないため、過去の通信を復号することは数学的に不可能です。

現在主流の「楕円曲線ディフィー・ヘルマン(ECDH)」

基本的なDH鍵交換(素数 $p$ と余りを使った計算)は「MODP(Modular Exponentiation)DH」と呼ばれます。現在、HTTPS/TLS 1.3 などで標準的に使われているのは、この仕組みを「楕円曲線」に応用した ECDH(Elliptic Curve Diffie-Hellman)鍵交換 です。

【DH鍵交換の進化】

通常のDH(MODP): 巨大な素数 $p$ と 剰余計算($g^a \pmod{p}$)を利用
↓ 数学構造の応用
楕円曲線DH(ECDH): 楕円曲線上の点の足し算(標的演算)を利用

なぜ ECDH が主流になったのか?

  • 通常DH: 有限体上の離散対数問題
  • ECDH: 楕円曲線上の離散対数問題

楕円曲線上の問題は解読がより困難であるため、通常DHと比べて圧倒的に短い鍵長で同等以上の安全性を確保できます。

安全性レベル 通常DH(MODP)の鍵長 ECDHの鍵長 ビット長比較
128ビット相当 (現代の標準規格) 3,072 ビット 256 ビット 1/12 のサイズ
256ビット相当 (超高セキュリティ) 15,360 ビット 512 ビット 1/30 のサイズ

鍵長が劇的に短くなることで、計算処理の高速化パケットサイズの削減スマホ等の消費電力低減が実現されています。

実プロトコルでの採用例

ハイブリッド暗号の共通鍵生成において、DH鍵交換(および ECDH)は業界標準の基盤技術です。

TLS 1.3

  • Web(HTTPS)やHTTP/3の暗号化プロトコルです。TLS 1.3 では従来のRSAによる鍵暗号化が完全廃止され、ハンドシェイク時の共通鍵共有にはDH鍵交換(ECDHE)のみが採用されています。

IPsec (IKE)

  • VPN通信等で用いられる IPsec の鍵交換プロトコル「IKE」において、暗号化セッションごとの鍵生成にDHグループが指定されます。

SSH (Secure Shell)

  • サーバーへのリモート接続時、クライアントとサーバー間でセッション用共通鍵を安全に生成するために使用されます。

おわりに

ディフィー・ヘルマン鍵交換について、できるだけわかりやすく解説したつもりですが、いかがでしょうか。
わかりづらいところなどありましたら、フィードバックを頂ければと思います。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?