的离散对数是相同的发现在给出,Ç,和Ñ。a b = c mod N a c N
我想知道这属于什么复杂度组(例如,对于经典计算机和量子计算机),以及哪种方法(即算法)最适合完成此任务。
上面的Wikipedia链接并没有给出非常具体的运行时。我希望找到最类似的方法来找到这种方法。
的离散对数是相同的发现在给出,Ç,和Ñ。a b = c mod N a c N
我想知道这属于什么复杂度组(例如,对于经典计算机和量子计算机),以及哪种方法(即算法)最适合完成此任务。
上面的Wikipedia链接并没有给出非常具体的运行时。我希望找到最类似的方法来找到这种方法。
Answers:
简短的答案。
如果我们制定离散对数问题的适当决策问题版本,我们可以证明它属于复杂度类别NP,coNP和BQP的交集。
离散日志的决策问题版本。
离散对数问题通常被表述为函数问题,将整数的元组映射到另一个整数。问题的表述与人们倾向于考虑的复杂性类P,BPP,NP等不兼容,后者仅涉及决策(是/否)问题。我们可以考虑离散对数问题的决策问题版本,该版本实际上等效:
离散日志(决策问题)。给定素数,生成器乘以模的倍数,整数和上限的乘积,确定是否存在这样。一个∈ Ž × Ñ Ñ 0 < ç < Ñ b ∈ Ñ 1 ⩽ 大号⩽ b 一个大号 ≡ Ç
如果我们可以有效地解决它,这将使我们能够通过二进制搜索来实际计算对数a(c)模N。然后我们可能会问这个问题属于哪个复杂度类别。请注意,我们已将其表述为一个承诺问题:我们可以通过为素数和生成器的条件,将其扩展到决策问题,但添加这些限制适用的条件问题的任何“是”实例。一个∈ ž × Ñ
离散日志位于BQP中。
使用Shor的算法来计算离散对数(在量子计算机上用于质因数分解和离散对数的多项式时间算法),我们可以轻松地在BQP中包含离散对数。(要测试实际上是一个生成器,我们可以在同一篇论文中使用Shor的阶数查找算法,该算法是离散对数算法的基础,以查找和的阶。与比较。)一个ñ - 1
离散日志位于NP∩coNP中。
如果实际上是为素数并且是生成器的情况,则对于决策问题的“是”或“否”实例而言,足够的证书是唯一整数使得。因此足以证明我们可以证明和上的条件是否成立。继臂章的了一份关于密码的复杂性,如果两者的情况下是素数,是发电机,那么它的情况是,
一个∈ Ž × Ñ 0 ⩽ 大号< ñ - 1 一大号 ≡ Ç一个Ñ Ñ 一个∈ Ž × Ñ ř ñ - 1 ≡ 1Z × N N − 1
证书上的约束和既保持将是首要因素清单将,这将使我们能够测试上述一致性约束。(如果愿意,我们可以使用AKS测试来检验每个是否为素数,并通过尝试仅查找那些素数的素数功率因式分解来测试它们是否都是的素数。)a q 1,q 2,… N − 1 q j N − 1 N − 1
证书,关于约束之一或失败将是一个整数,其将,以使得。在这种情况下,不必测试的素数;它立即暗示的阶次小于,因此仅当不能为素数时,它才是乘法群的生成器。一个q ñ - 1 一(ñ - 1 )/ q ≡ 1q a N − 1 N
就我所知,在一般情况和最坏情况下,尼尔·德·波德拉普(Niel de Beaudrap)的答案都是正确的。
但是,在仅具有小的素数的情况下,Pohlig-Hellman算法可以找到时间的对数。因此,对于这种情况,离散日志问题在。这样,当加密协议取决于此问题的难度时,重要的是选择模数,以使具有较大的质因数。O (l o g 2(N ))P N N − 1