求离散对数问题——指数演算法
离散对数(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
a,0≤a≤n−1,满足
α
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
αxj≡p1a1jp2a2j⋯pBaBj(modp),1≤j≤C
这些式子等价于
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
xj≡a1jlogαp1+a2jlogαp2+⋯+aBjlogαpB(modp−1),1≤j≤C
因为
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)
aij(1≤i≤B,1≤j≤C)我们都是可以得到的。这样根据线性同余方程组可以解出
log
α
p
i
\log_{\alpha}p_{i}
logαpi(
1
≤
i
≤
B
1\le i\le B
1≤i≤B)的值。
1.2 求解 log α β \log_{\alpha}\beta logαβ
选择一个随机数
r
r
r(
1
≤
s
≤
p
−
2
1\le s \le p-2
1≤s≤p−2),计算
γ
=
β
α
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}
βαs≡p1c1p2c2⋯pBcB(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αβ+s≡c1logαp1+c2logαp2+⋯+cBlogαpB(modp−1)
这个式子中,除了
log
α
β
\log_{\alpha}\beta
logαβ之外,其余数都已知,很容易求解出结果。
2、 例子
参考书籍:Stinson D , 斯廷森, 冯登国. 密码学原理与实践[M]. 电子工业出版社, 2009.