密码术的奥秘(txt+pdf+epub+mobi电子书下载)


发布时间:2020-06-04 20:29:00

点击下载

作者:(英)弗雷德·派珀,肖恩·墨菲

出版社:外语教学与研究出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

密码术的奥秘

密码术的奥秘试读:

作者简介

弗雷德·派珀,1975年起担任伦敦大学数学系教授,1979年开始从事安全领域的工作,1985年成立Codes & Ciphers有限责任公司,提供信息安全领域的咨询服务。现为伦敦大学皇家霍洛威学院信息安全专业的主任。

肖恩·墨菲,伦敦大学皇家霍洛威学院信息安全专业教授。主要从事密码学,特别是加密算法方面的研究。曾率先发表过多篇差分密码分析方面的论文,并撰写了大量有关加密算法的论文。译者简介

冯绪宁,中国科学院数学与系统科学研究院研究员。1964年毕业于中国科学技术大学数学系代数专业。主要从事有限几何和密码学的研究。发表过若干论文、专著和译作。

袁向东,中国科学院数学与系统科学研究院数学研究所研究员。1964年毕业于北京大学数学力学系数学专业。主要从事数学史的研究与翻译,发表的论文涉及中国古代不定分析、笛卡儿的《几何》、希尔伯特数学学派、中国近代数学发展等专题。第一章绪论

大多数人在邮寄信件之前都要将信封封上。如果被问及原因,他们瞬即作出的回答不外乎是:“我还真不知道”、“是习惯吧”、“为什么不封呢?”或者“因为其他人都是这样做的”。更理性的回答可能是:“为了避免信件掉出来”或“为了不让别人看信”。即使信中不包含任何敏感或是高度私密的信息,我们中的许多人仍会认为,私人通信的内容不宜公开,因此要封上口以保证信的内容不为他人所知——除了预定的收信人之外。假设我们用没封口的信封寄信,那么任何拿到这封信的人,都能够读到信的内容。至于他们是否真会这样做,则另当别论。关键在于,如果他们想要这样做的话,他们就能够毫无障碍地去做。此外,如果他们调换了信封中的信,我们对此将一无所知。

现在,许多人用电子邮件(以下简称电邮)取代了邮寄信件。这是一种快捷的通讯方式,但它不能用信封来保护信息了。事实上,人们常常说发送电邮信息就像寄信不用信封一样。显然,任何人要通过电邮发送机密的、或者可能仅是涉及私人情况的信息,都需要通过某种别的手段来保护这些信息。一个通用的解决方法就是用密码术给信息加密。

如果加密信息落到了非预定收件人的手里,它应呈现为无法读懂的形式。目前,利用加密来保护电邮还不普遍,但是该技术正在普及,而且扩展的势头有望继续下去。确实,在2001年5月,一群欧洲议会的议员建议,全欧洲的计算机用户都应该对他们所有的电邮进行加密,“以防被一个英–美窃听网络暗中监视”。

密码术已是一门享有盛誉的科学,在两千多年的历史长河中一直有着重要的影响。传统上,它的主要用户是政府及军队。但值得注意的是,有一部作品《伽摩箴言集》(The Kama Sutra of Vatsyayana),作者是筏磋衍那(Vatsyayana);其中含有这样的劝告:女人应当学习“理解密码文本的技艺”(要了解本书引用的所有著作的细节,请查阅书后列出的参考文献)。

密码术在历史上的影响是有文献记载的。关于这一主题,戴维·卡恩(David Kahn)的作品《破译者》极富学术价值;这部书部头较大,有1,000多页,首次出版于1967年。它被描述为“第一部有关秘密通信的全史”,读来令人兴趣盎然。近期,西蒙·辛格(Simon Singh)写了一本篇幅更短的书,名为《码书》。这是一本描写若干重要历史事件的书,通俗易懂。它不像卡恩的书那样包罗万象,但其目的在于激起外行对这一主题的兴趣。两本书同样优秀,都是我们极力推荐的。

密码术的普及和公众对其重要历史作用愈加普遍的认知,其功劳并不限于文学作品。很多博物馆及历史遗迹都有老式密码机展出。这种场所首推英国的布莱奇利公园,很多人认为这里是现代密码术和现代计算的起源地。就是在这里,艾伦·图林(Alan Turing)和他的团队破译了谜密码(Enigma);他们的工作环境被保存下来,以纪念他们的惊人成就。现在有很多关于第二次世界大战的电影强调了破译密码的重要性。其中受到特别关注的是破译谜密码和在珍珠港事件之前破译加密信息所造成的影响。此外还有若干有关这一主题的电视系列节目。这一切都意味着,世界上已经有无数的人知道了通过信息加密以保护信息机密的概念以及破译这些密码的影响。然而,对他们中的大多数人而言,那些作品中所使用的术语的确切含义仍然是个谜,他们的理解还很有限。本书的目的就是通过对密码学——编制密码及破译密码的艺术和科学——的非技术性的介绍,来矫正上述状况。当读者带着从本书中获得的知识重新阅读那些书、观看那些电影和电视系列节目时,将会理解得更深入,从而得到更多的乐趣。

20世纪70年代之前,密码术是一种黑色艺术,只有少数政府及军事部门的人员理解并使用它。现在,它已是一门得到公认的学问,很多大学都在讲授这门课程,很多公司和个人也都在广泛地应用它。这种转变是诸多力量作用的结果。其中最明显的两种力量是办公自动化的发展和作为一种通讯渠道的国际互联网的建立。现在,各公司需要使用因特网与其他公司及他们的客户进行贸易往来。政府需要通过因特网与百姓交流,例如所得税申报可以通过电子途径提交。

毫无疑问,电子商务正在变得越来越普及,但对安全的担心常被说成是防碍它全面普及的绊脚石之一。我们已经关注过与机密信息相关联的问题,但机密性本身往往还不是人们主要担心的对象。

当两个人在公共网络上通信但彼此都无法看见对方时,他们中的一方如何来确认另一方的身份并不是一目了然的事。然而很清楚,从网络上收到信息的任何人可能都有这样的需要:确信他们自己知道发信者的身份,以及确信他们收到的信息跟原发信者发出的信息是一样的。此外,还可能有这样的情况:收信人需要确信,发信者不能在事后否认发过那样的信息或者宣布所发送的是一个不同的信息。这些都是重要的但又无法轻易解决的问题。

