DLP——Pohlig Hellman

Pohlig Hellman Algorithm

分析

  • 在 DLP 问题中,如 β ≡ α a ( m o d p ) \beta\equiv\alpha ^a \pmod p βαa(modp),其中 ( α ∈ Z p ∗ (\alpha\in \mathbb{Z_p^*} (αZp是一个生成元 ) ) ),求 a ≡ I n d α β ( m o d ϕ ( p ) ) a\equiv Ind_\alpha\beta\pmod {\phi(p)} aIndαβ(modϕ(p))是很困难的
  • 但考虑CRT,若 ϕ ( p ) = ∏ i = 1 k p i c i , p i c i \phi(p)=\prod_{i=1}^k p_i^{c_i},p_i^{c_i} ϕ(p)=i=1kpici,pici ϕ ( p ) \phi(p) ϕ(p)的素数幂,则如果可以求出 a m o d    p 1 c 1 a m o d    p 2 c 2 ⋮ a m o d    p k c k \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 轻易求出 a m o d    p a\mod p amodp
  • 如何求出上述每一个 x = a m o d    q c x=a\mod q^c x=amodqc ( q c q^c qc为上述素数幂)?
  • 将 x 记为 q 进制,即 x = ∑ i = 0 c − 1 a i q i x=\sum_{i=0}^{c-1}a_iq^i x=i=0c1aiqi,则只需求出 { a i } \{a_i\} {ai}
  • 已知 β ≡ α a ( m o d p ) \beta\equiv\alpha ^a \pmod p βαa(modp),如何构造出含有 a i a_i ai的方程?
    • 首先求 a 0 a_0 a0
      • β ≡ α a ( m o d p ) \beta\equiv\alpha ^a \pmod p βαa(modp)推导如下:
        β = α a = α a 0 + ∑ i = 1 c − 1 a i q i = α a 0 + K q \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
      • 如何消去 K q Kq Kq,保留 a 0 a_0 a0? β ? q = ( α a 0 + K q ) ? q = α a 0 ? 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)时,有 β n q = α a 0 n q + K ϕ ( p ) = α a 0 n q \beta^{\frac{n}{q}}=\alpha^{\frac{a_0n}{q}+K\phi(p)}=\alpha^{\frac{a_0n}{q}} βqn=αqa0n+Kϕ(p)=αqa0n
      • 而后确定 a 0 a_0 a0就很简单了, 0 ≤ a i ≤ q − 1 0\leq a_i\leq q-1 0aiq1范围不大
    • 类似地,令 β j = α ∑ i = j c − 1 a i q i = β α − ( a 0 + a 1 q + ⋯ + a j − 1 q j − 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 = α a j q j + K q j + 1 \beta_j=\alpha^{a_jq^j+Kq^{j+1}} βj=αajqj+Kqj+1
    • 于是, β j n q j + 1 = α a j n q + K ϕ ( p ) = α a j n q \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
    • β j n q j + 1 = α a j n q \beta_j^{\frac{n}{q^{j+1}}}=\alpha^{\frac{a_jn}{q}} βjqj+1n=αqajn
    • 同理可以将 a i , i = 1 , 2 , ⋯   , c − 1 a_i,i=1,2,\cdots,c-1 aii=1,2,,c1求出,对每个 i i i可以用Shanks算法在 O ( q ) O(\sqrt q) O(q )时间内求出
  • x = a m o d    q c = ∑ i − 0 c − 1 a i q i x=a\mod q^c=\sum_{i-0}^{c-1}a_iq^i x=amodqc=i0c1aiqi
  • 根据所求得的各个 x,利用CRT求出 a
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值