DLP——Pohlig Hellman

Pohlig Hellman算法分析
博客围绕Pohlig Hellman算法展开分析。在DLP问题中求a≡Indαβ(modϕ(p))困难,借助CRT,若ϕ(p)可分解为素数幂乘积,可先求amodqc,将其记为q进制,通过构造含ai的方程,利用Shanks算法求出ai,最后根据CRT求出a。

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)}aIndαβ(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} aaamodp1c1modp2c2modpkck则可依据 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=0c1aiqi,则只需求出{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=1c1aiqi=α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-10aiq1范围不大
    • 类似地,令β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=jc1aiqi=βα(a0+a1q++aj1qj1),则有β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-1aii=1,2,,c1求出,对每个iii可以用Shanks算法在O(q)O(\sqrt q)O(q)时间内求出
  • x=amod  qc=∑i−0c−1aiqix=a\mod q^c=\sum_{i-0}^{c-1}a_iq^ix=amodqc=i0c1aiqi
  • 根据所求得的各个 x,利用CRT求出 a
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值