算法基础
DH算法
Diffie-Hellman密钥交换算法(简称DH算法)是一种基于离散对数问题的密钥交换协议。该协议是由Whitfield Diffie和Martin Hellman于1976年发明的。
DH算法的基本思想是:两个通信方在不事先共享任何密钥的情况下,通过互相交换信息来生成一个共享密钥。DH算法的核心在于,通信双方基于离散对数问题在有限域内进行加密。
DH算法的公式如下:
g x ( m o d p ) = y g^x (mod~p)=y gx(mod p)=y
其中 g g g为底数, p p p为模数(一般是一个比较大的素数), x x x我们可以认为是私钥,是不公开的, y y y我们可以认为是公钥,是可以公开的。
这个算法依据的就是,已知 p p p和 g g g,用 x x x计算得到 y y y比较简单,但是从 y y y反推 x x x就非常困难,至少在目前计算机的算力水平下几乎是无法办到的,这就是DH算法的数学基础。
具体地说,DH算法的步骤如下:
-
Alice和Bob协商选定一个大素数 p p p和一个原根 g g g,公开发送 g g g和 p p p给对方。
-
Alice和Bob各自选择一个私有秘密数 a a a和 b b b,并计算出公开的半个DH密钥公式,即: A = g a ( m o d p ) A = g^a(mod~p) A=ga(mod p) B = g b ( m o d p )