最近为了研究某个极其无聊的问题,读了一些公钥加密的历史,意外地发现这段历史竟然非常有趣。尤其是RSA算法的诞生过程,被很多书写得非常励志,看得人热血澎湃。果然比起算法本身,这些背后的故事更能吸引我的兴趣。
RSA背后的三个小伙
RonRivest,RSA中的R。他在耶鲁读数学系,随后跑到斯坦福读计算机科学系研究人工智能。他所研究的课题——让机器人在没有人干预的情况下在停车场散步,在那个计算机科学系仅成立四年的年代明显太过乐观,但他依然乐此不疲。毕业后他接受MIT任教的工作机会。也许是因为多年积累的科研氛围,他对新技术非常兴奋,大量阅读前沿文献。与此同时,他认为迷人的理论应该与现实世界相结合,才能散发魅力,对世界有所改变,这也是他的理想。
AdiShamir,RSA中的S。他是以色列人,和Rivest一样,学数学后转计算机科学进一步深造,毕业后以访问学者的身份来到MIT。他很聪明,学习能力超强。虽然他在数学上的造诣颇深,但起初他在算法方面的知识十分匮乏,当他接到Rivest关于算法高级课程讲授的邀请信时连连叫苦,教算法已经够呛了,还什么高级课程?给博士生讲的么?虽然如此,他还是硬着头皮前往MIT,之后很快投入到学习中,整天泡在图书馆,读了一书架关于算法的书籍,最终仅用两周便掌握了所需的知识。
这三人当时都非常年轻,二十多、三十出头的样子。他们的办公室距离很近,可以经常串门。于是故事就从一次Adleman的串门开始了。
42次的失败
公钥密码blahblahblah…不对称密码blahblahblah…单向函数blahblahblah…但是符合条件的单向函数目前没找到。我有信心找到这样的单向函数,你看你要不要和我一起试试?
这些显然不足以让早已下决心走纯理论路线的Adleman动心,对此他只是报以一个“礼貌的哈欠”。想当初选择读计算机科学,除了方便找工作,Adleman还深受马丁加德纳专栏的影响。专栏中写到的哥德尔定理让他感到惊艳,深深体会到数学之美,如今只有高斯之流方能入他的眼,眼下Rivest滔滔不绝的什么加密解密,在他看来既不高级也不好玩。
三人走火入魔一般,吃饭聊、喝酒聊,甚至去滑雪度假也不忘讨论这件事。Shamir就在滑雪的时候想到了一个绝妙的点子,以至于把滑雪板都落在了身后。当他意识到这一点回头去取时,却又不幸忘记了那个一闪而过的点子。相对来说给他们启发的Diffie要幸运一些,他在下楼买可乐的时候同样让灵感溜走,好在上楼的过程中他又想起来了,这个差点溜走的灵感正是Rivest那天手中所拿论文的核心思想,为RSA算法奠定了基础。
起初Rivest和Shamir构造出来的算法很快就能被Adleman破解,二人受到强烈的打击,以至于有一阶段他们走向了另一个极端,试图证明Diffie他们的想法根本就是不靠谱的。但慢慢的,破解变得没那么容易,特别是他们的第32号方案,Adleman用了一晚上才找出漏洞,这让他们感觉胜利就在眼前。
就这样,Rivest和Shamir先后抛出了42个方案,虽然这42个全部被Adleman击破,不过他们的努力并不算白费,至少指出了42条错误的路线。
算法的诞生与命名
1977年四月,Rivest和其余两人参加了犹太逾越节的Party,喝了些酒。到家后Rivest睡不着,随手翻了翻数学书,随后一个灵感逐渐清晰起来。他大气不敢出一口,冷静下来连夜整理自己的思路,一气呵成写就了一篇论文。次日,Rivest把论文拿给Adleman,做好再一次徒劳的心理准备,但这一次Adleman认输了,认为这个方案应该是可行的。
按照惯例,Rivest按姓氏字母序将三人的名字署在论文上,也就是Adleman、Rivest、Shamir,但Adleman总觉得自己贡献微乎其微,不过是泼泼冷水,不至于还要署个名,便要求Rivest拿掉自己的名字。在Rivest的坚持下,他最终要求至少把自己的名字放到最后。也正因为如此,RSA叫做RSA没有被叫做ARS。虽然Adleman一开始认为这注定是他诸多论文中最不起眼的一篇,RSA走红后他还是调侃说,越来越觉得ARS更顺口了。
之后
之后的历史我们就非常熟悉了,他们的论文受到各方赞赏。Rivest还把论文发给马丁加德纳一份,加德纳非常感兴趣,把Rivest请到家里面谈,进一步了解RSA算法。当然此前,加德纳还不忘先表演一个扑克魔术。这次会面也促成后来马丁加德纳在他著名的专栏刊登RSA算法及破解奖金的故事。至于R、S、A这三人,依然保持着友谊,还成立了RSA公司,赚了一大笔钱。