4
応用数学解説
文献あり

犬でもわかる Diffie-Hellman 鍵共有

8717
1

概要

Diffie-Hellman 鍵共有とは、二人の間で同じ秘密の値を作成する 公開鍵暗号方式です。二人の間で同じ秘密の値を共有できれば、あとはそれを共通鍵として共通鍵暗号方式でやり取りができます。

Diffie-Hellman鍵共有の概要 Diffie-Hellman鍵共有の概要

前提知識

公開鍵暗号方式が前提知識となります。公開鍵暗号方式についてよくわかっていない方は、この スライド を見て下さい。

数学的準備

まずはDiffie-Hellman鍵共有を学ぶ上で必要な、数学に関する知識を見ていきましょう。(高校数学の範囲内ですので、理解している人は飛ばしましょう。)

剰余演算

割り算の余りを求める演算について、次のように定義します。

剰余演算

amodbabで割ったときの余りである。

具体的な余りを求める例を見ていきましょう。

剰余演算1

106で割ったあまりは、4である。
10mod6=4

剰余演算2

207で割ったあまりは、4である。
20mod7=6

剰余演算3

3×47で割ったあまりは、5である。
3×4mod7=12mod7=5

剰余演算4

237で割ったあまりは、1である。
23mod7=2×2×2mod7=8mod7=1

累乗の累乗

累乗の累乗について次のような定理が成り立ちます。

累乗の累乗

任意の自然数 gabnA=gamodn に対して、次の式が成り立つ。

Abmodn=gabmodn

累乗の累乗をする例を見ていきましょう。

累乗の累乗

A=23mod10ならば
A2mod10=23×2mod10=26mod10=64mod10=4

仮定

公開鍵暗号方式の多くは、特定の計算が困難なことを仮定としておくことで、実現されています。

Diffie-Hellman鍵共有は、DH問題が解けないことを仮定とする、DH仮定を元に成り立っています。

離散対数問題

DH問題について話す前に、現在多くの暗号で用いられる離散対数問題(DLP)について説明します。

離散対数問題(DLP)

大きな素数n と1 以上n未満の自然数 g,x を もちいて、y を次のようにおく。

y=gxmodn

計算上次のような事実が存在する。

  1. (g,x,n) から y は短い時間で計算できる
  2. (g,y,n) から x は計算にかなり時間がかかる

特にこの 2. の事実を離散対数問題という。

特にこの 2. の "かなり時間がかかる"というは、x,n,gの値によっては、現実的に計算不可能なことを表します。

DH 問題

DH問題は離散対数問題の上で成り立つ計算上困難な問題です。
Diffie-Hellman 鍵共有は、DH問題を用いています。

DH問題

大きな素数n と1 以上n未満の自然数 g,x,yKA, KB を次のようにおく。

KA=gxmodnKB=gymodnKAB=gxymodn

計算上次のような事実が存在する。

  1. (n,x,KB) から KAB は短い時間で計算できる
  2. (n,y,KA) から KAB は短い時間で計算できる
  3. (g,n,KA,KB) から KAB は計算にかなり時間がかかる。

特にこの 3. の事実をDH問題という。

特にこの 2. の "かなり時間がかかる"というは、x,y,n,gの値によっては、現実的に計算不可能なほど時間がかかることを表します。

  1. ~ 2. が離散対数問題を解かずに、高速に計算できることを、以下に証明します。
(n,x,KB)を用いたKABの計算

(KB)xmodn=(gy)xmodn=gxymodn=KAB

(n,y,KA)を用いたKABの計算

(KA)ymodn=(gx)ymodn=gxymodn=KAB

手順

以下に手順をまとめました。アリスとボブが同じ秘密を共有するために、Diffie-Hellman鍵共有をします。

準備

大きな素数n と1 以上n未満の自然数 g を選び事前に共有します。(これらは漏洩しても問題ないです。)

鍵ペア生成

アリスは 乱数xを計算し、 KA=gxmodn を求めます。
ボブも乱数 y を計算し、KB=gymodn を求めます。

xyを秘密鍵、KAKBを公開鍵とします。(公開鍵は漏洩しても問題ないです。秘密鍵は漏洩するとまずいです。)

公開鍵の交換

アリスは KA をボブに、ボブは KBをアリスに送信します。(これらは漏洩しても問題ないです。)

共有する秘密の計算

アリスは自身の秘密鍵xKBを用いて、秘密KAB次のように計算します。

(KB)xmodn=(gy)xmodn=gxymodn=KAB

ボブは自身の秘密鍵yKAを用いて、秘密KAB次のように計算します。

(KA)ymodn=(gx)ymodn=gxymodn=KAB

安全性

(g,n,KA,KB) は漏洩される可能性がありますが、DH問題により KAB 計算するには、離散対数問題を解く必要があり、現実的な時間では計算することができません。

まとめ

Diffie-Hellman 鍵共有について、まとめました。

参考文献

投稿日:2020118
OptHub AI Competition

この記事を高評価した人

高評価したユーザはいません

この記事に送られたバッジ

バッジはありません。
バッチを贈って投稿者を応援しよう

バッチを贈ると投稿者に現金やAmazonのギフトカードが還元されます。

投稿者

akakou
akakou
16
17311
数学が…わかりません……ダレカタスケテー

コメント

他の人のコメント

コメントはありません。
読み込み中...
読み込み中
  1. 概要
  2. 前提知識
  3. 数学的準備
  4. 剰余演算
  5. 累乗の累乗
  6. 仮定
  7. 離散対数問題
  8. DH 問題
  9. 手順
  10. 準備
  11. 鍵ペア生成
  12. 公開鍵の交換
  13. 共有する秘密の計算
  14. 安全性
  15. まとめ
  16. 参考文献