分解因数与计算离散对数的算法
在密码学领域,分解两个大素数的乘积以及在特定群中计算离散对数等数论问题,通常被认为是具有挑战性的难题。这些问题的难度在渐近意义上的概念,对于在实际中如何设置安全参数以达到特定的安全级别,提供的信息有限。合理设置安全参数对于基于这些问题构建的密码系统在现实世界中的部署至关重要。设置过低可能使密码系统易受攻击,而设置过高虽能保证安全,但会降低诚实用户的效率。不同数论问题的相对难度,也会影响选择哪些问题作为构建密码系统的基础。
在公钥密码体制中,由于暴力搜索可能并非解决问题的最佳算法,使用密钥长度为 (n) 并不一定能抵御运行时间为 (2^n) 的攻击,这与私钥密码体制中对现有分组密码的最佳攻击复杂度接近暴力搜索形成对比。因此,公钥密码体制中使用的密钥长度通常比私钥密码体制中的长得多。
接下来,我们将探讨几种分解因数和计算离散对数的算法,尽管它们不是多项式时间算法,但性能远优于暴力搜索。
分解因数算法概述
假设 (N = pq) 是两个不同素数 (p) 和 (q)((p < q))的乘积,且 (p) 和 (q) 长度均为 (n),即 (n = Θ(\log N))。我们会经常使用中国剩余定理,该定理表明 (Z_N \simeq Z_p × Z_q) 且 (Z_N^ \simeq Z_p^ × Z_q^*),同构函数为 (f(x) = ([x \bmod p ], [x \bmod q ]))。
回顾试除法,它是一种简单的暴力分解方法,能在 (O(N^{1/2} \cdot polylog(N))) 时间内找到 (N) 的一个因数,这是一个指数时间算法。下面介绍三种性能更好的分解算法:
超级会员免费看
订阅专栏 解锁全文
18

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



