Title: 算法:DH算法原理
Author: "Peng Li"<aqnote@aqnote.com>
Date: 2015.12.11
Keywords: Math, DH
Copyright:
算法:DH算法原理
离散对数的概念
原根:
如果a是素数p的一个原根,那么数值:
a ( m o d p ) , a 2 ( m o d p ) , … , a ( p − 1 ) ( m o d p ) a \pmod{p},\quad a^2 \pmod{p},\quad …,\quad a^{(p-1)} \pmod{p} a(modp),a2(modp),…,a(p−1)(modp)
是各不相同的整数,且以某种排列方式组成了从1到p-1的所有整数。
离散对数:
如果对于一个整数Y,素数p的一个原根a,可以找到一个唯一的指数Y,使得:
Y = a X ( m o d p ) ( 0 ≤ X ≤ p − 1 ) Y = a^X \pmod{p} (0 \leq X \leq p-1) Y=aX(modp)(0≤X≤p−1)
那么指数i称为b的以a为基数的模p的离散对数。
算法描述
Diffie-Hellman算法的有效性依赖于计算离散对数的难度,
其含义是:
当已知大素数p和它的一个原根a后,对给定的b,要计算i,被认为是很困难的;
而给定i,计算b 却相对容易。
Diffie-Hellman算法:
假如用户A和用户B希望交换一个密钥
取素数p和整数a,a是p的一个原根,公开a和p
- A选择随机数 X A ≤ p X_A \le p XA≤p,并计算 Y A = a X A ( m o d p ) Y_A = a ^ {X_A} \pmod{p} YA=aXA(modp)
- B选择随机数 X B ≤ p X_B \le p XB≤p,并计算 Y B = a X B ( m o d p ) Y_B = a ^ {X_B} \pmod{p} YB=aXB(