MathLabs
定理証明済み

Diffie-Hellman共有秘密合意

内容

素数 pp と底 gg を固定する。アリスが秘密の aa を選び A=ga mod pA = g^a \bmod p を送り、ボブが秘密の bb を選び B=gb mod pB = g^b \bmod p を送ったとする。このとき Ba mod pB^a \bmod p と Ab mod pA^b \bmod p を計算すると、aa も bb も一度も送信されていないにもかかわらず、どちらも同じ値 gab mod pg^{ab} \bmod p になる。

なぜ正しいのか?

これにより、盗聴者が監視している公開チャネル上でも、二者が秘密鍵に合意できるようになる:盗聴者は底、法、そして両者の公開値を見ることができるが、そこから共有秘密を復元するには離散対数問題を解く必要があり、適切に選ばれたパラメータに対しては計算量的に困難であると信じられている。

証明の概略

定義より A=ga mod pA = g^a \bmod p と B=gb mod pB = g^b \bmod p はモジュラー冪乗の結果であるため、ボブは AA を受け取って Ba=(gb)a mod pB^a = (g^b)^a \bmod p を計算し、アリスは BB を受け取って Ab=(ga)b mod pA^b = (g^a)^b \bmod p を計算する。

モジュラー冪乗は通常の冪乗と同じ指数法則に従う。なぜなら法 pp のもとでの繰り返し乗算は、各段階で法 pp により簡約される点を除けば、整数の繰り返し乗算とまったく同じように合成されるからである:gg の指数として (gb)a=gba=gab=(ga)b(g^b)^a = g^{ba} = g^{ab} = (g^a)^b が成り立ち、この等式はどの段階で法 pp により簡約しても保たれる。

したがって Ba mod p=gab mod p=Ab mod pB^a \bmod p = g^{ab} \bmod p = A^b \bmod p である:アリスとボブは、自分の秘密指数と相手の公開値から、それぞれ独立に同じ値 gab mod pg^{ab} \bmod p を計算する。その際、秘密の aa や bb がチャネル上に現れることは一度もない。

安全性の議論はこの正当性の議論とは別である:正当性は両者が同じ数にたどり着くことしか示していない。gg、pp、AA から aa を計算する困難性(離散対数問題)こそが、その共有された数を観測者から秘密に保つ理由である。

この定理を使うトピック

ステップごとの証明

この定理のステップごとの証明はまだありません。

参考文献

  1. Alfred J. Menezes, Paul C. van Oorschot, Scott A. Vanstone (1996). Handbook of Applied Cryptography
  2. Peter W. Shor (1994). Algorithms for Quantum Computation: Discrete Logarithms and Factoring · arXiv:quant-ph/9508027
  3. National Institute of Standards and Technology (2024). Module-Lattice-Based Key-Encapsulation Mechanism Standard (FIPS 203)