我们现在差不多已经准备好来介绍这些时钟是如何用来在网上发送秘密讯息的了。
当在一家网站上购物时,你的电脑会利用网站公开发布的时钟计数器把你的信用卡号码加密,因此,网站需要告诉电脑这个时钟上有多少个小时。这便是电脑接收到的2个数字中的第一个。我们将该数字称为N 。在前文提到的鲍伯的足球服网站的例子中,该数字为126 619。此外,你的电脑还需要另一个密匙数字进行相应的运算,我们将这一数字称为E 。信用卡号码C 的加密方式,便是在N 小时的时钟计算器上求出C 的E 次幂,从而得到一个加密后的数字C E(模N),这个数字便是你的电脑发送到网站的数字。
可是,网站要如何破解这个数字呢?费马的质数秘诀便是其中的关键。假设N 是一个质数时钟。(稍后我们就会发现该数字还不够安全,但是,它仍能帮助我们理解接下来要讲的内容。)如果我们将数字C E连续相乘足够多的次数,数字C 便会神奇般地重复出现。但是,我们到底需要把C E相乘多少次(D )呢?换句话说,在一个p 小时的时钟上,这样的运算——(C E) D = C 何时才能成立呢?
当然,如果E·D=p,这一点自会成立。但p 是质数,因此上述情况不可能存在。此时,只要继续乘下去,就一定会遇到另外一个这样的时刻,使数字C 重新出现。当我们把幂数提高至2(p-1)+1时,信用卡号码便再次出现。将幂数提高至3(p-1)+1时,该号码则会再次出现。因此,要破解该号码,我们需要找到一个数字D,使E·D =1(模(p-1))。这个公式解决起来就简单多了。麻烦的是,由于E 和p 都是公开的数字,因此对黑客来说,寻找到解码数字D 也不是一件难事。为了更加安全地传输信息,我们必须借助于欧拉的一个发现:采用p·q 小时的时钟,而非p 小时的时钟。
如果把时间C 放在p·q 个小时的一个时钟上,那么多少个C 相乘后才能重新变成C 呢?欧拉发现,(p-1)·(q-1) 步后,这一模式才重复出现。因此,要回到初始时间,就需要计算出C 的(p-1)·(q-1) +1次幂,或k ·(p-1)·(q-1) +1次幂,其中k 为该模式的重复次数。
现在我们知道,要在一只p·q 小时的时钟上破解C E的信息,必须找到一个解码数字D,使得E·D =1(模((p-1)·(q-1))),因此我们必须在一只秘密的有(p-1)·(q-1) 个小时的时钟计算器上进行运算。黑客只知道数字N 和E,如果他能找到这种秘密时钟,就必须要破解出其中的秘密质数p 和q 。因此,破解互联网密码的问题就转换为破解数字N 的组成质数问题。正如前文讲到的像在网上掷硬币那样的例子时,当数字足够大时,要破解出其中的源质数几乎是不可能完成的任务。
现在我们来看一下互联网密码的执行过程,但是我们需要把p 和q 设定为很小的数值,以便更容易地弄明白接下来的事情。假设鲍伯为其足球服网站所选择的质数为3和11,那么,消费者在为信用卡号码加密的过程中所需要使用的公开时钟计算器的小时数应为33。鲍伯不会公开质数3和11,因为这2个数字是破解讯息的关键,但他会公布33这个数字,因为该数字代表了他的公共时钟计数器上的小时数。而在鲍伯网站上所公布的第2条资讯则是解码数字E ——假定该数字为7。任何一位从鲍伯网站购买球服的顾客都会做几乎相同的事情:在一个33小时的时钟计数器上计算出信用卡号码的7次方。
假设,一名最早的信用卡使用者访问了鲍伯的足球服网站,而且他的信用卡号是2。那么,在一个33个小时的时钟计算器上计算2的7次方,得出的结果是29。
要完成以上计算,这里有一个聪明的方法。首先,把若干个2相乘:22=4,23=8,24=16,25=32。随着我们继续计算下去,时钟上的时针会继续在表盘上转动,当我们算到2的6次方时,时针的转动将超过一整圈。此时,借助于一个小技巧,我们就能使时针看上去像是往回转,而非继续按顺时针方向转下去。我们只需把一个33小时时钟计数器上的32点称为-1点。然后,当我们算到25=32时,接下来的两次乘法则可以用-1替换32,最后便会得出-4,即29点。这样,我们便免于继续计算2的7次方,得出128,然后再用该数除以33求其余数。对非常大的数字来说,这种算法对于追求效率的计算机运算来说则是十分宝贵的。
图 4-17 在一个33小时的时钟计数器上算2的幂数
那么,我们如何确保顾客的加密号码29是安全的呢?毕竟,一名黑客能在虚拟空间中拦截到这个号码,并能轻易获取到鲍伯的公开密匙,包括时钟计数器的小时数33及计算卡号7次方的指示说明。因此,要破解出该号码,黑客要做到的就是找到一个数字,使其在33小时的时钟计数器中求7次方就可得到数字29。(www.daowen.com)
毫无疑问,这一点并非那么容易。即使是普通的数学运算,求某个数的平方轻而易举,但反过来确定一个数的平方根则很困难。在时钟计数器上进行幂数的计算更是难上加难。由于运算结果的大小和你开始算起的数字毫无关联,因此,在寻觅的过程中,你很快就会忘记你的出发点。
在上述的例子中,我们采用的数字都很小,因此,黑客可以通过尝试每一种可能的情况进而找到最后的答案。但是,在现实情况中,网站使用的时钟的小时数都是超过100位的数字,因此,通过穷举搜索是不可能成功的。这时候你可能会想,如果在这个33小时的时钟计数器上解决这个问题都如此艰难的话,为何所有互联网贸易公司都能重新获得消费者的信用卡号码呢?
欧拉有一个更加通用的费马小定理的版本,它能确保神奇解码数字D 的存在。鲍伯藉此便可以将加密的信用卡数字相乘D 次后就可得到最初的信用卡号码。但是,只有在知道秘密质数p 和q 的情况下,你才能算出D 的数值。掌握这两个质数便成为解开这一互联网密码秘密的关键所在,因为我们必须在秘密时钟计数器上解决下面的这个问题:
E·D =1(模((p-1)·(q-1)))
当我们把所有数字套进去以后,需要解出以下等式:
7·D =1(模(2×10))
也就是要找出这样一个数字,它乘以7再除以20后可得余数1。D =3时可使其成立,因为7×3=21=1(模20)。
如果我们求加密后信用卡号码的3次方,那么,原来的卡号便重新出来:
293=2(模33)
要从加密信息中重新找到信用卡密码需要知道两个秘密质数p 和q 的值,因此,任何想要破解互联网密码的黑客都需要找到一种方式,帮助他们求出数字N 的源质数。每一次当我们从网上购买一本书或下载一首歌时,你都在借助于质数的这些神奇属性来保护自己的信用卡账户。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。