Pohlig Hellman Algorithm
分析
- 在 DLP 问题中,如β≡αa(modp)\beta\equiv\alpha ^a \pmod pβ≡αa(modp),其中(α∈Zp∗(\alpha\in \mathbb{Z_p^*}(α∈Zp∗是一个生成元))),求a≡Indαβ(modϕ(p))a\equiv Ind_\alpha\beta\pmod {\phi(p)}a≡Indαβ(modϕ(p))是很困难的
- 但考虑CRT,若ϕ(p)=∏i=1kpici,pici\phi(p)=\prod_{i=1}^k p_i^{c_i},p_i^{c_i}ϕ(p)=∏i=1kpici,pici为ϕ(p)\phi(p)ϕ(p)的素数幂,则如果可以求出amod  p1c1amod  p2c2⋮amod  pkck \begin{aligned} a&\mod p_1^{c_1}\\ a&\mod p_2^{c_2}\\ &\vdots\\ a&\mod p_k^{c_k} \end{aligned} aaamodp1c1modp2c2⋮modpkck则可依据 CRT 轻易求出amod  pa\mod pamodp
- 如何求出上述每一个x=amod  qcx=a\mod q^cx=amodqc (qcq^cqc为上述素数幂)?
- 将 x 记为 q 进制,即x=∑i=0c−1aiqix=\sum_{i=0}^{c-1}a_iq^ix=∑i=0c−1aiqi,则只需求出{ai}\{a_i\}{ai}
- 已知β≡αa(modp)\beta\equiv\alpha ^a \pmod pβ≡αa(modp),如何构造出含有aia_iai的方程?
- 首先求a0a_0a0
- 由β≡αa(modp)\beta\equiv\alpha ^a \pmod pβ≡αa(modp)推导如下:
β=αa=αa0+∑i=1c−1aiqi=αa0+Kq \begin{aligned} \beta=\alpha^a=\alpha^{a_0+\sum_{i=1}^{c-1}a_iq^i}=\alpha^{a_0+Kq} \end{aligned} β=αa=αa0+∑i=1c−1aiqi=αa0+Kq - 如何消去KqKqKq,保留a0a_0a0?β?q=(αa0+Kq)?q=αa0?q+K? \begin{aligned} \beta^{\frac{?}{q}}=(\alpha^{a_0+Kq})^{\frac{?}{q}}=\alpha^{\frac{a_0?}{q}+K?} \end{aligned} βq?=(αa0+Kq)q?=αqa0?+K?
- 显然,当?为n=ϕ(p)n=\phi(p)n=ϕ(p)时,有βnq=αa0nq+Kϕ(p)=αa0nq \beta^{\frac{n}{q}}=\alpha^{\frac{a_0n}{q}+K\phi(p)}=\alpha^{\frac{a_0n}{q}} βqn=αqa0n+Kϕ(p)=αqa0n
- 而后确定a0a_0a0就很简单了,0≤ai≤q−10\leq a_i\leq q-10≤ai≤q−1范围不大
- 由β≡αa(modp)\beta\equiv\alpha ^a \pmod pβ≡αa(modp)推导如下:
- 类似地,令βj=α∑i=jc−1aiqi=βα−(a0+a1q+⋯+aj−1qj−1)\beta_j=\alpha^{\sum_{i=j}^{c-1}a_iq^i}=\beta\alpha^{-(a_0+a_1q+\cdots+a_{j-1}q^{j-1})}βj=α∑i=jc−1aiqi=βα−(a0+a1q+⋯+aj−1qj−1),则有βj=αajqj+Kqj+1 \beta_j=\alpha^{a_jq^j+Kq^{j+1}} βj=αajqj+Kqj+1
- 于是,βjnqj+1=αajnq+Kϕ(p)=αajnq \beta_j^{\frac{n}{q^{j+1}}}=\alpha^{\frac{a_jn}{q}+K\phi(p)}=\alpha^{\frac{a_jn}{q}} βjqj+1n=αqajn+Kϕ(p)=αqajn
- 即βjnqj+1=αajnq\beta_j^{\frac{n}{q^{j+1}}}=\alpha^{\frac{a_jn}{q}}βjqj+1n=αqajn
- 同理可以将ai,i=1,2,⋯ ,c−1a_i,i=1,2,\cdots,c-1ai,i=1,2,⋯,c−1求出,对每个iii可以用Shanks算法在O(q)O(\sqrt q)O(q)时间内求出
- 首先求a0a_0a0
- x=amod  qc=∑i−0c−1aiqix=a\mod q^c=\sum_{i-0}^{c-1}a_iq^ix=amodqc=∑i−0c−1aiqi
- 根据所求得的各个 x,利用CRT求出 a