Diffie(ディフィー)とHellman(ヘルマン)って人達よって考案された
共通鍵暗号方式における鍵の共有方法の1つらしい。
IETF*によってRFC 2539として規格化されている
IETF・・・インターネット技術の標準化を推進する任意団体
なぜDH法が生まれたのか?
共通鍵暗号方式にはリスクがあったのだ〜。
それは、、、
途中で第三者に見られちゃうっていう!
共通鍵暗号は暗号化と復号に同じ暗号鍵を使うよね。
だから、送信側から受信側に共通鍵を送信する途中で第三者に鍵を盗み見られるリスクがあるって話。
→そこで!!安全に共有鍵を送信する方法として考案されたのがDH法!!(ババーン⭐️)
ただ直接鍵を送信するわけではないらしい。。。どうゆうことか?
鍵を生み出すための数値を共有し、そこから計算によって共通鍵を導くんだって。
実際どうやっているの?
1. まずは秘密鍵を設定
鍵を共有する2者(ここではAさんとBさん)がそれぞれ自身で秘密鍵を設定する。
Aさんの秘密鍵:7
Bさんの秘密鍵:6
(これは大事な大事な秘密鍵なので他人に見られないように!)
2. 次は公開鍵を設定
公開鍵は、素数pと、pより小さい自然数であるgを設定する。
p = 5
g = 4
(pは大きいほどいい。解読が難しくなるから。)
素数・・・1より大きい自然数のうち、1とその数でしか割り切れないもの
3. 秘密鍵と公開鍵を使って計算
以下の計算式で余を求める!
gの[秘密鍵]乗 ÷ p
Aさん:(4の7乗) ÷ 5 = 3,276 余り 4
Bさん:(4の6乗) ÷ 5 = 819 余り 1
算出した余を双方に渡す。ただしこれは第三者に見られる恐れがある為、共通鍵としては使えない。
あくまで共通鍵を導くヒントとしてネ。
4. さらに余を使って計算
こうして受け取った相手の余りの値を、さらに自身の秘密鍵で乗じ、pで割る。
Aさん:(1の7乗) ÷ 5 = 0 余り 1
Bさん:(4の6乗) ÷ 5 = 819 余り 1
はいキタ!この1
を共通鍵として使います!
ヒントがバレても大丈夫?
OKデス。
公開鍵の4
と1
はがバレても、
それらを何乗して何で割るのか分からないため、共通鍵にはたどり着けません。
とはいえ問題点もあるw
中間者攻撃
余を共有する際に第三者が2者の間に入り、相手になりすまして共通鍵の生成を行う
DDoS攻撃(Distributed Denial of Service attack
DH法は処理負荷の高い方法のため、狙われやすい