在传统的非自动化商业环境中,人们常常要依赖手写签名来消除上述三种疑虑。目前安全专家面临的主要挑战之一就是发明一些“电子对等物”来代替社交机制,因为后者诸如当面相认、手写签名等在向数字化交易转变的过程中会不复存在。尽管这个问题与保守某些信息的机密没有明显的联系,但密码术已经成为应对这种挑战的一种重要的工具。在1976年的一篇定名恰当的文章《密码术的新方向》中,惠特菲尔德·迪菲(Whitfield Diffie)和马丁·赫尔曼(Martin Hellman)提出了一种可以利用密码术产生手写签名的电子等效物的方法。这篇文章的影响无论给予多高评价都不为过。在他们这项工作之前,密码术被用来确保用户的信息在传输过程中不会被更改。然而,这种通信依赖于通信伙伴之间的相互信任。在20世纪六七十年代,对于金融机构而言这不是个问题——金融机构大概是当时的主要用户群,不过当时密码术的应用范围确实很有限。

现代密码术在过去的30多年中已经有了相当大的发展,不仅技术发生了变化,应用领域也更广泛了。而且,似乎每个人或是它的直接使用者,或是由于它的应用而受到了影响。我们都需要知道它是如何起作用的,以及它可以成就哪些事情。用好这本书

本书是密码术的入门性概论。它并非技术性书籍,主要是为外行所写。那些希望从技术层面学习密码术的数学家和计算机科学家已有太多的书籍可供选择。关于加密算法的设计与分析的基本理论,已经有了很好的文献资料,此外还有大量这类专题的教科书。(我们认为标准的参考书是由艾尔弗雷德·梅内策斯[Alfred Menezes]、保罗·范·奥尔斯霍特[Paul van Oorschot]和斯科特·范斯通[Scott Vanstone]所著的《应用密码术手册》)。本书并不属于此类图书。它不关心与算法设计有关的技术问题,而是集中讲述如何利用算法以及用这些算法来达到什么目的。如果这本书能鼓励那些有适当数学背景的读者再去读一些更专门的、技术性的教科书,这就实现了它的又一个目标。但是本书的主要目标是力图揭开密码术的神秘面纱,消除非数学家对这门学科的畏惧感。

本书的基础是伦敦大学皇家霍洛威学院信息安全方面的硕士所修读的一门课程。这门课程曾被叫做“领悟密码术”,但现在已改为“密码术与安全机制导论”。修读本课程的学生的兴趣与基础各不相同,但大多数学生都雄心勃勃地想成为安全方面的从业者,包括成为诸如信息技术业界的安全经理或安全顾问。他们中的大多数都不希望成为职业的密码学家。事实上,密码术在他们眼中是一种必要之恶,他们是为了获得从事信息安全工作的资格证书,才不得已来上这门密码术的必修课的。我们这些作者不能将这门课看作是“恶”,但毫无疑问的是,不能仅因为它本身是一门独立的学科而学习密码术,而是要以提供各种安全系统为背景来学习。正是这种态度印证了如下断言是有道理的:一般而言,对于信息安全的从业者来说,更重要的是理解密钥管理技术,而不是能够从数学上来分析密码系统。

对于那些并不想成为信息安全专家的人员,本书的目标是把密码术当成一个有趣而重要的话题来展现。它应该能使读者理解出现在关于密码术的大量历史书籍和电影中的术语,并意识到密码术对我们的历史产生过的、并且对我们的未来可能产生的影响。它也有助于人们理解密码术的不断普及给政府和法律执行机构带来的各种问题。

无疑,尝试破译简单的密码会增进人们对密码术的理解。这也是一种乐趣。所以,虽然本书不是教科书,其中还是有一些“习题”,意在邀请读者来破译某些算法。即使破译失败也并不会妨碍读者读完这本书。尽管如此,认真尝试去解决这些问题很可能是值得的。本书中的习题一般只涉及字母代换,解这些习题不需要数学算法。

尽管理解本书的内容基本上不要求读者具有数学知识这个先决条件,但也不可否认,现代密码系统几乎总会运用到数学方法,而且大多数现代算法使用二进制数字运算而不是字母代换。基于这一点,我们在第三章添加了一个简短的附录,讲了一点相关的初等数学。我们再次鼓励读者努力去理解它们,但请放心,那些内容对于阅读本书后面的章节关系不大。第二章初识密码术引言

本章将介绍密码术的基本术语和概念。我们的目标是将这些内容讲得通俗易懂,给出一个尽可能全面的概要。基本概念

密码系统的理念就是将机密信息加以伪装,使得未经许可者难以获知信息内容。最常见的两种作用大概是安全地将资料存放在计算机文档中或使其在不安全的渠道(如因特网)中传输。无论哪种情形,将文件加密并不能阻止未经许可者得到它,但是能够保证这些人无法理解自己所得到的东西。

需被隐藏的信息通常称为明文,将它伪装起来的操作叫做加密。加了密的明文叫做密文,或称密码文。将明文信息加密所使用的一套规则称为加密算法。通常这种算法的操作依赖于密钥,密钥是与信息一起被输入算法的。为了使接收者能够从密文中得到信息,需要有解密算法,当它和适当的解密密钥一起使用时,就能从密文中还原出明文。

一般而言,构成任何一种密码算法的规则都非常复杂,需要细心设计。然而,在本书中,读者可以将这些规则看作是一种“魔术套路”,它借助于密钥可以将信息变成难以辨读的形式。

下面是一幅为了保护信息传送而使用的密码系统的轮廓图。

毫不奇怪,在信息传输过程中截取信息的人被称作拦截者。其他作者可能使用不同的术语来指称这种人,诸如“窃听者”、“敌人”、“对手”,甚或“坏家伙”等。但我们必须认识到,有时拦截者也可能是“好家伙”;后面我们还要讲到这点。一般情况下,拦截者即使知道解密算法,他们也并不知道密钥。正是因为他们不掌握这一密钥,我们才能够指望他们得不出明文。密码术是有关密码系统设计的科学;密码分析这个词是指在没有取得适当密钥的情况下,从密文推演出明文信息的过程;密码学则是密码术和密码分析这两个术语的总称。

密码分析并不是攻击者得到明文的唯一手段,认识到这一点很重要。例如,假设某人将加密信息储存在其笔记本电脑中,显然他需要一种方法来重新获取解密密钥,以为自己所用。如果他的办法是把这个密钥写在一张纸上,然后把纸贴在笔记本电脑的盖上,那么任何偷走笔记本电脑的人,自然而然就得到了解密密钥,无需实施任何密码分析。这个简单的例证说明,为保证资料的安全,除了使用一个好的加密算法,还有更多的事情要做。实际上,我们要反复强调,密钥的安全性是密码体系安全性中的关键。

