数学与互联网安全2
公匙系统
1970年代中期,人们发现了一种全新的编码方式(也有人认为其实早就有人发现了),这是密码学的一个里程碑式的发展。传统的密码学里,需要共享一段加密信息的双方会设置一个系统,并需要完成一把钥匙的交换。直观上我们可以理解为这把钥匙将一段秘密发送的信息锁起来。当接收信息的人有一把一模一样的钥匙时,他就可以解开这段被锁起来的信息。因此,在单匙系统里,加密和解密的双方有一把同样的钥匙。
还有一个很常用的公匙系统是由Taher Elgamal在1984年提出来的。这套系统主要用群论和复杂性的知识来保证安全。
对RSA和ElGamal(也包括其它系统)而言,一个很有用的概念就是同余。如果两个整数a和b被一个大于或等于2的正整数m除以后,得到相同的余数,那么我们就说a和b同余,记为
此时,b-a被m除的余数是0。以下是一些例子
对于模m,我们总共可以将一对同余数右边的那个数替换成介于0与m-1之间的一个整数。比如,上述最后一对同余数,我们可以将23替换成10。在以下表达式里,我们可以很容易确定“?”的值:
办法是计算
类似于这样的寻找k的问题被称为离散对数问题。当模非常大的时候,人们还不知道有什么方法比穷举法快很多。而对于解决离散对数问题和一些在设计公匙系统中用到的算法的复杂度,人们还知之甚少。一些基于NP-complete问题而建的系统崩溃了,而一些基于复杂度并没有完全搞清楚的问题而建的系统反而运行良好。下面我们将简单讨论一下被广泛用以衡量互联网安全性能的RSA系统。
小测试
许多公匙加密系统人员都受到“单向函数”的启发。有些任务很容易完成,但他们的反向任务则很难,除非有特殊的附加信息。
如果你想感受一下有关复杂度的数学知识是什么以及它是如何与安全性能联系在一起的话,试试下面的例子,用一个带秒钟的表测试一下你需要花多少时间求解这些例子。
问题1:123457乘以372451等于多少?
问题2:374251的因子?(我确定除了1和它本身,还有别的因子)
你也许会发现,问题1虽然很繁琐,但是得到它的答案并不难。然而,即使你能解决问题2,你花的时间可能要比问题1多的多。大多数人甚至都没有耐心去完成最终的解答。
问题1比问题2更简单,这意味着什么?问题1要求两个数的乘积,更具体地说是是两个6位数的素数的乘积(素数是指它的因子仅有1和它本身),而问题2是要求将一个可以表示成两个素数乘积的数进行分解而得到这两个素数。(即已知s是某两个素数p与q的乘积,求解p与q.)
大部分人都认为还没有一个真正的快速算法可以在一部标准的电脑上快速地分解整数。但同时,人们也没有任何结果表明整数的分解是一个NP-complete的难题。NP-complete问题是指一类难度一样的问题,也即如果这些问题的其中一个可以被多项式级别的时间求解的话,那么所有这一类问题都是多项式时间可解的。另一方面,如果其中一个问题需要指数级别的时间求解的话,那么所有这一类问题都是指数可解的。不过,虽然很多人都认为一些问题需要指数级别的时间求解,但事实上这一点也没有人可以完全肯定。大家认为没有简单算法可以对一个大整数进行因子分解,而且直到不久前,人家也不知道究竟是否有办法用多项式级别的时间来验证一个数是否是素数。所以当Manindra Agrawal,Neeraj Kayal,和Nitin Saxena三人提出一个验证素数的多项式算法时,人们感到十分意外。现在有很多快速算法可以验证一个数是否是素数。有意思的是,其中最快的一些算法的确可以在绝大多数情况下检验素数,但偶尔也会把一个复合数误认为是素数。验证素数的多项式算法方面的进展也意味着我们有可能找到实现整数的因子分解的多项式算法。(值得一提的是,不是每个多项式算法在求解实际问题的时候都很快。而有些指数算法,例如求解线性规划的单纯型法,在求解实际问题时却十分有效。原因是实际碰到的问题并不是那些单纯型法无效的问题)
下面简单介绍一下广为人知并被广泛使用的RSA公匙密码系统。我们假设已经将一段要发送的原始信息的文字(例如英文)分成一块一块的结构,而原始信息的每一块也用一个数字
之后,再计算p和q这两个秘密的素数的乘积
其中e和n的值即是公匙。注意n是两个大素数的乘积。如果n不能分解的话,它的值对密码电文C而言毫无价值。
解密者通过以下计算来解密:
其中s和n的值即是解密者的私钥。这些值用于恢复原始信息
为什么这样计算就可以得到
其中p是素数,而a与p互素。另外一个定理是欧拉(1707-1783)提出的,它涉及到一个表示与x互素的整数个数的函数。我们记这个函数为
而且,如果x与y是互素的整数,我们有以下关系:
于是,对于不同的素数p和q,我们有
欧拉还证明了一个涉及到
其中x是一个与整数a互素的正整数。
由于RSA系统的安全性依赖于大整数的分解,使用RSA系统的公司对数学家和计算机学家提出了很多有关整数分解的难题。最近,有人分解了一个193位的数,而这在之前是被认为十分困难的。现在也有不少人悬赏可观的奖金来求解一些整数分解问题,不妨看看这个网站!
互联网已经改变了美国人以及世界各地所有人的交流方式,也改变了人们的生活。如果互联网还像人们所期望的那样继续给人们的生活带来正面影响,那么数学家也将继续成为其合作者以保证互联网的发展。