求离散对数问题——指数演算法

求离散对数问题——指数演算法

离散对数(DLP)问题:设有群 ( G , ⋅ ) (G,\cdot) (G,) α ∈ G \alpha \in G αG是一个 n n n阶元素。给定 β ∈ < α > \beta \in \left< \alpha \right> βα,找到指数 a , 0 ≤ a ≤ n − 1 a,0\le a\le n-1 a0an1,满足
α a = β \alpha ^{a} =\beta αa=β
这时 a a a也表达成: a = log ⁡ α β a=\log_{\alpha}\beta a=logαβ.

前面介绍的求离散对数问题的算法(小步大步算法(BSGS)求解离散对数问题Pohlig-Hellman算法求解离散对数问题Pollard ρ \rho ρ 算法求解离散对数问题、)都可以应用到任何循环群。这篇介绍的指数演算法只能用于计算 Z p ∗ \mathbb{Z}_{p}^* Zp中的离散对数问题(特别的,可以改进到适用 F 2 n ∗ \mathbb{F}_{2^{n}}^* F2n上的离散对数问题)。所以以下讨论是在群 Z p ∗ \mathbb{Z}_{p}^* Zp中展开的。

1、算法原理

指数演算分为两步:第一步预计算,第二步求解离散对数。

1.1预计算

假设我们事先取好一组由“小”素数组成的因子基 B = { p 1 , p 2 , ⋯   , p B } B=\lbrace p_{1},p_{2},\cdots,p_{B}\rbrace B={p1,p2,,pB},其中 p i p_{i} pi都是小素数。不仅如此,我们还找到了 C C C个模 p p p的同余方程:
α x j ≡ p 1 a 1 j p 2 a 2 j ⋯ p B a B j ( m o d p ) , 1 ≤ j ≤ C \alpha ^{x_{j}}\equiv p_{1}^{a_{1j}} p_{2}^{a_{2j}}\cdots p_{B}^{a_{Bj}}\pmod{p},1\le j\le C αxjp1a1jp2a2jpBaBj(modp),1jC
这些式子等价于
x j ≡ a 1 j log ⁡ α p 1 + a 2 j log ⁡ α p 2 + ⋯ + a B j log ⁡ α p B ( m o d p − 1 ) , 1 ≤ j ≤ C x_{j}\equiv a_{1j}\log_{\alpha}p_{1}+a_{2j}\log_{\alpha}p_{2}+\cdots+a_{Bj}\log_{\alpha}p_{B}\pmod{p-1},1\le j \le C xja1jlogαp1+a2jlogαp2++aBjlogαpB(modp1),1jC
因为 p i p_{i} pi都是小素数,我们可以将 α x j \alpha ^{x_{j}} αxj在因子基上做分解,所以 a i j ( 1 ≤ i ≤ B , 1 ≤ j ≤ C ) a_{ij}(1\le i\le B,1\le j \le C) aij1iB,1jC我们都是可以得到的。这样根据线性同余方程组可以解出 log ⁡ α p i \log_{\alpha}p_{i} logαpi 1 ≤ i ≤ B 1\le i\le B 1iB)的值。

1.2 求解 log ⁡ α β \log_{\alpha}\beta logαβ

选择一个随机数 r r r 1 ≤ s ≤ p − 2 1\le s \le p-2 1sp2),计算
γ = β α s   m o d   p \gamma = \beta \alpha^{s}\bmod{p} γ=βαsmodp
然后在因子基 B B B中分解 γ \gamma γ。如果分解成功,得到
β α s ≡ p 1 c 1 p 2 c 2 ⋯ p B c B ( m o d p ) \beta \alpha^{s} \equiv p_{1}^{c_{1}}p_{2}^{c_{2}}\cdots p_{B}^{c_{B}}\pmod{p} βαsp1c1p2c2pBcB(modp)
等价于
log ⁡ α β + s ≡ c 1 log ⁡ α p 1 + c 2 log ⁡ α p 2 + ⋯ + c B log ⁡ α p B ( m o d p − 1 ) \log_{\alpha}\beta + s \equiv c_{1}\log_{\alpha}p_{1}+c_{2}\log_{\alpha}p_{2}+\cdots+c_{B}\log_{\alpha}p_{B}\pmod{p-1} logαβ+sc1logαp1+c2logαp2++cBlogαpB(modp1)
这个式子中,除了 log ⁡ α β \log_{\alpha}\beta logαβ之外,其余数都已知,很容易求解出结果。

2、 例子

在这里插入图片描述在这里插入图片描述

参考书籍:Stinson D , 斯廷森, 冯登国. 密码学原理与实践[M]. 电子工业出版社, 2009.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值