在实践中,大多数通过密码分析所进行的攻击,都需要设法找出解密密钥。攻击者如果成功了,那么他所知道的信息就和预定的收信者一样多,从而能够破译出使用此密钥的其他所有信息,直到该密钥变更为止。当然也可能发生这样的情况,即某个攻击者的唯一目标是解读某一特定的信息。无论如何,当设计者认为一个算法已被破译时,他们通常是指某个攻击者已经发现了找出解密密钥的具体方法。

当然,攻击者只有在拥有足够的信息,能够识别正确的密钥,或者更加常见的是能够鉴别不正确的密钥时,才能破解一个算法。鉴别不正确密钥的信息对攻击者破译密码来说可能有决定性的意义,认识到这一点很重要。例如,假定攻击者知道明文是用英文写的,当他们使用一个猜测的密钥去解密一段密文,但得到的不是一段有意义的英文明文时,这就说明这个猜测的密钥必定是不正确的。

前面的介绍应该已讲明了这样一个重要事实:要从密码文中得到所需的信息,并不需要知道加密密钥。这个简单的事实构成了迪菲–赫尔曼的开创性论文的基础。这篇论文对现代密码学产生过惊人的影响,而且它将密码系统很自然地分为两种类型:对称密码和非对称密码。

对于一个密码系统,如果能够很容易地从它的加密密钥推导出解密密钥,我们则称它为常规的或对称的密码系统。实际上,在对称系统中,这两种密钥常常是相同的。因此,这样的系统常被称为私钥系统或一钥系统。反之,如果不能从加密密钥推导出解密密钥,这样的系统则称为非对称的或公钥密码系统。之所以区分这两类体系,有一个理由显而易见:为了阻止了解所用算法的拦截者从拦截到的密文中得到明文,最根本的一点就是要对解密密钥加以保密。对于对称系统而言,还必须对加密密钥也进行保密;然而,若是非对称系统,知道加密密钥对攻击者来说并没有任何实际用途。确实,后者的加密密钥可以是公开的,而且实际情况也往往如此。这样做的一个结果就是,密码文的发送方与接收方不需要共享任何共同的秘密;对他们来说彼此间的信任也不是必须的。

虽然上一段的陈述看似简单而且不证自明,但其影响却很深远。在上面的轮廓图中,我们假定发送方与接收方有“配对”的密钥。实际上,他们要达到这种状态是相当难的。例如,若系统是对称的,也许需要在保密信息交换之前先配送一个密钥值。我们决不可低估要为这些密钥提供充分的保护所存在的问题。事实上,密钥管理方面的问题,一般包括密钥的生成、配送、贮存、变更、销毁等,乃是安全系统所面临的最困难的问题之一。对于对称和非对称系统,相关的密钥管理问题是不同的。我们已经知道,如果系统是对称的,就需要在配送密钥时对它们的值加以保密。如果系统是非对称的,则可以避免这一问题,因为此时配送的只是加密密钥,不需要保密。但在这种情况下,问题便转换为确保每个参与者的加密密钥的真实性,即保证使用公开加密密钥值的人知道相应的解密密钥的“主人”的身份。

我们在介绍对称与非对称系统的区别时,假定攻击者已经知道了算法。这当然并不一定是真的。无论如何,对密码系统的设计者来说,可能最好要假定任何一个潜在的拦截者都具有尽可能多的知识和尽可能广泛的情报。在密码术中有一条著名的原则,它宣称密码系统的安全性必须不依赖于密码算法的保密。于是,其安全性就仅取决于解密密钥的保密了。

研究密码术的目标之一,就是使任何希望设计或使用密码系统的人能够评估他所使用的系统在实用中是否足够安全。为了评估一个系统的安全性,我们作出下列三个假设,并将其称为最坏情景条件(worst-case conditions,简称WC)。(WC1)密码分析者对该密码系统具有完备的了解。(WC2)密码分析者已得到了相当多的密文。(WC3)密码分析者知道了对应于一定量密文的明文。

在任何情况下,都有必要努力从定量的角度搞清楚“相当多”和“一定量”的含义。这取决于所论及的特定系统。

情景WC1表明,我们认为安全性不应该依赖于对密码系统细节的保密。然而,这并不意味着系统就应该完全公开。自然,如果攻击者对于系统一无所知,那他的任务会更为艰巨,这就可以在某种程度上隐藏这一信息。例如,利用现代的电子系统,可以通过微电子手段将加密算法隐藏在硬件里。事实上,完全有可能在一个小“芯片”里隐藏整部算法。为了弄到这个算法,攻击者需要“打开”这样的一个芯片。这可能是既精细又耗时的活儿。无论如何,这个活儿还是有可能完成的,我们不应该假定攻击者缺乏这样做的能力和耐心。与此类似,算法中包含的任何一个计算机软件可以通过小心编写的程序进行伪装。攻击者凭着耐心和技巧,可能再一次揭开它的秘密。在某些情况中,攻击者甚至可能得到确切的算法。从任何制造商和设计者的立场看,WC1是一个很重要的假设,因为它能让他们摆脱保护系统机密性的许多责任。

很清楚,WC2是一项合理的假设。如果不存在被拦截的可能性,那就不需要使用密码系统了。反之,如果拦截是可能的,那么通信者并不能控制拦截在什么时候发生,因此最安全的选择是假设信息在所有的传送过程中都可能被拦截。

WC3也是一个很现实的情景。攻击者可以通过观察通信状况并作出聪明的猜测来得到这种类型的信息。也许他甚至能够挑选出已知其密文的明文。历史上一个“经典”的例子出现在第二次世界大战中。当时对一个灯浮标进行炮火袭击,就是为了确保Leuchttonne(灯浮标)这个特殊的德文单词出现在那些用谜密码机加密的明文信息中。(见英国广播公司出版的B.约翰逊[B. Johnson]写的《秘密战争》。)

利用已获得的互相对应的明文和密文实施的攻击称为已知明文攻击。如果明文是由攻击者选定的,就像上面我们所讲的被炸灯浮标的例子那样,那么可称其为选择明文攻击。最后,如果攻击者只知道密文,就称为仅知密文攻击。

承认这三种最坏情况会出现的一个结果是:我们不得不假定,唯一能够区分拦截者和真正的收信方的信息是解密密钥。于是,系统的安全性就完全依仗解密密钥的安全性。这就再次强调了前文中提到的论断:良好的密钥管理至关重要。

