离散对数问题是原根给出的"模幂的逆问题":给定原根 g 与 a,求 x 使 gx≡a(modp)。幂运算容易、求对数困难,这一不对称性与大数分解共同支撑 Diffie–Hellman、ElGamal 等公钥密码的安全性。
问题表述
设 p 为素数,g 为模 p 的原根。对任意 p∤a,存在唯一 x∈{1,…,p−1} 使 gx≡a(modp),记 x=logga(即原根中的 indga)。
大步小步算法(BSGS)
取 m=⌈p⌉,把 x=im+j 写成 0≤i<m、0≤j<m。小步:预计算 gj(j=0,…,m−1)存入查找表;大步:依次检验 a(g−m)i 是否等于某个 gj,命中即得 x=im+j。时间与空间均为 O(p)。
其他算法
- Pollard ρ 离散对数:O(p) 时间、O(1) 空间
- 指数积分法(index calculus):对 Fp× 亚指数时间,但对椭圆曲线群不适用(见椭圆曲线)
示例
解 2x≡7(mod29)(2 是模 29 的原根,214≡−1)。m=⌈29⌉=6:
- 小步:2j≡1,2,4,8,16,3(j=0,…,5)
- 2−6≡5(mod29),大步:7⋅50=7,7⋅5≡6,7⋅52≡1=20 → i=2,j=0,x=12
验证:212=4096=141⋅29+7≡7(mod29)。
应用
离散对数问题与大数分解同属经典困难问题;Shor算法可在量子计算机上多项式时间求解它,故 ECC、Diffie–Hellman 均面临后量子威胁。