MathLabs
定理已证明

Diffie-Hellman共享密钥协商

命题陈述

固定一个素数 pp 和一个底数 gg。若Alice选取秘密值 aa 并发送 A=ga mod pA = g^a \bmod p,Bob选取秘密值 bb 并发送 B=gb mod pB = g^b \bmod p,那么计算 Ba mod pB^a \bmod p 与 Ab mod pA^b \bmod p 会得到相同的值 gab mod pg^{ab} \bmod p,尽管 aa 和 bb 都从未被传输过。

为什么成立?

这正是使两方能够在被窃听者监视的公开信道上协商出一个密钥的原因:窃听者能看到底数、模数以及双方的公开值,但要从中还原出共享密钥,需要求解离散对数问题,在参数选择恰当的情况下,该问题被认为在计算上是困难的。

证明思路

根据定义,A=ga mod pA = g^a \bmod p 与 B=gb mod pB = g^b \bmod p 都是模幂运算的结果,因此Bob收到 AA 后计算 Ba=(gb)a mod pB^a = (g^b)^a \bmod p,而Alice收到 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:Alice与Bob各自独立地从自己的秘密指数和对方的公开值计算出相同的量 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)