我们必须强调,对密码系统安全水平的评估并不是一门精确的科学。所有的评估都是基于某些假设的,不仅涉及拦截者所能获得的知识,还涉及他们所拥有的设备。无疑,进行评估的最好的普适性原则是:当有疑问时,假定最坏的情景已经出现,宁可错在谨慎上。还有一点值得强调,一般而论,人们所关心的问题不是“这是一个特别安全的系统吗?”而是“对于这种特定的应用,这个系统是否足够安全?”后者非常重要,我们必须认识到在某些情况下,需要的只是便宜和低水准的安全系统。对几乎所有非军事的活动而言,提供安全保证的费用是高昂的,所以需要从商业角度出发加以评估。此外,安全设备也比较昂贵,而且常常会降低整个系统的性能。于是,自然就要求能在最低的水平上保证安全即可。要决定到底需要什么样的安全水平,通常的做法是尝试估计信息需要受保护的时间长度,我们称之为系统的掩蔽时间,由此就可以粗略估计出所需要的安全水平。例如,一个适用于战术网络体系的密码系统,其掩蔽时间只需几分钟,要比适用于战略体系的密码系统——如政府机密文件或医疗记录,其掩蔽时间可能长达几十年——“弱”得多。

如果假定我们的解密算法已为他人所知,那么对任何对手而言都存在着一种显而易见的攻击方法。至少在理论上,他们可以挨个去试每一种可能的解密密钥并“希望”自己能找出正确的解密密钥。这样的攻击方法称为密钥穷举搜索法,或称蛮力攻击。自然,这样的攻击不太可能成功,除非攻击者掌握了某种辨识正确密钥的方法,或者(更常见的)他们起码需要拥有能够排除大多数不正确密钥的方法。例如,在已知明文攻击中,如果选取的解密密钥不能将所有的密文相对应地译为正确明文,很显然这个密钥就是不正确的。但是,正如我们从一些简单的例子所看到的,除非掌握了足够数量的、互相对应的明文与密文组,否则可能会找出许多这样的解密密钥,它们虽然能正确译出已到手的所有密文,但密钥本身仍是不正确的。如果通讯使用的基础语言具有足够严密的结构,那么这种语言的统计特性亦有助于剔除某些密钥。

现在,我们已经可以开始对用于特定目的的密码系统的适用程度给出一些最基本的评价准则。密码系统的用户会说明所需的掩蔽时间。设计者应该知道可能的解密密钥的数目。如果设计者能对攻击者试验每个密钥的速度作出假定,就能进一步估算出用密钥穷举搜索法破译密码的预期时间。如果这个预期时间比掩蔽时间要短,那这个密码系统显然就太弱了。因此,我们提出的第一个比较粗略的要求就是:密钥穷举搜索法所需的预期时间应该在很大程度上长于掩蔽时间。

在谈到对称与非对称算法的区别时,我们曾提到过发送方和接收方之间的信任需求问题。在迪菲–赫尔曼那篇著名的文章发表之前的若干世纪中,人们一直假定加密信息只能在相互信任的当事人之间传递。把信息发送给不受信赖的人的想法被认为是不可能实现的。我们将在以后的章节中讨论公钥算法。但在这里我们要讲一个很著名的例子,它说明一个人如何能确保将一份礼物安全地寄给预定的接收者,尽管这件礼物可能会经过很多想占有它的敌方之手。

在这个例子中,假定发送方有一件礼物,他打算把它放在一个带有挂锁的手提箱中,并送给某人,他对此人的信任程度还不足以让他把自己的钥匙交给对方。发送方会通知预定的接收方去买一把锁和钥匙。我们假定发送方和接收方的锁都不是任何第三方的钥匙能打开的,而且锁和手提箱都足够结实,没有人能够用蛮力从手提箱中将礼物取出。发送方和接收方用下列步骤来保证礼物的传递:

第1步:发送方把礼物置于手提箱中,锁上手提箱,将钥匙取走。然后将锁好的手提箱发给接收方。

 注:手提箱在从发送方到接收方的路途上是安全的,不受所有敌手的攻击,因为后者无法打开手提箱上的锁。但接收方也不能得到礼物。

第2步:接收方在手提箱上加一把自己的锁,取走他的钥匙,并把箱子送回给发送方。

 注:手提箱现在锁了两把锁,所以没有人能将礼物取出来。

第3步:发送方用自己的钥匙取下手提箱上属于他的锁,并将手提箱发回接收方。

 注:手提箱上仅剩下接收方的锁。

第4步:接收方打开手提箱上的锁,得到礼物。

这一系列操作的结果是礼物送到了接收方手中,但无论接收方还是发送方都得以把他们的钥匙留在自己身边。他们不需要彼此信任。当然我们关于钥匙、锁以及手提箱的坚固性的假定看起来都是极端不现实的。但是在考虑公钥密码术时,这些假定要被替换为数学等效物,那时人们会更为信服。我们刚才举例的要点是,至少从理论上说,无须彼此信任的安全通信是可以实现的。

我们必须承认,在这个太过简单的例子中,发送方无法知道手提箱上多加的那把锁是谁的,很有可能是敌手假扮接收方将自己的锁加在了手提箱上,这是一个必须注意的问题。手提箱例子中的问题“这是谁的锁?”类似于在使用公钥系统时出现的“这是谁的公钥?”,而这是个十分重要的问题。

在进一步阐述理论之前,下一章我们将简述历史上出现过的一些简单例证,以说明有关密码术的理论,并使大家真正理解已经给出的定义。第三章历史上的算法:若干简单实例引言

本章我们将介绍早期的几个使用“笔和纸”的密码实例来阐释第二章讲过的基本概念。我们还要利用它们来帮助读者了解拦截者发起的攻击的类型,以及算法设计者所面临的种种困难。这里所论及的算法都是对称的,其设计和应用都大大早于公钥密码术的出现。本章是为非数学背景的读者写的,但在少数情况下我们觉得不可避免地要涉及到一些基本的数学知识,特别是模算术。出现这种情况时,读者可跳过数学部分,这对他们的理解不会有什么影响。尽管如此,我们还是提供了一些数学辅导内容(见本章后的附录),若读者希望理解全部内容,阅读此部分即可。

这里讲的算法都已过时,并不能代表任何一种现代密码技术。但是,研究早期的一些系统也是大有益处的。这些系统是通过把一个字母替换成另一个的办法,即所谓的字母代换和(或)改变字母的顺序来加密的。研究这些系统有多种益处,一是它们能够给我们提供一些简单的、容易理解的例子以搞清基本概念,并能帮助我们说明密码中若干潜在的弱点。再者摆弄这些密码很有趣,由于它们并不依赖于数学,那些未接受过科学训练的密码“业余爱好者”也会很喜欢。凯撒密码

