关于作者
西蒙辛格出生于英国南部的萨默塞特郡,是印度旁遮普邦信徒的后裔。他在伦敦帝国理工学院学习物理,并在剑桥大学获得粒子物理学博士学位。前BBC资深制作人,其制作《地平线:费马大定理》获得英国电影学院奖,同名科普书籍成为畅销书。
关于这本书
《码书》是作者的又一心血之作,也是BBC系列话题《保密的科学》的基础。作为BBC资深制作人,作者是一个讲故事的高手,熟悉的改变世界格局的历史事件和重大战役,其实都是编码故事。
核心内容
本音频从密码学的角度重新梳理了世界历史,将密码学发展史分解为三个时代:人工时代、机械时代、智能时代。
点按以查看更大的图像,将其保存到您的手机上,或者与朋友圈分享
序
你好,欢迎每天听一本书。我是陈章鱼。我今天给你读的书叫《码书》,副标题是《解码与编码的战争》。这本书是关于密码学如何改变了人类历史的进程。
在人类历史上,无论是君王还是将军,都需要一套高效的沟通手段来治理国家、指挥军队。但是他们还有另外一个需要,那就是他们不能让敌人得到关键信息,而且他们必须尽可能的保密。
甚至在中国古代《易经》也有这样一句话:“不声张,必失臣;如果你不是秘密,你会失去生命;如果你不是秘密,你会受到伤害。换句话说,如果没有秘密,就会有危险。
在《孙子兵法》中,直接说“三军近亲不可近,赏不可厚,事不可密。”也就是说,在战争中,没有什么比刺探别人的情报和保护自己的情报更重要的了。
因此,纵观历史,权力之争、战争和硝烟的背后都隐藏着许多秘密。
历史上,无数人发挥聪明才智,努力构建更强大的安全体系,也努力突破别人的安全体系。密码学在这场旷日持久的拉锯战中应运而生。
甚至有人说历史的标点符号是用密码打出来的。密码决定着战争的胜败,也影响着历史的走向。
今天将为大家解读的这本书《码书》将详细梳理人类编解码之战。
接下来,将分为三个部分为大家解读这本书。沿着历史,我们看看密码学的三个主要时代:密码学的人工时代、机械时代和智能时代。
第一部分
我们先来看看密码学的第一个时代:手动密码时代。
虽然我们把“密码”这个词放在一起,但实际上,人类在转向“代码”之前,花了大量时间研究“秘密”。事实上,密函的历史非常悠久。然而,人们最早的想法是想办法直接隐藏信件的内容。
据记载,公元前5世纪,希腊和波斯之间爆发了一场战争。为了传递秘密信息,希腊人会把信息写在木板上,然后在木头上涂上一层蜡。收件人拿到木板后,刮掉蜡就能看到秘密信息。
希腊这边还用了一个比较独特的方法,他们会把送信人的头发剃掉,在送信人的头皮上写下秘密信息,然后在送信人的头发长出来之后派他去送信,然后在收信人能看到秘密信件的地方剃光头发。
这种直接掩盖信息的方法被称为“隐藏法”。这是最早的加密方法,一直使用到现代。如今,我们在看谍战片的时候,经常会看到间谍用隐形的方法传递情报,比如用隐形墨水写信,或者把信息塞进胶囊,让特工吞下去。
隐藏的寿命长意味着这种方法真的很安全。然而,隐藏方法有一个根本的弱点。一旦敌人搜索得更仔细,情报就会暴露。就像玩捉迷藏一样。只要对方认真寻找,总能找到一些线索。
于是,人们开始思考另一种方法。有没有可能即使敌人发现了白纸黑字的信息,他还是听不懂我在说什么?
沿着这个思路,各种密码应运而生。
手动密码时代,密码种类繁多,但原则上基本可以分为两类,一类是“移位法”,另一类是“代换法”。
最简单的移位方法就是用后面的字母表示每个字母,这样A就变成了B,B就变成了C,像“get”这样的拼音DEDAO就变成了EFEBP。如果别人看到了,会觉得没有意义,不能理解它的意思。传说这种方法最早是凯撒发明的,所以用移位法加密也被称为“凯撒密码”。
另一种方法是替代法。随机匹配字母,然后用匹配的字母替换邮件中的原始字母。比如我们可以给A指定V,给b指定T,因为代换规则是人指定的,所以更灵活,更难破解。
然而,位移法和替代法在本质上都有一个弱点。也就是说,这些拼音字符是由字母组成的,每个字母的出现频率是不同的。比如在英语中,字母A和E的出现频率远高于字母X和z,所以无论用什么样的方法移位或者替换,只要用一套加密方案进行加密,通过统计密文中字母的出现频率就可以找到破解的方向。于是人们发明了基于移位法和代换法的新一代加密方法。这种方法是由一位名叫弗吉尼亚的法国外交官发明的,因此被称为“弗吉尼亚加密法”。
Virginia Encryption的创新之处在于为每个字母设置了一套加密算法。
字母a可以用a或z代替,总共26个字母,也就是26种加密方案。通信双方需要商定一组数字,以便知道每个字母应该使用哪种加密方案。
我们以拼音DEDAO为例。让我们商定一组数字,比如10086。这样,第一个字母d被最后一个e代替,第二个字母e或e,第三个字母d或d,第四个字母a被最后八个I代替,最后一个字母o被最后六个字母u代替,在10086的方案下,DEDAO被加密为EEDIU。
这个10086叫“钥匙”。只有拿到钥匙,你才能知道怎么解密。
弗吉尼亚加密法确实提高了密码的安全性。然而,安全性和便利性往往是矛盾的。弗吉尼亚加密方法提高了安全性,提高了使用门槛。例如,我们只有五个字母,所以密钥只需要五个数字。如果是一封几百字的长信呢?钥匙也会变得很长,那么如何才能成功的把钥匙交给别人呢?这就产生了新的问题。
而且在人工书写的时代,背26套加密算法不仅费时费力,还容易出错。因此,弗吉尼亚加密虽然更安全可靠,但在手动加密时代并没有得到广泛应用,直到机械时代到来才开始大放异彩。
第二部分
接下来,我们来看看密码学的第二个时代,机械时代。
20世纪,在战争中对加密和解密的需求变得更加强烈。一方面,各种机器的出现可以提高我们的效率。比如前面提到的弗吉尼亚加密方法,不需要靠手,可以用专门的机器辅助加密。另一方面,科技的进步也使得需要加密的场合越来越多。例如,无线电在战争中被广泛用于通信,战争双方都可以接收无线电信号。如果没有强大的加密手段,就相当于完全暴露在对方的眼皮底下。
有人说第一次世界大战可以称之为化学家的战争,因为芥子气第一次出现在战场上;第二次世界大战可以称之为物理学家的战争,因为原子弹的出现结束了战争;如果有第三次世界大战,那一定是数学家的战争,而数学家会控制战争中最关键的武器,那就是信息。
其实第二次世界大战已经是数学家的战争,加密和解谜的拔河直接影响了战争的走向。最精彩的案例是英国密码学家在德国破解了英格玛密码机。这也是密码学史上最著名的攻防战争,可以说直接影响了人类历史的进程。英格玛是一台机械和电子加密机器,由一堆齿轮、电线、灯泡、转盘和摇杆组成。用机器做繁琐的加密工作以前也做过,只是因为没有量产,所以也不受欢迎。英格玛机是第一台量产的加密机。从此,密码学不再依赖于纸笔的操作,使用机械电子加密的时代正式到来。
英格玛密码机看起来有点像打字机,里面有键盘、显示设备和很多机械电子零件。
每次操作员击倒一个字母,经过机械和电子转换后,显示装置上会显示出相应的字母,这就是加密代码。听起来不像什么。英格玛最棒的是核心加密部分叫编码器,编码器的核心是齿轮。每个字母被敲下后,齿轮转动一格。齿轮的转动会改变密码机内部的接线,加密的结果也会不一样。
英格玛是弗吉尼亚加密的延续。加密时,每个字母都被更改为新的加密算法。然而,英格玛的加密方法更加复杂。早期的英格玛只有6个档位,也就是说有6种加密算法。在下一代英格玛中,档位增加到了26格,但还是觉得不够,于是在顶部增加了一个26格的二档,也就是说加密算法增加到了26乘26,也就是676套算法。这样的英格玛密码机只能商用。德国军用密码机有8个档位,换句话说,一台机器包含2000多亿种加密算法。
这是什么概念?要知道,最新的《大英百科全书》有6000多万字。即使一个单词有10个字母,我们也不能通过把大英百科全书打300遍来用完2000多亿种加密算法。
英格玛密码机使用的加密方法其实是传统的方法,即替代和移位。尽管英格玛密码机在“质量”上没有取得很大的突破,但在机械和电子的加持下,它在“数量”上有着前所未有的优势。
单从理论上讲,这样的机器几乎是无懈可击的。
英国情报部门是如何破解英格玛的?
首先是波兰、法国和英国之间的接力合作。通过间谍活动和军事攻击,法国人得到了真正的英格玛密码机。后来法国人甚至拿到了英格玛机军用版的使用说明书和操作指南,但使用说明书只能帮助他们了解英格玛的工作原理,并不意味着他们能破译密码。因为有2000多亿个密码,你不知道德国人用的是哪一个。一开始,德国人只是在假设敌人也有同样的机器,无法破解的情况下,才批准使用恩尼格玛机器。波兰密码学家曾在一定程度上尝试破解密码。这给了盟军很大的希望。英国开始大量招募语言学家、人文学家、科学家和数学家,并组建了一支7000人的破译密码队伍。每天,被军方截获的各种德国通信码源源不断地送到这里。这些学者夜以继日地工作,希望从混乱的信息中找到规律。
最终找到钥匙的是艾伦图灵。他是一位著名的数学家,被公认为计算机科学的创始人。
在研究了之前破解的信息后,图灵注意到截获的德国信息有很多规律性。像“希特勒万岁”这样的句子经常出现。另外,每天早上六点,德国人都会发一份当天的天气报告,格式非常固定。甚至光凭经验,我们就能判断出德语中哪个词是天气词WETTER。这样,知道了WETTER这个词和加密的密文是什么,图灵就可以找到一种方法来逆转英格玛的加密算法。
最愚蠢的方法当然是尝试改变这个英格玛的设置,然后输入WETTER这个词,看看在什么情况下得到的结果和加密后的代码一样。但正如我们所说,加密算法是以十亿为单位计算的,根本不可能一一尝试。
图灵找到了一种思考方式。前面我们说过,恩尼格玛密码机是依靠齿轮的转动来调整加密方案的,这个方案的调整一定要有序。在加密WETTER这个词的时候,如果W的加密是方案一,那么它后面的E的加密一定是方案二。这样,图灵,他们要找的,就是六个连续的方案。而且他们发现德国人在设计恩尼格玛的时候,也坚持了一个原则,那就是加密后的代码不可能和加密前一样,也就是说用字母E加密的代码永远不可能是字母E,这就缩小了他们的搜索范围。
总之,经过一番努力,图灵将加密的可能性从几千亿降低到了105万。
当然,如果是人工计算的话,105万还是一个天文数字。为此,图灵专门设计了一台用于破解的机器,可以理解为早期的专用计算机,代号为“炸弹”。“炸弹”越多,破解就越快。为了让这些“炸弹”发挥到极致,图灵需要更多的人力和资金。为此,他和其他科学家甚至写信给丘吉尔首相寻求帮助。丘吉尔迅速向英国参谋长下达命令,要求军方以最高优先级满足图灵的所有要求。
图灵和他的同事一共制造了49枚“炸弹”,以最快的速度,只用了一个小时就破解了德国人当天使用的密码。
接下来,我们再来看密码的第三个时代,也就是密码的智能时代。
前边咱们说到恩尼格玛密码机的时候,说恩尼格玛其实对于密码学,只有「量」的提升,没有「质」的飞跃。而计算机的出现,把密码学推进了智能时代。在质和量的层面上,都让密码学变得不一样了。
咱们先来说「量」的提升。
用计算机程序就可以百分百模拟一个恩尼格玛密码机,而且,恩尼格玛受限于它的机械结构,在制作的时候,总是有这样那样的限制,计算机程序可以不受这样的限制,比如,计算机模拟的恩尼格玛机,可以不只有8个齿轮,100个齿轮都是可以实现的;每个齿轮上也不只是26格,可以是50格甚至100格。这些放在一起,可以形成的加密方案就是天文数字了。
而且,在计算机模拟中,还可以让齿轮完成不可思议的动作。比如有的齿轮顺时针转,有的齿轮逆时针转,有的齿轮越转越快,有的齿轮转十格之后就让它消失。这些规则在现实环境中,用机械是根本没法造出来的,但是用计算机却能仿真出来,这就使得安全度大大提升。而且计算机的运算速度比机械的加密仪器要快得多,能用更短的时间执行更复杂的加密任务。
前边说的这些还是「量」的提升,密码进入智能时代之后,还有质的飞跃,最开始的飞跃,就是字母不再是加密的最小单位了。
前边咱们说到的各种加密方式,不论是手工的还是机械的,都是用字母来替换字母。但是计算机是二进制的,一切的信息都可以用0和1来表示。每个字母在计算机里边其实也是一串0和1组成的代码。目前通用的代码叫「美国标准信息交换码」,每个字母都是用7位0101的代码来表示。比如小写的a是1100001,大写的A是1000001。
我们用计算机加密的时候,面对的就不再是一个个字母,而是一个个的0和1,这7位数的代码,我们可以只加密前3位,或者只加密奇数位。加密的方法就更加五花八门了。
你看,计算机的出现,把信息数字化了,打破了语言规律的底层结构,所以说,数字化使得密码学进入了新的时代。
除此之外,在智能时代,密码学还有一个更大的颠覆,那就是加密的过程可以不再保密了。
前边咱们提到那么多加密方法,都有一个特点,那就是千万不能让别人知道我们是用什么规则加密的,到了恩尼格玛密码机的时代,德军还要想方设法保密,不让敌人搞到机器的内部结构和使用说明。
可是进入智能时代之后,今天的加密手段,可以完全把自己的技术细节公开。打个比方来说,我给我认识的所有朋友都发了一把锁,跟他们说,你们以后给我写信呢,就寄个盒子过来,用这个锁把盒子锁上。
锁有无数把,但是钥匙只在我手里。而且我有自信,别的人不管怎么研究我的锁,也没法配出开锁的钥匙。
原理我们是搞明白了,但是这中间有一个关键的问题:你要怎么做,才能保证别人看到了你的锁,却还是配不出你的钥匙呢?
这其中最核心的原理,叫做「分解质因数」,什么意思呢?所谓质数,就是除了1和自己以外,没法被别的自然数整除的数。举个例子,12可以表示为3乘以4,那它就不是质数。13只能表示为1乘以13,所以13是个质数。同样,22不是个质数,23是个质数。
那如果我们用13乘以23,可以得到299,这个很容易计算。但是如果反过来,我问你说,你知道299是哪两个数的乘积吗?这个计算就非常麻烦,甚至只能用笨办法一遍遍地试。这个过程就是分解质因数。
数学家就发现,把两个质数乘起来,这个计算很容易,但是拿着结果反推,这个过程要难得多。新一代的加密手段,就利用了这个原理,两个质数相乘得到的那个大数,就是公开的「锁」,具体是哪两个数的乘积,这就是那个保密的钥匙。
这套加密算法,是由美国麻省理工学院的三位科学家罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)发明的,因为他们三个人的姓氏首字母分别是R、S、A,这套算法就被命名为RSA加密算法。
你可能会觉得,这么听下来,想要找到答案,麻烦虽然是麻烦,但是似乎也不太困难啊?用RSA算法进行加密的时候,用的那个数其实要大得多,数字越大,分解它要花的时间就会长得多。
1977年,为了验证这个算法到底有多可靠,三位科学家给一份科学杂志投稿了一篇文章,解释了RSA系统的工作原理,还给读者提出了一项挑战,在文章里发布了一串密码文,还给了一个129位的大数,也就是公开的那把锁,他们公开悬赏100美金,邀请大家来破解。
他们的密码最终有人破解了吗?其实是有的。但是,最终成功破解的,是一个600人组成的团队,他们借助了全球各地的计算机,甚至还动用了超级计算机,就这样,他们还花了17年的时间,才成功破解了这个密码。
你想,如果真的是在战场上,17年后才破解的军事情报,早就已经失去了效果。更何况,今天人们在使用RSA算法时,使用的那个数,远远不止129位,往往会使用300位以上的大数。想要分解这样一个数,大约需要把全球所有的计算机都集中起来,一块工作上亿年才能得到答案。
目前看来,RSA是一种非常可靠的加密算法,所以被广泛应用在各种场合,像我们使用网银支付、手机支付,背后都有RSA算法在给我们保驾护航。
结语
到这里,这本《码书》其中精华的部分,我就为你解读完了。
读完这本书,我有一个感受。
编码与解码的战争,是一场永远没有终结的拉锯战,RSA算法固然已经非常安全,但是已经有科学家在研究如何用量子计算机攻破RSA算法。想要找到一劳永逸无比安全的加密方式,几乎是不可能的。人类只能在这场战争中继续向前。
而在这场战争中,有很多因素起到过关键作用,比如数学,比如物理学,比如机械学,比如计算机科学,可是最关键的因素,还是人。攻破密码,靠的是己方的勤劳和智慧,也靠的是敌方露出的破绽,在这本书里,有一句话让我印象深刻:「尽管我们发明了窃贼打不开的锁,这不代表你就可以乱放钥匙。」不论技术如何向前演变,这场战争永远是人和人之间的战争,每一次的失败暴露的都是人性的弱点,而每一次的胜利,本质也是人类的胜利。
版权声明:内容来源于互联网和用户投稿 如有侵权请联系删除