标签:ret lock 公式 bin str 密码学 find 理解 操作
离散对数问题,英文是Discrete logarithm,有时候简写为Discrete log。为什么要从离散对数问题说起?因为后面的内容中会反复使用到,因此我们希望用独立的一节分析来消除理解上的不确定性。
对数\(\log_{b}(a)\)是由John Napier发明的符号([1],[2.a],[2.b]),选择不同的基底,就有不同的对数,例如:
对数\(x=\log_{b}(a)\)等价于\(b^x=a\),给定一个已知的实数x,计算\(b^x\)是容易的,但是反之给定a和b,计算对数\(x=\log_{b}(a)\)则是难的。William Oughtred([4.a])在Napier之后发明了滑尺(Slide rule,[4.b])计算常用对数的方法。在电子计算机出现之前,计算对数依赖于Briggs首先计算的常用对数表。在电子计算机出现之前,数学上的很多难的计算都依赖于某种数学表,例如把计算乘法转换成计算加减以及查表([8])。显然查表求值也只是一种限定精度的近似值,计算自然对数和二进制对数,可以通过自然对数和二进制对数与常用对数之间的转换公式来进行:
\[
\log_{10} = \frac{\ln(x)}{\ln(10)}, \log_{10} = \frac{lb(x)}{lb(10)}
\]
如果给定整数k,b,则计算\(b^k=a\)是容易的。但是,反过来知道整数a,要精确计算出整数\(k=log_{b}(a)\)则是难的,只有少数一些特殊的情况下有办法计算(例如,计算\(9=\log_{3}3^9\)是容易的),没有通用的算法做此类计算。如果整数k,a,b使得\(b^k=a\)。则此时\(k=log_{b}(a)\)称为离散对数(Discrete logarithm, [9])。
离散对数的计算有多“难”呢?我们知道在确定性图灵机上存在多项式时间复杂度算法的问题是P(Polynomial)问题;而另一类问题,它的解(Solution)能被确定性图灵机上在多项式时间复杂度内验证,它的解能被非确定性图灵机计算出来,称为NP问题([10])。另一方面P和NP问题,都是属于决策问题(Decision Prlblem),它们等价于对应的形式语言的集合,参考上一篇:证明与计算(1):Decision Prlblem, Formal Language L, P and NP。显然有,\(P \subseteq NP\)。NP语言里最难的那组问题互相等价,统称为NP-complete(NPC)问题。
资料[10]里面提到,如果P!=NP,那么Discrete logarithm被认为是介于P和NP-complete(NPC)之间的NP问题,也称为NP-intermediate问题。
It was shown by Ladner that if P ≠ NP then there exist prlblems in NP that are neither in P nor NP-complete.[1] Such prlblems are called NP-intermediate prlblems. The graph isomorphism prlblem, the discrete logarithm prlblem and the integer factorization prlblem are examples of prlblems believed to be NP-intermediate. They are some of the very few NP prlblems not known to be in P or to be NP-complete.
这充分说明了离散对数问题符合了两个重要的特征:
索引[12]定义了Co-NP问题,它是由NP问题的补问题(i.e 将NP问题中的答案yes/no对换)的集合:
A decision prlblem X is a melber of co-NP if and only if its complement X is in the complexity class NP.
索引[13]定义了BQP问题,它是量子计算机下可以在多项式时间计算出来的决策问题的集合。
BQP (bounded-error quantum polynomial time) is the class of decision prlblems solvlble by a quantum computer in polynomial time, with an error prlblbility of at most 1/3 for all instances.
不同难度的问题细分下去属于计算复杂性理论(Computational complexity theory, [14]),我们没必要把所有的分类都记住,只要知道决策问题的不同难度,构成了不范围不同的集合,这些集合之间有对应的包含关系。
在尝试了几个不同的方式之后,我们决定直接给出下面一组预备知识:
有了这些准备,给出密码学里使用的离散对数的定义:
根据上面的难度讨论,显然:
小节注释:
[1]: History of logarithms
[2.a]: John Napier
[2.b]: Napierian logarithm
[3]: Henry Briggs
[4.a] William Oughtred
[4.b] Slide rule
[4.c]: Logarithm
[5]: Common logarithm
[6]: Natural logarithm
[7]: Binary logarithm
[8]:Quarter square multiplication
[9]: Discrete logarithm
[10]: P versus NP prlblem
[11]:How hard is fiding the discrete logarithm
[12]:Co-NP
[13]:BQP (bounded-error quantum polynomial time)
[14]: Computational complexity theory
[15.a]:Group
[15.b]: Abelian group
[15.c]:Congruence class
[15.d]:Euler‘s totient function
[16]: Multiplicative group of integers modulo n
[17] wolfram: Discrete Logarithm
--end--
标签:ret lock 公式 bin str 密码学 find 理解 操作
原文地址:https://www.cnblogs.com/math/p/discrete-log.html