最早的密码实例之一是凯撒密码。尤利乌斯·凯撒(Julius Caesar)在其作品《高卢战记》中首先介绍了这一密码。在这种密码中,从A到W的每个字母在加密时用字母表中位于其后三位的那个字母代替,字母X、Y、Z则分别被替换成A、B和C。在这里,凯撒对字母进行了3“移位”,但用从1到25中的任何数的移位都能产生类似的效果。事实上,任一种移位现在通常都视为是使用了凯撒密码。实施凯撒密码的一个“机器”

我们再次用一个图表来解释这种密码。该图表标示了两个同心环,外面的环可以自由转动。如果我们从外环的字母A对应于内环的A开始,经2次移位外环的C就到了内环A处,等等。包括0移位(当然它与26移位是同等的)在内,共有26种移位方式。就凯撒密码而言,其加密密钥与解密密钥都是用移位数来决定的。

一旦双方同意选定一种移位,那么一个凯撒密码的加密就可以这样来完成了:在内环上找到明文中的每个字母,再将它替换成图中外环上与之对应的那个字母。而解密时只要实施相反的运作即可。于是,由该图可知经3移位后明文信息DOG变为GRJ,而密码文FDW的明文则为CAT。为了使读者更确信自己理解这个系统,我们列出以下陈述供读者验证:如果是7移位,那么对应于VERY的密文是CLYF;而对于17移位,则对应于JLE的明文是SUN。

在我们所描述的凯撒密码中,加密密钥和解密密钥都等于移位数,但加密和解密的规则是不同的。不过我们可稍稍改变一下公式,让这两个规则完全相同而让加密密钥和解密密钥变得不同。为此,我们只须注意26移位和0移位具有相同的作用,对任一个从0到25的移位而言,以此移位进行的加密等同于从26中减去原移位数得到的新移位数所进行的解密。例如,8移位加密与18移位解密是一样的,因为26-8=18。这让我们能对加密和解密使用同样的规则,此时解密密钥是18,相对应的加密密钥是8。

我们已经提到过密钥穷举搜索法,很明显,因为只有26种密钥,因此凯撒密码是很容易被这种攻击破译的。在给出例子之前,我们必须指出这种密码的另一个弱点,那就是只要知道一组对应的明文与密文(这是一个非常小的信息量),就可确定出这个密钥。

为简单起见,我们通过讲述一个完整的例子来解释密钥穷举搜索法。因为只有26个密钥,凯撒密码对于这种破译法而言尤为简单。假定我们已经知道使用的是凯撒密码,并预料信息所用语言是英文,我们拦截到一段密码文XMZVH。如果发送方是用25移位来加密的,则解密只需实施1移位,得出的信息便是YNAWI。这在英语中没意义,所以我们可以放心地在密钥值范围中将25移位排除,我们可以按降序逐一尝试从25到1的这些密钥值,其结果见表1。表1.密钥穷举搜索法一例:密码文XMZVH

在这26个潜在的信息中,只有一个是英文单词,即CREAM,因此,我们可以推论出加密密钥为21。这使我们能够破译在此之后的所有信息,直到该密钥变更为止。尽管这一密钥搜索圆满成功,但以下认识很重要:一般而论,对于更复杂的密码,一次密钥穷举搜索可能无法确定出唯一密钥。它更可能是通过删去一些明显错误的密钥而限定了潜在的密钥数目。我们还是回到凯撒密码来解释,注意,当用穷举搜索法寻找密文HSPPW的加密密钥时会产生两种可能的密钥,它们皆导出了对应于假设信息的完整的英语单词(移位4,得出DOLLS;移位11,得出WHEEL)。

出现这种情形时,我们就需要更多的信息,可能是该信息的背景或一些额外的密文,直到我们能够定出唯一密钥。无论如何,搜索的结果的确表明,我们已显著地减少了可能的密钥的数目,并且,当我们拦截到新的密码文时不需要再进行一次全面搜索。实际上,对于这个小例子,我们仅需要再试试4和11这两个值。

从这个例子我们还可以观察到另一个有趣的结果。在解决这个问题的过程中,读者可能会发现两个由5个字母组成的英语单词,其中一个单词可以用7移位的凯撒密码从另一个词得到。读者也许会有兴趣循此办法再找一些更长的对应的词,甚或是一些有意义的短语,它们彼此是可以通过字母移位得到的。

通过以上简单的举例说明,读者应该已经很清楚凯撒密码是很容易破译的。然而,凯撒当时很成功地使用了这种密码,这也许是因为他的敌人绝未想到他是在使用密码。而如今人们对加密都有了更清楚的认识。

利用凯撒轮作为工具对凯撒密码的描述可以改换成用数学的方式来定义。我们将在此阐述这部分内容,不过读者若对使用数学概念感到胆怯,完全可以跳过这段文字,继续去读下一节。

在介绍凯撒密码时,我们注意到26移位与0移位是相同的。这是因为26移位恰是凯撒轮旋转了一整圈。这一推理可以应用至其他移位,即任一移位等价于0到25之间的某个数的移位。例如37移位,是通过凯撒轮转一整圈然后再经过11移位得到的。那么,这个例子中的37移位等价于11移位这种说法就可以写成37=11(mod 26)。

这就是使用了模26的算术,其中的26称为模。模算术——除26外还有很多其他的模——在一些密码学领域里起着关键作用。所以在本章末我们增加了一个附录,以使读者熟悉初等数论这一数学分支中的相关定义与作用。

凯撒密码有时也称为加法密码。为了说明缘由,我们只需以如下方式为各个字母分派一个整数值:

A=0,B=1,……,Z=25

用y移位的凯撒密码进行的加密,就是用数x+y(mod 26)来代替数x。例如,N是字母表中第14个字母,所以N=13。用15移位对N加密,那么x=13,y=15,这意味着加密后的N是13+15=28=2(mod 26),所以N就被加密成了C。

正如我们所看到的,加法密码的密钥个数太少了。如果想得到密钥个数多的密码系统,那我们可以试着扩展该系统,考虑引入乘法作为一个替代的加密法则。然而,如果我们要这样做,由于加密必须是一个可逆的过程,“乘法密钥”的个数就必须有所限制。

