DH鍵共有 の変更点


#author("2023-02-13T15:42:28+09:00","default:k1rou","k1rou")
#author("2023-02-13T15:43:20+09:00","default:k1rou","k1rou")
*DH鍵共有とは [#pd799fd7]
**名称 [#zfe154a8]
-DH鍵共有(Diffie-Hellman鍵共有)
-DH鍵交換(Diffie-Hellman鍵交換)
-Diffie-Hellman key exchange
-DH
--static DH

**概要 [#d104d244]
-共通鍵を安全に共有するためのアルゴリズム
-離散対数問題の困難性を利用している
-1976年にスタンフォード大学のWhitfield Diffie氏とMartin E. Hellman氏が考案した鍵交換方式
-[[共通鍵暗号方式]]による鍵の受け渡しを安全に行うための、[[公開鍵暗号方式]]のプロトコル。

-方向性関数

-[[PKCS]] #3
-RFC2631

*DH鍵共有のフロー [#v26ac47b]

+鍵共有を行う両者(AとB)は、下記の2つの数字を共有する
--n:素数
--g:nより小さい整数
+Aは下記の手順で生成したDH公開値(p)をBに送信する
++乱数(x)を生成する
++公開値(p) = g ^ x mod n
+Bは下記の手順で生成したDH公開値(q)をAに送信する
++乱数(y)を生成する
++公開値(q) = g ^ y mod n
+Aは下記の計算で秘密対称鍵の元となる数字(a)を生成する
--数字(a) = q ^ x mod n
+Bは下記の計算で秘密対称鍵の元となる数字(b)を生成する
--数字(b) = p ^ x mod n

**補足説明 [#xd74e594]
-数字(a, b)は同じ数字になる

-事前に共有する数字(n, g)は幾つかの組み合わせから選択する
-乱数(x, y)のみが秘密の扱い

-事前に共有した数字(n, g)と公開値(p, q)が第三者に知られても、乱数(x, y)を求めるのは困難
-素数nの桁数が大きいほど、離散対数である乱数(x, y)を求めるのが困難になる
-乱数(x, y)を求めるのが困難なので、数字(a, b)を第三者が知ることが困難となる

*DHE [#ocdc1560]
*DH鍵共有の方式 [#ka868ba8]
**DHE [#ocdc1560]
-DH Ephemeral
-セッションごとに一度切りの使い捨ての鍵を使用する

*ECDH [#o5fd5bdd]
**ECDH [#o5fd5bdd]
-楕円曲線DH
-[[EC]]DH鍵共有

**[[ECDHE]] [#x9562365]
***[[ECDHE]] [#x9562365]
-Elliptic Curve Diffie-Hellman Ephemeral
-セッションごとに一度切りの使い捨ての鍵を使用する

**Curve25519 [#w85a52e2]
***Curve25519 [#w85a52e2]

*[[前方秘匿性]]を有する方式 [#l4025672]
**[[前方秘匿性]]を有する方式 [#l4025672]
-DHE
-[[ECDHE]]

*DH鍵共有の利用シーン [#i41b26eb]
-[[SSL]]

*関連サイト [#d06699b6]
-Diffie-Hellman Key Agreement Method - IETF~
https://datatracker.ietf.org/doc/html/rfc2631

*関連用語 [#ic7bd77c]
-[[暗号化]]
-[[公開鍵暗号方式]]
-[[セキュリティ]]
-[[前方秘匿性]]