离散对数问题之 Pohlig-Hellman algorithm
introduction
在解决非广义离散对数问题(DLP) g x = h   m o d   p g^x=h\bmod p gx=hmodp的时候,我们要求p是一个(大)素数以至于能抵抗CRT的攻击,但考虑到欧拉定理在p群中的作用,任意一个元素的阶必定整除p-1,而p-1必定是合数,PHA算法考虑p-1的质数唯一分解.
Pohlig-Hellman Algorithm 从任意阶到素数幂阶
Theorem 1: 令G是一个群,g ∈ \in ∈G满足ord(g)= q e q^e qe其中q为某个奇质数,假设我们能在 O ( S q e ) O(S_{q^e}) O(Sqe)步中解决上述DLP问题(粗略地说枚举取 S q e = q e S_{q^e}=q^e Sqe=qe,碰撞取 S q 0.5 e S_{q^{0.5e}} Sq0.5e),那么当 o r d ( g ) = N = q 1 e 1 q 2 e 2 q 3 e 3 … q t e t ord(g)=N=q_1^{e_1}q_2^{e_2}q_3^{e_3}\ldots q_t^{e_t} ord(g)=N=q1e1q2e2q3e3…qtet时,我们可以解决DLP问题在 O ( S q 1 e 1 + S q 2 e 2 + … + S q t e t + L o g N ) O(S_{q_1^{e_1}}+S_{q_2^{e_2}}+\ldots+S_{q_t^{e_t}}+LogN) O(Sq1e1+Sq2e2+…+Sqtet+LogN)步中.
Proof: 我们第一步令 g i = g N / q i e i , h i = h N / q i e i g_i=g^{N/q_i^{e_i}}, h_i=h^{N/q_i^{e_i}} gi=gN/qiei,hi=hN/q