假设我们想用乘2来加密,仍利用模26的算术,这样做的结果是A和N两者都被加密为A,B和O则都被加密为C,等等。这样只有偶数代表的字母才会出现在密码文中,而密码文中每个这样的字母可能代表着两个字母中的一个。这使得解密几乎变得不可能了,因此不能用乘2来加密。另一个更为有趣的例子是用乘以13来加密,这时字母表中有一半的字母会被加密为A,而另一半字母被加密为N。事实上只有1、3、5、7、9、11、15、17、19、21、23或25这些数可以用作乘数来进行加密。简单代换密码

虽然具有大量密钥是密码安全的必要条件,但是我们还要强调,有大量的密钥并不能保证密码系统一定是坚固的。简单代换密码(或称单字母表密码)就是一个很普通的例子,我们下面来详细地讨论它。讨论这种密码,不仅能说明依赖大量密钥作为系统强度指标的危险性,而且还能解释所用语言(此例中是英语)的统计特性是可能被攻击者充分利用的信息。

要制作一个简单代换密码,我们可以在一个严格按字母顺序排列的字母表下面,写下一个按随机顺序排列的字母表,例如:

该密码的加密密钥与解密密钥是相同的,就是粗体字母的次序。加密规则是“将每个字母替换为位于它下面的字母”,解密规则是相反的程序。例如,按照此图所示的密钥,对应于GET的密文是ZTP,而对应于IYZ的明文信息为BIG。顺便注意一下,凯撒密码是简单代换密码的一个特例,即位于下面的粗体字母排列只是将字母表移了一下位。

简单代换密码的密钥个数,等于字母表中26个字母可按不同顺序排列的方法数,它被称为26的阶乘,记为26!,也就是26×25×24×……×3×2×1,等于

403,291,461,126,605,635,584,000,000。

这无疑是一个很大的数,几乎没有人会用穷举搜索法去寻找密钥。然而如此巨大的密钥数量本身也带来了问题,而且在应用简单代换密码时会出现很多有关密钥管理的问题。第一个明显的问题是,不同于凯撒密码,简单代换密码的密钥很长,很难记住。因此在没有计算机的时代,这种类型的系统都是手工操作的,密钥常被写在一张纸上。如果这张纸被人看见或偷去,就会危及这个系统的安全。如果这张纸丢失,则所有加了密的信息就在下面这种意义上“丢失”了:真正的接收方不得不破译这个算法以找回信息。

为了规避这种风险,使用者试图找到能够产生容易记忆的密钥的方法。一种常见的方法是想出一个密钥短语,去掉所有重复的字母,让它作为密钥的“开头”,然后按字母表顺序加上尚未出现过的字母,使之扩展成完整的密钥。例如,如果我们设密钥短语为“We hope you enjoy this book”(我们希望你喜欢这本书),去掉重复字母后即变为“wehopyunjtisbk”,那么该密钥便是

W E H O P Y U N J T I S B K A C D F G L M Q R V X Z

显然,当限制密钥只能从密钥短语导出时,密钥的数目会大大缩减,因为在26!种可能的简单代换密钥中,相当大的比例是不可能由一个英语短语用上述方法导出的。然而,这数目对于穷举搜索法而言还是太大而无法施行,不过此时的密钥已经容易记住了。

简单代换密码的第二个明显的问题是:很可能存在许多不同的密钥将同一信息加密成同一密文的情况。例如,假定信息为“MEET ME TONIGHT”(今晚来见我)。我们使用第一个例子中的密钥来对其加密,则密文为FTTP FT PREYZSP。但是任何一个将E变成T、G变成Z、H变成S、I变成Y、M变成F、N变成E、O变成R以及T变成P的密钥,都能导出同样的密文。此类密钥的个数多达

18!=6,402,373,705,728,000。

这显然意味着,至少对于这类密钥来说,我们不应该假定攻击者需要确定出全部密钥才能从窃听到的密文中得到我们的信息。

在讨论攻击者如何利用英语这种语言的统计特性破解一些密码(也包括简单代换密码)之前,我们通过精心选择的4个简短的例子来说明简单代换密码的一些独特性质。在下面的例子中,我们假设给定的密文已被他人窃听,而且此人知道该信息是用英语写的,还知道加密者使用的是简单代换密码。

例1:G WR W RWL

因为在英语中只有两个单词是由一个字母构成的,所以可以合理地假定要么G代表A、W代表I,要么相反。此时很容易去掉G代表A的可能性。我们可以很快得出结论:该信息前面的几个字母为I AM A MA,最后一个字母只有有限的几种可能性。如果我们恰好知道这条信息是一个完整的英语句子,那几乎可以肯定它就是I AM A MAN。这一简单的推理没有利用任何密码分析技巧,认识到这一点很重要。它或多或少地“屈从”于英语的语言结构。还要注意到,尽管这一推理尚未确定出密钥,但却将密钥数目从26!减少到了22!。如果这只是一个更长的信息的开头部分,我们或者需要另外的论证来确定密钥的其余部分,或者需要进行工作量虽已缩减、但计算上仍然难以实行的密钥搜索。我们还需指出,为了避免这类攻击,传输信息时通常都以5个字母为一组发送,这样就隐藏了词的长度和(或)词的结尾等信息。

例2:HKC

关于这个密文我们能说些什么呢?可说的不多。由于没有别的情报可参考,这条信息可能是任何由3个不同字母组成的某个有意义的字序。我们几乎可以肯定地删去几个密钥,譬如那些同时把Z加密为H、Q加密为K、K加密为C的密钥。然而余下的可能的密钥数还是太多了,我们可以大胆地说,单靠窃听到的这条密文不能告诉我们任何东西。的确,如果我们想发一条只有3个字母的信息,那么简单代换密码就足够了,破解密文的密钥穷举搜索法将会产生所有(不同字母组成的)可能是密文的三字母词。

例3:HATTPT

对于这个例子,我们可以毫无疑问地限制T所代表的明文字母的数目。我们还可以放心地推断出T或P中的一个必代表元音字母。此外,如果我们有理由相信拦截到的信息是一个完整的单词,那么我们就能够写出所有可能的词汇。CHEESE、MISSES以及CANNON就是其中的几个例子。

例4:HATTPT(已知这条信息是一个国家的名称)

我们相信这个例子中的信息必定是GREECE。例3与例4的区别在于,我们得到了关于例4的额外情报,使得攻击者的任务从不可能转化为轻而易举。这自然是“战时”情报部门的职责之一。通常正是他们的情报成为密码分析人员破译敌人密码的决定性因素。英语的统计特性

