离散对数问题的算法与中国剩余定理
1. 离散对数问题的难度差异
离散对数问题(DLP)在不同的群中求解难度不同。在加法群 $F_p$ 中,对于同余式 $x \cdot g \equiv h \pmod{p}$,可以使用扩展欧几里得算法计算 $g^{-1} \pmod{p}$,并令 $x \equiv g^{-1} \cdot h \pmod{p}$,该算法的时间复杂度为 $O(\log p)$,是线性时间算法。因此,$F_p$ 加法群中的 DLP 不适合作为密码学中的单向函数。
而在乘法群 $F_p^ $ 中,求解 DLP 的最佳通用算法是亚指数级的。对于椭圆曲线群,离散对数问题被认为比 $F_p^ $ 中的 DLP 更难。若椭圆曲线群有 $N$ 个元素,求解 DLP 的最佳已知算法需要 $O(\sqrt{N})$ 步,即目前求解椭圆曲线离散对数问题(ECDLP)需要指数级时间。
2. Shanks 的碰撞算法
2.1 暴力算法的时间复杂度
设 $G$ 是一个群,$g \in G$ 是阶为 $N$ 的元素(即 $g^N = e$,且 $g$ 的任何更小正幂都不等于单位元 $e$)。对于离散对数问题 $g^x = h$,可以通过列出 $g^x$($x = 0, 1, 2, \cdots, N - 1$)的值来求解,每一步是与 $g$ 相乘,该算法的时间复杂度为 $O(N)$。
2.2 Shanks 的 Babystep–Giantstep 算法
设 $G$ 是一个群,$g \in G$ 是阶为 $N \geq 2$ 的元素,该算法可在 $O(\sqrt{N} \cdot
超级会员免费看
订阅专栏 解锁全文
1万+

被折叠的 条评论
为什么被折叠?



