DH鍵共有
2023-02-13 (月) 15:43:20
DH鍵共有とは †
名称 †
- DH鍵共有(Diffie-Hellman鍵共有)
- DH鍵交換(Diffie-Hellman鍵交換)
- Diffie-Hellman key exchange
- DH
- static DH
概要 †
- 共通鍵を安全に共有するためのアルゴリズム
- 離散対数問題の困難性を利用している
- 1976年にスタンフォード大学のWhitfield Diffie氏とMartin E. Hellman氏が考案した鍵交換方式
- 共通鍵暗号方式による鍵の受け渡しを安全に行うための、公開鍵暗号方式のプロトコル。
- 方向性関数
- PKCS #3
- RFC2631
DH鍵共有のフロー †
- 鍵共有を行う両者(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
補足説明 †
- 数字(a, b)は同じ数字になる
- 事前に共有する数字(n, g)は幾つかの組み合わせから選択する
- 乱数(x, y)のみが秘密の扱い
- 事前に共有した数字(n, g)と公開値(p, q)が第三者に知られても、乱数(x, y)を求めるのは困難
- 素数nの桁数が大きいほど、離散対数である乱数(x, y)を求めるのが困難になる
- 乱数(x, y)を求めるのが困難なので、数字(a, b)を第三者が知ることが困難となる
DH鍵共有の方式 †
DHE †
- DH Ephemeral
- セッションごとに一度切りの使い捨ての鍵を使用する
ECDH †
- 楕円曲線DH
- ECDH鍵共有
ECDHE †
- Elliptic Curve Diffie-Hellman Ephemeral
- セッションごとに一度切りの使い捨ての鍵を使用する
Curve25519 †
前方秘匿性を有する方式 †
- DHE
- ECDHE
DH鍵共有の利用シーン †
関連サイト †
- Diffie-Hellman Key Agreement Method - IETF
https://datatracker.ietf.org/doc/html/rfc2631