#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] -[[暗号化]] -[[公開鍵暗号方式]] -[[セキュリティ]] -[[前方秘匿性]]