上节讲的都是一些简短的、精心挑选出来的例子,用以说明一些具体问题。然而,即使是用简单代换密码对相当长的英文信息进行加密时,还是存在一些直接的攻击方法,它们可以破译出信息和密钥,或至少大部分密钥。这些攻击充分利用了英语的一些众所周知的特征。表2列出了字母表中的字母使用的频率(以百分比表示)。它们是根据大量报纸和小说中节选出的段落,共约30多万个字母样本中统计出来的(此表源自《密码系统:通讯的保护》中的一张表,此书由H. J.贝克[H. J. Beker]和F. C.派珀[F. C. Piper]编写)。表2.英语文章中字母的相对预期频率

这些数据与其他作者编制的大量表格的内容是相符的,可以解释为英语文本中这些字母出现的预期频率。它们清楚地表明,英语文本可能会被很少的一些字母所支配。使用简单代换密码得到的一份密文中字母出现的相对频率直方图

当使用简单代换密码时,字母表中每个特定的字母不论出现在文本的什么地方,都用同一个替换字母代替。于是,比如我们在加密时令R代表E,那么密文中R出现的频率就等于原信息中E出现的频率。这就意味着,如果信息中的字母出现的频率如表2所示,那么密文中的字母出现的频率也会表现出同样的不平衡性,只是字母间的频率分布不同了。为了更好地理解这一点,我们画了一个频率直方图,用以表示使用简单代换密码得到的一份较长密文中字母出现的频率。

比较表2与这张直方图,密码分析者可以合理地猜想H对应于E,而W对应于T。因为英语中最常用的三字母词无疑是THE,那么攻击者可以充满自信地假定密文中出现最多的三字母词应是W*H,其中,*代表某个固定的字母。这不仅确认了最初的猜测,还暗示明文中与字母*对应的是H。若读者有兴趣验证破译这些密码有多么容易,应该尝试去读下面这段文字,它是用简单代换密码加密的一段密文。

DIX DR TZX KXCQDIQ RDK XIHPSZXKPIB TZPQ TXGT PQ TD QZDM TZX KXCJXK ZDM XCQPVN TZPQ TNSX DR HPSZXK HCI LX LKDUXI. TZX MDKJ QTKFHTFKX DR TZX SVCPITXGT ZCQ LXXI SKXQXKWXJ TD OCUX TZX XGXKHPQX XCQPXK. PR MX ZCJ MKPTTXI TZX. HKNSTDBKCOPI BKDFSQ DR RPWX VXTTXKQ TZXI PT MDFVJ ZCWX LXXI ZCKJXK. TD HDIWPIHX NDFKQXVWXQ DR TZPQ SCPKQ SCPKQ DR KXCJXKQ HCI SKDWPJX XCHZ DTZXK MPTZ HKNSTDBKCOQ MPTZ TZPQ VXTTXK BKDFSIB.

任何一位破译了这段密文的读者,几乎肯定利用了文字间的间隔所提供的信息。如将加密前的英语中的间隔去掉,破译就会困难得多。

在结束这一简短讨论之际,我们必须承认我们没有定量地给出“长”密文的概念。当然,在这方面并没有精确的答案。200个字母长的密文大概就足以利用上述统计信息解出了。此外我们发现,学生们通常能破译大约有100个或更多一些字母的密文。

作为题外话,我们要强调,并不能保证每个特定信息的统计特性都精确地符合表2。例如,当加密私人信件时,“you”这个词很可能就会像“the”一样常见。为了举例说明一个信息的统计特性可以被人为地操控到什么地步,我们要告诉大家一本200页的小说,其中竟没有用到字母E(见吉尔伯特·阿代尔[Gilbert Adair]翻译的乔治·佩雷克[Georges Perec]的著作《虚无》[A Void])。

上文讲述的这种攻击方式能够成功的原因是几个“最常用”的字母似乎“主导”着信息,与其密文相等价的明文能被很容易地确认出来。为防止这种情况发生,有一种方法是采用双字母组进行简单替换,双字母组是指连续的两个字母组成的字母对,如果这样做,我们的密钥将是676个字母对的一种排列。这时我们的密钥非常长,而且其数量空间达到676!,几乎是个天文数字。不过,这种方法相当笨拙,并且它也会遭受同一类型的攻击,因为正如单字母的情形一样,长信息同样会被相对较少的几个双字母组所主导。

显然,要模仿上面的简单代换密码的密钥那样,把所有的676个双字母组列表,并在其下列出相应的密文,是不太现实的。因此,我们需要某种简单的方法去确定密钥,并表示加密和解密算法。现在我们就给出一种基于双字母组的密码作为例子,它可能的密钥的数量相对较少。普莱费尔密码

普莱费尔密码是查尔斯·惠特斯通(Charles Wheatstone)爵士与莱昂·普莱费尔(Lyon Playfair)男爵于1854年发明的,在英国战争部一直使用到20世纪初,包括在布尔战争期间。它是“双字母组”密码的一个例证,这意味着字母是成对而不是单个加密的。密钥是一个5行5列的方阵(内含25个字母,即在字母表中删去J之后剩下的字母),密钥个数达到25!,亦即

15,511,210,043,330,985,984,000,000。

在用普莱费尔密码加密之前,信息必须稍稍重新排列一下,方法如下:

● 用I代替J;

● 将信息写成字母对的形式;

● 避免出现同样的字母组成的字母对——如果出现,则在它们中间插入Z;

● 如果写出的字母个数是奇数,则在结尾处加上Z。

为了解释该密码的运作方式,我们选取一个具体的密钥,当然我们的选择不失一般性。

一旦信息得到了适当的重新排列,我们便给出加密规则。为了使我们的叙述更清楚,我们将原来的密钥扩充为6行6列。第六行与第一行相同,第六列与第一列相同。于是,在我们的例子中,扩充后的密钥如下图。

加密规则如下:

● 如果两个字母位于密钥中的同一行,则每个字母都替换为扩充后的密钥中位于它右侧的字母。

● 如果两个字母位于密钥中的同一列,则每个字母都替换为扩充后的密钥中位于它下方的字母。

● 如果两个字母既不在同一行,也不在同一列,则第一个字母替换为与它同行,但列数与第二个字母相同的字母,第二个字母替换为与刚使用过的三个字母形成矩形的那个字母。

现在我们来加密下述信息:GOOD BROOMS SWEEP CLEAN(好扫帚扫得干净)。

由于该信息中没有字母J,我们只须在用字母对的形式写这条信息时适当地加入字母Z,这样便得到:

GO OD BR OZ OM SZ SW EZ EP CL EA NZ

于是,根据我们选定的密钥,GO变为FP;OD变为UT;OM变为PO等,全部密文变为

FP UT EC UW PO DV TV BV CM BG CS DY

