Diffie–Hellman鍵 かぎ 交換 こうかん のスキームでは、各 かく パーティが公開 こうかい 鍵 かぎ と秘密 ひみつ 鍵 かぎ のペアを生成 せいせい し、ペアのうち公開 こうかい 鍵 かぎ を配布 はいふ する。互 たが いの公開 こうかい 鍵 かぎ の本物 ほんもの の(この点 てん が非常 ひじょう に重要 じゅうよう である)コピーを取得 しゅとく すれば、AliceとBobはオフラインで共有 きょうゆう 鍵 かぎ を計算 けいさん できる。共有 きょうゆう 鍵 かぎ は、たとえば、基本 きほん 的 てき にすべての場合 ばあい にはるかに高速 こうそく な対称 たいしょう 暗号 あんごう の鍵 かぎ として利用 りよう できる。
ディフィー・ヘルマン鍵 かぎ 共有 きょうゆう (ディフィー・ヘルマンかぎきょうゆう、Diffie–Hellman key exchange 、DH )、あるいはディフィー・ヘルマン鍵 かぎ 交換 こうかん (かぎこうかん)とは、事前 じぜん の秘密 ひみつ の共有 きょうゆう 無 な しに、盗聴 とうちょう の可能 かのう 性 せい のある通信 つうしん 路 ろ を使 つか って、暗号 あんごう 鍵 かぎ の共有 きょうゆう を可能 かのう にする、公開 こうかい 鍵 かぎ 暗号 あんごう 方式 ほうしき の暗号 あんごう プロトコルである。この鍵 かぎ は、共通 きょうつう 鍵 かぎ 暗号 あんごう の鍵 かぎ として使用 しよう 可能 かのう である。
1976年 ねん にスタンフォード大学 だいがく の2名 めい の研究 けんきゅう 員 いん ホイットフィールド・ディフィー とマーティン・ヘルマン は、公開 こうかい 鍵 かぎ 暗号 あんごう の概念 がいねん を提案 ていあん し、その具体 ぐたい 的 てき な方式 ほうしき の一 ひと つとして、ディフィー・ヘルマン鍵 かぎ 共有 きょうゆう (DH鍵 かぎ 共有 きょうゆう )プロトコルを提案 ていあん した。この鍵 かぎ 共有 きょうゆう 方式 ほうしき は共通 きょうつう 鍵 かぎ 暗号 あんごう 方式 ほうしき における鍵 かぎ の受 う け渡 わた しを安全 あんぜん に行 おこな うために提案 ていあん された方式 ほうしき である。
このプロトコルは、通信 つうしん を行 おこな いたい2者 しゃ が各々 おのおの 公開 こうかい 鍵 かぎ と秘密 ひみつ 鍵 かぎ (私有 しゆう 鍵 かぎ ともいう)を用意 ようい し、公開 こうかい 鍵 かぎ のみを相手 あいて に送信 そうしん し、各自 かくじ 、自分 じぶん の秘密 ひみつ 鍵 かぎ と受信 じゅしん した公開 こうかい 鍵 かぎ から共通 きょうつう 鍵 かぎ を作成 さくせい できる方法 ほうほう である。たとえ送受信 そうじゅしん されるデータ(すなわち、二人 ふたり の公開 こうかい 鍵 かぎ )を第三者 だいさんしゃ がすべて盗聴 とうちょう していてもそれからでは(計算 けいさん 量的 りょうてき に)私有 しゆう 鍵 かぎ も共通 きょうつう 鍵 かぎ も生成 せいせい することができない所 ところ に特徴 とくちょう がある。
アメリカ合衆国 あめりかがっしゅうこく とカナダ で特許 とっきょ が取得 しゅとく された。両国 りょうこく でのアルゴリズムの特許 とっきょ 期限 きげん は既 すで に1997年 ねん 4月 がつ 29日 にち に切 き れたので、現在 げんざい では誰 だれ でも自由 じゆう に利用 りよう ができる。
この方式 ほうしき は以下 いか のように行 おこな われる。まず大 おお きな素数 そすう
p
{\displaystyle p}
と、
p
−
1
{\displaystyle p-1}
を割 わ り切 き る大 おお きな素数 そすう
q
{\displaystyle q}
を用意 ようい する。また、
g
{\displaystyle g}
を
(
Z
/
p
Z
)
∗
{\displaystyle ({\mathbb {Z} }/p{\mathbb {Z} })^{\ast }}
の元 もと であり、位 い 数 すう が
q
{\displaystyle q}
である値 ね とする。この
p
,
q
,
g
{\displaystyle p,q,g}
の値 ね は公開 こうかい されているものとする[1] 。
いまアリスとボブが通信 つうしん を行 おこな うとする。このときアリスとボブはお互 たが い自分 じぶん だけの知 し る秘密 ひみつ の値 ね a , b を選択 せんたく する、この値 ね は 0 以上 いじょう q −1 以下 いか の中 なか からランダム に選 えら ぶ。(ここで、ゼロや小 ちい さな値 ね (ga < p となる a 等 ひとし )を選択 せんたく すると安全 あんぜん 性 せい が損 そこ なわれるが、そのような確 かく 率 りつ は無視 むし できるほど小 ちい さい。)
アリスは以下 いか の値 ね A を計算 けいさん してそれをボブに送信 そうしん する。
A
=
g
a
mod
p
{\displaystyle A=g^{a}{\bmod {p}}}
ボブも同様 どうよう に以下 いか の値 ね B を計算 けいさん してそれをアリスに送信 そうしん する。
B
=
g
b
mod
p
{\displaystyle B=g^{b}{\bmod {p}}}
アリスは自分 じぶん だけの知 し る秘密 ひみつ の値 ね a とボブから送 おく られてきて受信 じゅしん した値 ね B から以下 いか の値 ね を計算 けいさん する。
K
A
=
B
a
mod
p
{\displaystyle K_{A}=B^{a}{\bmod {p}}}
ボブも自分 じぶん だけの知 し る秘密 ひみつ の値 ね b とアリスから送 おく られてきて受信 じゅしん した値 ね A から以下 いか の値 ね を計算 けいさん する。
K
B
=
A
b
mod
p
{\displaystyle K_{B}=A^{b}{\bmod {p}}}
このときアリスとボブが計算 けいさん した
K
A
{\displaystyle K_{A}}
と
K
B
{\displaystyle K_{B}}
は
K
A
=
K
B
=
g
a
b
mod
p
{\displaystyle K_{A}=K_{B}=g^{ab}{\bmod {p}}}
となっていて一致 いっち するので、以後 いご この値 ね を共通 きょうつう 鍵 かぎ 暗号 あんごう 方式 ほうしき の鍵 かぎ
K
{\displaystyle K}
として使用 しよう する。
ここで第三者 だいさんしゃ イブがこの二人 ふたり の通信 つうしん を傍受 ぼうじゅ していて A と B の値 ね を入手 にゅうしゅ できたとしても、
A
=
g
a
mod
p
{\displaystyle A=g^{a}{\bmod {p}}}
と
B
=
g
b
mod
p
{\displaystyle B=g^{b}{\bmod {p}}}
から
K
=
g
a
b
mod
p
{\displaystyle K=g^{ab}{\bmod {p}}}
を多項式 たこうしき 時間 じかん で計算 けいさん できる方法 ほうほう はいまのところ知 し られていないので、第三者 だいさんしゃ イブが秘密 ひみつ の共通 きょうつう 鍵 かぎ
K
{\displaystyle K}
を生成 せいせい することは困難 こんなん である。このためアリスとボブが安全 あんぜん に通信 つうしん を行 おこな うことが可能 かのう になる。
しかしながらたとえば、イブがボブになりすましをしていて、そうとは知 し らずに上記 じょうき の手順 てじゅん でアリスが(相手 あいて がボブだと思 おも ってだまされて)相互 そうご に通信 つうしん をして共通 きょうつう 鍵 かぎ
K
{\displaystyle K}
を作 つく ったとすると、それ以降 いこう のアリスからボブを相手 あいて として想定 そうてい して送 おく った
K
{\displaystyle K}
を共通 きょうつう 鍵 かぎ として暗号 あんごう 化 か された通信 つうしん の内容 ないよう すべては,イブによって容易 ようい に内容 ないよう が解読 かいどく されてしまうことに注意 ちゅうい が必要 ひつよう である。
なお、ディフィーとヘルマンによる最初 さいしょ の論文 ろんぶん においては、
g
{\displaystyle g}
として
(
Z
/
p
Z
)
∗
{\displaystyle ({\mathbb {Z} }/p{\mathbb {Z} })^{\ast }}
の生成 せいせい 元 もと を用 もち いることが提案 ていあん されているが、この場合 ばあい 、アリスが送 おく った
A
{\displaystyle A}
のルジャンドル記号 きごう を計算 けいさん することによって、アリスの秘密 ひみつ 情報 じょうほう
a
{\displaystyle a}
の最下位 さいかい ビットが漏洩 ろうえい してしまう[2] 。
ディフィー・ヘルマン鍵 かぎ 共有 きょうゆう 自体 じたい は認証 にんしょう 手段 しゅだん を提供 ていきょう するものではないため、単独 たんどく では中 ちゅう 間 あいだ 者 しゃ 攻撃 こうげき に対 たい して脆弱 ぜいじゃく である。
ここではディフィー・ヘルマン鍵 かぎ 共有 きょうゆう における中 ちゅう 間 あいだ 者 しゃ 攻撃 こうげき の具体 ぐたい 的 てき な手順 てじゅん について示 しめ す。
DNS偽装 ぎそう ・ARPスプーフィング ・その他 た の手段 しゅだん により攻撃 こうげき 者 しゃ イブがこの二人 ふたり の通信 つうしん を中継 ちゅうけい して A と B の値 ね を(本来 ほんらい の宛先 あてさき には送 おく らずに)盗 ぬす み取 と ったとする。
このとき攻撃 こうげき 者 しゃ イブはそれらに対 たい して秘密 ひみつ の値 ね c と d を選択 せんたく する。この値 ね は a や b と同 おな じ基準 きじゅん で選択 せんたく される。
攻撃 こうげき 者 しゃ イブは c を用 もち いて次 つぎ の値 ね を計算 けいさん して(アリスになりすまして)ボブに送信 そうしん する。
A
E
=
g
c
mod
p
{\displaystyle A_{E}=g^{c}{\bmod {p}}}
また d を用 もち いて次 つぎ の値 ね を計算 けいさん して(ボブになりすまして)アリスに送信 そうしん する。
B
E
=
g
d
mod
p
{\displaystyle B_{E}=g^{d}{\bmod {p}}}
ボブは自身 じしん の秘密 ひみつ の値 ね b と(アリスからだと思 おも って,実際 じっさい には攻撃 こうげき 者 しゃ イブから)受信 じゅしん した値 ね
A
E
{\displaystyle A_{E}}
から以下 いか の値 ね を計算 けいさん する。
K
B
E
=
A
E
b
mod
p
{\displaystyle K_{BE}=A_{E}^{b}{\bmod {p}}}
アリスは自身 じしん の秘密 ひみつ の値 ね a と(ボブからだと思 おも って,実際 じっさい には攻撃 こうげき 者 しゃ イブから)受信 じゅしん した値 ね
B
E
{\displaystyle B_{E}}
から以下 いか の値 ね を計算 けいさん する。
K
A
E
=
B
E
a
mod
p
{\displaystyle K_{AE}=B_{E}^{a}{\bmod {p}}}
攻撃 こうげき 者 しゃ イブは自身 じしん の秘密 ひみつ の値 ね c と d と(中継 ちゅうけい せずに抜 ぬ き取 と った)アリスからの値 ね A とボブからの値 ね B の値 ね から以下 いか の値 ね をそれぞれ計算 けいさん する。
K
E
A
E
=
A
d
mod
p
{\displaystyle K_{EAE}=A^{d}{\bmod {p}}}
K
E
B
E
=
B
c
mod
p
{\displaystyle K_{EBE}=B^{c}{\bmod {p}}}
このときアリスと(ボブになりすました)攻撃 こうげき 者 しゃ イブの計算 けいさん した
K
A
E
{\displaystyle K_{AE}}
と
K
E
A
E
{\displaystyle K_{EAE}}
の値 ね ,およびボブと(アリスになりすました)攻撃 こうげき 者 しゃ イブの計算 けいさん した
K
B
E
{\displaystyle K_{BE}}
と
K
E
B
E
{\displaystyle K_{EBE}}
の値 ね は
K
A
E
=
K
E
A
E
=
g
a
d
mod
p
{\displaystyle K_{AE}=K_{EAE}=g^{ad}{\bmod {p}}}
K
B
E
=
K
E
B
E
=
g
b
c
mod
p
{\displaystyle K_{BE}=K_{EBE}=g^{bc}{\bmod {p}}}
になってそれぞれが一致 いっち する。
そうしてそれ以降 いこう の通信 つうしん において攻撃 こうげき 者 しゃ イブは,これら2つの値 ね をそれぞれアリスおよびボブに対 たい する共通 きょうつう 鍵 かぎ 暗号 あんごう 方式 ほうしき の鍵 かぎ として使用 しよう してアリスとボブの通信 つうしん を中継 ちゅうけい し続 つづ けて、盗聴 とうちょう や改 かい ざんを行 おこな うことができる。
公開 こうかい 鍵 かぎ は(何 なに かしらの証明 しょうめい を付 つ けた)静的 せいてき なものであっても、一時 いちじ 的 てき なもの(ephemeral、この場合 ばあい 特 とく にDHE と略記 りゃっき される)であってもかまわない。一時 いちじ 的 てき な鍵 かぎ を使用 しよう した場合 ばあい 、鍵 かぎ そのものには認証 にんしょう がないため、別 べつ な方法 ほうほう で認証 にんしょう を行 おこな うこととなる。もし認証 にんしょう がなければ、上述 じょうじゅつ の通 とお り中 ちゅう 間 あいだ 者 しゃ 攻撃 こうげき に対 たい して脆弱 ぜいじゃく となる。どちらか一方 いっぽう の鍵 かぎ が静的 せいてき なものであった場合 ばあい 、中間 なかま 者 しゃ 攻撃 こうげき を受 う けることはなくなるが、forward secrecy のような、その他 た の高度 こうど なセキュリティに与 あずか ることはできなくなる。静的 せいてき な鍵 かぎ を持 も つ側 がわ では、自身 じしん の秘密 ひみつ 鍵 かぎ 漏洩 ろうえい を防 ふせ ぐため、相手 あいて の公開 こうかい 鍵 かぎ を確認 かくにん して、安全 あんぜん な共通 きょうつう 鍵 かぎ 生成 せいせい 関数 かんすう を利用 りよう する必要 ひつよう がある。
共有 きょうゆう した秘密 ひみつ をそのまま鍵 かぎ として使 つか うこともできなくはないが、ディフィー・ヘルマン鍵 かぎ 共有 きょうゆう で生成 せいせい したことによってできる弱 よわ いビットの影響 えいきょう を除去 じょきょ するため、秘密 ひみつ をハッシュに通 とお すことが推奨 すいしょう される[3] 。
ディフィー・ヘルマン鍵 かぎ 共有 きょうゆう は負荷 ふか のかかる処理 しょり であり、SSL/TLS に適用 てきよう した場合 ばあい では、通常 つうじょう のRSA暗号 あんごう による鍵 かぎ 交換 こうかん の場合 ばあい と比較 ひかく して、サーバのスループット が6分 ぶん の1程度 ていど まで落 お ち込 こ むという実験 じっけん 結果 けっか も存在 そんざい する[4] 。
これはディフィー・ヘルマン鍵 かぎ 共有 きょうゆう のシステム自体 じたい に存在 そんざい する問題 もんだい ではないが、2013年 ねん の調査 ちょうさ では、SSL/TLSでディフィー・ヘルマン鍵 かぎ 共有 きょうゆう を有効 ゆうこう としているサーバのうち、電子 でんし 署名 しょめい のビット数 すう よりDHのビット数 すう のほうが小 ちい さく、総 そう 当 あ たり攻撃 こうげき に対 たい して弱 よわ くなってしまっているサーバが、実 じつ に80%以上 いじょう の割合 わりあい で存在 そんざい していた[5] 。
弱 じゃく 鍵 かぎ の存在 そんざい と Logjam 攻撃 こうげき [ 編集 へんしゅう ]
原理 げんり 上 じょう は解読 かいどく がきわめて困難 こんなん ではあるが、実装 じっそう 上 じょう の問題 もんだい が存在 そんざい する場合 ばあい には解読 かいどく が可能 かのう となる場合 ばあい がある。
また原理 げんり 上 じょう 、使 つか われている素数 そすう に対 たい して十分 じゅうぶん な量 りょう の事前 じぜん 計算 けいさん を行 おこな えば、その素数 そすう に対 たい しては比較的 ひかくてき 短 みじか い時間 じかん で鍵 かぎ を解読 かいどく することができる (い換 いか えれば、その素数 そすう を弱 じゃく 鍵 かぎ にすることができる)[6] 。2015年 ねん 、このことを元 もと にした論文 ろんぶん が発表 はっぴょう された[7] 。
この論文 ろんぶん において、Alexa によるトップ100万 まん HTTPS ドメインの中 なか で512ビット輸出 ゆしゅつ 版 ばん DHEを許可 きょか している 8.4% のうち 82% が、1024ビット非 ひ 輸出 ゆしゅつ 版 ばん DHEでもトップドメイン全体 ぜんたい の 17.9% がそれぞれ単一 たんいつ の素数 そすう を使 つか い回 まわ しており、これらの素数 そすう に対 たい して事前 じぜん 計算 けいさん (ある種 しゅ の線形 せんけい 代数 だいすう 計算 けいさん を含 ふく む) を行 おこな うことで多 おお くのサーバーの通信 つうしん に対 たい して解読 かいどく が行 おこな えることを指摘 してき した。特 とく に512ビットの素数 そすう に対 たい して解読 かいどく を実証 じっしょう し、数 すう 千 せん コアと約 やく 8日 にち の事前 じぜん 計算 けいさん により、およそ70秒 びょう で解読 かいどく ができることを示 しめ した[7] 。
さらに、サーバーが用 もち いる素数 そすう についての離散 りさん 対数 たいすう 問題 もんだい をリアルタイムで 解 と ける攻撃 こうげき 者 しゃ が存在 そんざい した場合 ばあい には、たとえクライアント側 がわ が弱 よわ いDHEを許可 きょか していなくても偽 にせ のサーバーに接続 せつぞく させる中 ちゅう 間 あいだ 者 しゃ 攻撃 こうげき が成立 せいりつ し、例 たと えばサーバー側 がわ が512ビットの輸出 ゆしゅつ 版 ばん DHEを許 ゆる している場合 ばあい には、輸出 ゆしゅつ 版 ばん DHEを許可 きょか していない新 あたら しいクライアントであっても通信 つうしん をダウングレードさせることが可能 かのう であることを示 しめ した (Logjam 攻撃 こうげき )[7] 。
同 どう 論文 ろんぶん は1024ビットの非 ひ 輸出 ゆしゅつ 版 ばん DHEについても、数 すう 億 おく ドル のコストをかけて専用 せんよう ハードウェアを構築 こうちく した場合 ばあい には、1つの素数 そすう に対 たい して十分 じゅうぶん な線形 せんけい 代数 だいすう 計算 けいさん を1年間 ねんかん で実行 じっこう できる可能 かのう 性 せい があることを示唆 しさ している[7] 。
^ RFC 5114 (Additional Diffie-Hellman Groups for Use with IETF Standards、2008年 ねん 8月 がつ )や RFC 7919 (Negotiated Finite Field Diffie-Hellman Ephemeral Parameters for Transport Layer Security (TLS)、2016年 ねん 8月 がつ )のように、広 ひろ く公開 こうかい されて用 もち いられる (p,q,g) の組 くみ も存在 そんざい する。
^ Dan, Boneh (1998), “The Decision Diflie-Hellman Problem” , Algorithmic Number Theory. ANTS 1998, LNCS 1423 , https://doi.org/10.1007/BFb0054851 2021年 ねん 12月24日 にち 閲覧 えつらん 。
^ Law, Laurie; Menezes, Alfred; Qu, Minghua; Solinas, Jerry; Vanstone, Scott (August 28, 1998). An Efficient Protocol for Authenticated Key Agreement . Certicom. http://download.certicom.com/pdfs/corr98-05.pdf 2012年 ねん 1月 がつ 19日 にち 閲覧 えつらん 。 .
^ Symantec (2013) 、pp.13-14。
^ Symantec (2013) 、p.9。
^ Diffie, Whitfield; Oorschot, Paul C. Van; Wiener, Michael J. (1992-03-06), “Authentication and Authenticated Key Exchanges” , Designs, Codes and Cryptography , http://people.scs.carleton.ca/~paulv/papers/sts-final.pdf 2017年 ねん 12月24日 にち 閲覧 えつらん 。
^ a b c d Adrian, David; Bhargavan, Karthikeyan; Durumeric, Zakir; Gaudry, Pierrick; Green, Matthew; Halderman, J. Alex; Heninger, Nadia; Springall, Drew et al. (2015-10), Imperfect Forward Secrecy:How Diffie-Hellman Fails in Practice , https://weakdh.org/imperfect-forward-secrecy-ccs15.pdf 2017年 ねん 12月24日 にち 閲覧 えつらん 。
RFC 2631 : Diffie-Hellman Key Agreement Method
アルゴリズム 理論 りろん 標準 ひょうじゅん 化 か 関連 かんれん 項目 こうもく
カテゴリ