与简单代换密码一样,使用者倾向于使用一个密钥短语来确定密钥矩阵。方法与简单代换密码相同,即完整地写下这个密钥短语,去掉重复字母,再按字母表的顺序加上没用到的字母。因此,如果这个短语是UNIVERSITY OF LONDON,去掉重复字母后就变为UNIVERSTYOFLD,那么所得方阵就如下图所示。

解密总是加密的逆过程。任何一位希望确保自己真正理解了普莱费尔密码是如何运作的读者,不妨解密一下MBOUBTZE,可利用下面的方阵作密钥(答案是一个由7个字母组成的英文单词,我们希望该词并不反映读者的精神状态)。我们就不讨论这种密码的密码分析问题了。容易描绘又很有趣的密码例子还有很多。本书最后会提供合适的参考资料。同音异词编码

改进简单代换密码的另一种途径是通过引入一些附加的符号来扩展字母表,使得明文中诸如E这样的字母能用不止一个密文符号来表达。

这些附加的符号通常称为随机元素(或简称随机元),扩展字母表的过程叫做同音异词编码。我们可以通过介绍一个密码来加以说明,其中密文字母表是数字00、01、02、……、31。每个密文数字仅代表唯一一个明文字母,但是字母A、E、N、O、R、T中任何一个都由两个不同的数字来代表。

作为例证,我们可以像下列图表那样给每个字母指定相应的数。

在上述对应下,TEETH这个有两对重复字母的词,可以写为24 27 13 08 31。不知道这个密钥的人,都会认为该密文的5个符号是不同的,但真正的接收者绝不会混淆。

上面选出的6个字母,可能是明文中最常用的字母。我们以E为例,如果我们随机地从两个选定的数字中确定一个代表E,那么我们可以预计这两个数字中的每一个在密文中占的比例为6%。一般而言,同音异词编码的作用就是保证密文的预期频率直方图能比明文的预期频率直方图更平缓些。这样就增加了利用统计法进行攻击的难度。

注1:在这个密码中,我们把0、1、2写为00、01、02等。在不使用空格时,我们需要用这种方法来区分(比方说)数字“12”与数字“1后面跟着一个2”。

注2:破译普通的简单代换密码相对较易。我们希望所有的读者都破译出了前文中的那一段密文。破译我们现在讨论的这种密码就需要更大的耐心和更好的运气。任何需要被说服或喜欢这类难题的读者,不妨试着读读下列密文。仅有的情报是,这是一个英语文本,是用上文讨论过的带有同音异词编码的简单代换密码加密的。密钥未知,但不是上面所列的那张表。此外,明文中的字母是按5个一组写出的(这意味着攻击者不能识别短的词,尤其是一个字母的词)。这个练习不容易,我们并不强求读者非得一显身手不可。多字母表密码

使用同音异词密码时,密文的频率直方图因字母表范围的扩大而变得更为平缓。这使得同一个明文符号可以用多个密文符号来代表。但实际上,每个密文符号仍然只代表唯一的一个明文符号,这样就总是存在着下述危险:对于给定的密钥,攻击者能汇编出一部已知的明文与密文相对应的词典。

另一个可以使频率直方图平缓化的方法是使用多字母表密码。在使用多字母表密码时,代替特定明文字母的密文符号,在整个密文中可能发生变化,例如根据它在明文信息中的位置或根据位于它前面的明文的内容而发生变化。对于这种密码而言,同样的密文符号可以代表不同的明文字母,这在同音异词编码中是做不到的。

我们必须再次指出,我们描述的这些简单的密码例子,现在已不再使用。我们之所以花费笔墨来讨论,是为了借此说明现代算法设计者必须避免的一些陷阱。至于我们在前面讲的那些例子,则是为了阐释一些密码分析的技巧,而且这些例子能帮我们编出一些既有教益又有趣味的练习。维热纳尔密码

维热纳尔密码大概是最为著名的“手工编制”的多字母表密码,它得名于16世纪法国的一位外交家布莱兹·德·维热纳尔(Blaise de Vigenère)。虽然它早在1586年就已问世,但直到200年后才得到广泛承认,最后在19世纪中叶被巴比奇(Babbage)和卡西斯基(Kasiski)破译。有趣的是,在美国南北战争中南部同盟军就使用了维热纳尔密码,而南北战争时期这个密码早已被破译了。这可以从尤【1】利西斯·S. 格兰特将军的一段话中得到印证:“我们有时花太多时间去破译拦截到的信息,得不偿失,不过有时它们提供了很有用的信息。”

维热纳尔密码利用维热纳尔方阵来进行加密。这个方阵最左边的(密钥)列是英文字母表,对于此列的每一个字母,与它相对应的那一行是字母表的一个循环,并以该字母为循环的起始字母。所以最左边这列上的每个字母实际上都对应着一个凯撒密码,其移位由该字母所确定。例如,字母g所对应的就是6移位的凯撒密码。维热纳尔方阵

利用这个方阵设计密码的最常用的一个方法是选择一个无重复字母的密钥词(或密钥短语)。如果明文信息比密钥词长,那么就重复密钥,重复次数视需要而定,这样,我们就能得到一个跟信息一样长的字母序列。然后把该字母序列写在我们的信息下面。例如当信息是PLAINTEXT而密钥词是“fred”时,我们得到:

下面我们利用该方阵来加密这条信息。利用维热纳尔方阵以密钥字母f对P进行加密

为了加密第一个字母P,要使用位于它下面的密钥字母,此时是f。于是,加密P时我们从方阵中由f所对应的那行中读出位于P下方的字母,即U。类似地,加密L时,从r所对应的那行中取出位于L下方的字母,即C。用密钥字母f对P加密的过程如下图所示。

凡是能弄明白这一过程的读者,应该都能得出以fred为密钥词对PLAINTEXT进行加密所得到的密文是UCELSLIAY。

这意味着我们知道:

现在我们能看到,明文字母T在密文中可表示为L,也可表示为Y,而密文字母L既可以代表I,也可以代表T。很清楚,我们利用这种密码,能够防止密文中的字母频率具有与用简单代换密码得出的密文所显示的频率相同的模式。

维热纳尔密码有很多变种,比如其中有一种允许密钥词中出现重复的字母。每个变种都具有一些细微的不同特征,从而引发攻击方式的微小变化。不过我们将只关注前文已经定义的那种简明的系统。

维热纳尔密码是多字母表密码的特例,它以严格的轮换方式重复使用一串(短的)简单代换密码。这种密码所使用的密码组件的数目称为周期,显然,我们在上文所描述的这种版本的维热纳尔密码,其周期等于密钥词的长度。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载