安全加解密技术 盘点密码学进阶史

文章正文
发布时间:2024-09-01 06:12

加解密一直以来都是部久经不衰的犯罪片——充斥着谎言、欺骗、秘密和交易、代码泄露,它们互相排斥而又共同构成一个叫密码学的整体。在整个人类社会中,密码学在信息传递中都扮演着极为重要的作用。在本文,您将能了解人类历史上密码学带来的安全技术。这对于云计算和大数据发展的当代,更深刻地了解安全的重要性有着特殊的意义。

“一直被模仿从未被超越”说的是竞争角逐,“一直都存在从未被抹除”说的是数据信息。人类社会的整个发展过程,其实都充斥着各种各样的信息。这些信息或有用或无用,或多或少,都被人们有意或无意地生产制造且又消费利用着。

看得见的安全技术 感受加解密进阶史

在信息传递过程中,密码学就成为了安全机制中的一个重要环节。一直以来密码学都被专指加密算法——将明文(信息,plaintext)转换成难以理解的数据(密文,ciphertext),以及将密文还原成明文的过程。加解密也就成为了密码学中最为重要的两种算法。

看得见的安全技术 透视加解密发展史

对称密钥加密术示意图

在谈到人类社会发展中的加解密或者说密码学(近代以前密码学专指加解密,本文主要围绕加解密来展开。编者注)的时候,我们需要知道,它是由两部分构成的:算法和密钥。密钥是一个用于加解密算法的秘密参数,通常只有通讯者拥有。算法和密钥在编制密码和破译密码的过程中都会参与其中。

为了让大家更加通俗易懂,我们以上图为例子进行说明。明文“Hello World!”通过加密并以密钥(ciphertext)这个参数(也就是图片中的字符串),将明文转换成难以理解的数据或者符合。而接收方也需要这个密钥对其进行解密。从而才能还原出其真实的数据信息“Hello World!”。在这个加密模式中,只需要提供一种密钥进行加、解密过程,也就是我们常说的对称密钥加密。

看得见的安全技术 透视加解密发展史

非对称加密算法

与此对应的,则是非对称加密算法。非对称加密算法需要两个密钥:公开密钥(public key)和私有密钥(private key)。公有和私有密钥彼此不同,公开密钥与私有密钥构成一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。

对称和非对称加密,在密码学中占有非常重要的地位,也是整个密码学体系不断发展的两个主要线索。在本文,我们将为大家介绍包括这两种模式的加解密发展历程,并着重以实物的形式来展现人类在密码学所体现的安全技术的发展。

#p#

早在公元前,秘密书信已用于战争之中。西洋“史学之父”希罗多德在《历史》当中记载了一些最早的秘密书信故事。

比如,公元前5世纪,希腊城邦为对抗奴役和侵略,与波斯发生多次冲突和战争。公元前480年,波斯秘密结了强大的军队,准备对雅典和斯巴达发动一次突袭。希腊人狄马拉图斯在波斯的苏萨城里看到了这次集结,便利用了一层蜡把木板上的字遮盖住,送往并告知了希腊人波斯的图谋。最后,波斯海军覆没于雅典附近的沙拉米斯湾。

在古代,最早的加密方式通常指采用纸笔等工具,随着生产力的发展,密码学领域就涌现出更多的技巧和工具。比如早期最具代表性的凯撒密码(Caesar Cipher,以Julius Caesar古罗马朱利尤斯·恺撒命名),在古罗马时代就被广泛应用。凯撒密码是最具代表性的一种替代式加密算法,它通过将一组字母系统性地替换成另外的字母或者符号,从而达到加密的目的。

看得见的安全技术 透视加解密发展史

恺撒密码原理

比如,图中我们展示的是将字母A替换成D,B替换成E,C替换成F,依此类推。如果将“hello”进行凯撒式加密的话就替换成“khoor”了。在这种加密方式中,位数就成为了加解密的密钥。

[[104667]]Syctale密码棒

在古希腊的时候,还有一种叫Syctale的棍棒类物体(暂且称之为“密码棒”)被用来对信息进行加解密。这是一个协助置换法的圆柱体,可将信息内字母的次序进行调动。它主要是利用了字条缠绕木棒的方式,实现字母的位移,收信人要使用相同直径的木棒才能还原真实的信息。

#p#

在凯撒密码的基础上,发展出一种更为复杂的维吉尼亚密码(Vigenère Cipher)。该密码取名自法国密码学家维吉尼亚,是一种多表替换密码,也被叫做维热纳尔密码。

如果需要对明文进行加密,就需要这组密码矩阵和一个关键词(密钥)来实现。在维吉尼亚密码下,可以采用两种方式来进行加密:公式法和查表法。

[[104668]]16世纪法国亨利三世王朝的布莱瑟·维吉尼亚(图片来自维基百科)

维吉尼亚密码也可以用代数的形式来对待。将字母A-Z对应0-25(26个数字),因此我们可以引入mod26运算(取模运算)。对于公式法来说,我们可以采用:

看得见的安全技术 透视加解密发展史

维吉尼亚密码加密公式

通过K这个密钥来实现对E的加密(M为明文,E为密文,K为密钥)。而对于解密,则可以采用:

看得见的安全技术 透视加解密发展史

维吉尼亚密码解密公式

在以上公式中,

看得见的安全技术 透视加解密发展史

代表明文,

看得见的安全技术 透视加解密发展史

代表密文,

看得见的安全技术 透视加解密发展史

则为使用的密钥。

另外,我们也可以用查表法来进行加密。例如密钥的字母为“d”,明文对应的字母“b”,在下图的表格第一行找到字母“d”,再在左边第一列找到字母“b”,两个字母的交叉点(b行d列)就是字母“e”,所以对应的密文字母为“e”。

看得见的安全技术 透视加解密发展史

维吉尼亚密码表(图片来自维基百科)

和其他所有的加密方法一样,维吉尼亚密码通过字母以某种频率出现,因此频率分析也称为了破解此类加密的一种方法。比如,如果P在密文中的频率非常高,那么人们就可以猜测出所对应的E也是频率较高的字母。但是,使用维吉尼亚密码下的E可以以不同的密文形式来加密。

看得见的安全技术 透视加解密发展史

维吉尼亚密码中不同英文字母出现的频率(图片来自维基百科)

看得见的安全技术 盘点加解密进阶史

1914-1940瑞士使用过的加密计算尺(图片来自维基百科)

之前介绍的凯撒密码是一种替换加密术,每个字母都制定了以唯一的替换符号(Monoalphabetic Substitution Cipher,单字母表替换加密),因此它们很容易被频率分析法破解。维吉尼亚密码后来出现过多种改进和变形,也引用了这种“多字母表替换加密”(Polyalphabetic Substitution Cipher)。这种多表加密比单表加密复杂,破解难度也大大增加。自从维吉尼亚加密术出现以后,多表加密成为欧洲人最常用的加密方法。比如上图中展示的1914年至1940年间,瑞士军队使用了这种加密计算尺。

#p#

18上世纪90年代,Jefferson(托马斯·杰弗逊,美国第三任总统)发明了一种基于圆盘的加密装置Jefferson disk(杰弗逊圆盘),或者也被称为Jefferson wheel cipher(杰弗逊转轮加密器)。

这种装置有36片同样大小的木制转轮,套在一根铁杆上。每片转轮的圆周边缘上刻有乱序的26个英文字母。通信的双方必须各自有一个完全一样的杰弗逊圆盘(有点类似我们此前介绍的Syctale密码棒,需要彼此双方有同样的加密装置)。

看得见的安全技术 盘点加解密进阶史

Jefferson disk(杰弗逊圆盘,正面)

看得见的安全技术 盘点加解密进阶史

Jefferson disk(杰弗逊圆盘,斜侧面)

在使用的时候,密文发送者把一段文字(不超过 36字)通知身处异地的对方时,只需转动加密器上的各片转轮,使这段文字正好出现在同一行上,这时转轮上排列的其他25行都是无意义的乱码。再把其中任意一行的乱码抄下来交给信使(信使无法解密)。对方收到乱码信后,只需拿出自己保存的同样的装置,转动上面各片转轮,让其中一行的排列和这段乱码同处在一行上,然后再查看其他25 行上的内容,其中必然有一行显示出加密者要传达的信息,而其他行显示的都是乱码。

看得见的安全技术 盘点加解密进阶史

杰弗逊圆盘中的其中一个disk

从这里我们不难看出,这种杰弗逊圆盘属于多表替换加密,每一个转轮相当于一张密码表。只有使用相同的加密装置的情况下,才能得到蕴含其中的秘密。每个转轮都可以随机设置一个字母,密钥则是圆盘中总共36个disk的不同排列算法来实现。从这里我们也不难得出,这种加解密在当时来说还算非常安全的(36!=3.7x10^41)。

看得见的安全技术 盘点加解密进阶史

Jefferson disk(杰弗逊圆盘,侧面)

杰弗逊的发明在后来的150年里都有深远影响,促使了后来美军使用的M-94圆柱形密码设备的成型。而且它在第二次世界大战中也很流行,不过采用的是机械电子式的,与打字机等设备结合使用。

看得见的安全技术 盘点加解密进阶史

看得见的安全技术 盘点加解密进阶史

M-94 Encryption Disks(点击图片看大图)

看得见的安全技术 盘点加解密进阶史

圆盘上的字母

上图展示的就是这种沿用了杰弗逊圆盘设计思想的圆柱形密码设备M-94。该密码设备总共有25个直径为35mm的铝制圆盘,外缘上刻有字母。该设备在1924年被广泛应用在低级军事通信领域。

二战中美国陆军和海军使用的 条形密码设备M-138-T4,采用了25个可选的纸条按预先编排的顺序编号使用,其加密强度也相当于M-94。

#p#

此前介绍的都是基于手工编码来实现加解密功能,而采用这种人工编码原理的电报编码和译码在我国一直被应用到上世纪七八十年代,这多少有点令人遗憾。这种人工编码的方式效率极低,而且保密性也很差。

在1918年,德国发明家亚瑟·谢尔比乌斯(ArthurScherbius)有一个想法,希望通过二十世纪的电气技术来代替过时的人工加解密。

看得见的安全技术 盘点加解密进阶史

Enigma加密机(WWII)

他发明的加密机Enigma,也就是我们今天要介绍的在军事和外交密码里最著名的WWII(在WWI的基础上增强加密强度)密码电机。

看得见的安全技术 盘点加解密进阶史

看得见的安全技术 盘点加解密进阶史

被加密和解密的齐默曼电报

在介绍Enigma之前,我们先了解下WWI(Zimmerman齐默曼电报)。这是一封由德国外交秘书阿瑟·齐默曼于1917年1月19日秘密发给德国驻墨西哥大使的电报。电报以加密形式被发送,它载有建议德国和墨西哥合作对抗美国的内容。但后来电报被英国海军情报局截获,并且告知了美国总统伍德罗·威尔逊,从而获得了战争的先机。

看得见的安全技术 盘点加解密进阶史

Enigma加密机及附属工具

为此, Enigma加密机在此基础上强化了加密性能。它主要包括键盘、转子、显示仪板和插线板组成。Enigma加密机有26个键,键盘排列接近我们现在使用的计算机键盘。键盘上方就是显示器,它由标示了同样字母的26个小灯组成,当键盘上的某个键被按下时,和此字母被加密后的密文相对应的小灯就在显示器上亮起来。

看得见的安全技术 盘点加解密进阶史

Enigma加密机主机箱

看得见的安全技术 盘点加解密进阶史

不含箱体的Enigma主机

看得见的安全技术 盘点加解密进阶史

掀开面板可看到键盘、灯泡、转子

在显示器的上方是三个转子,键盘、转子和显示器由电线相连,转子本身也集成了6条线路。当一个键被按下时,信号不是直接从键盘传到显示器,而是首先通过三个转子连成的一条线路,然后经过反射器再回到三个转子,通过另一条线路再到达显示器上。

1942年德国开始采用四轮的Enigma加密机,并且给德国海军进行了装备。它使用了3个(最多可为8个)正规轮和1个(最多为2个)反射轮来进行加解密。从而使得加密强度得到进一步提升,这也使得英国从1942年2月到12月都未能破解德国潜艇的密文。

#p#

Navajo Code,也就是美国最大的印第安部落Navajo(纳瓦霍人)所采用的一种密码通信。从字面上来看,它基于当地纳瓦霍人的特种语言而成的密码系统。

1942年,美军征召美国最大的印第安部落纳瓦霍人入伍,使用纳瓦霍人的语言编制更加安全可靠的密码。这种密码在当时被称为“最简便、最快速和最可靠”的密码。该密码也因电影《风语者》而倍受关注。

看得见的安全技术 盘点加解密进阶史

纳瓦霍密码字典

随后,更加开放扩展的密码学研究在上世纪70年代开始迅速发展。比如最具影响力的数据加密算法Data Encryption Algorithm(DEA),就是在当时由IBM研究开发出来。

看得见的安全技术 盘点加解密进阶史

DES加密过程

DEA是一种对称加密算法,起初是被应用在金融行业,嵌入到硬件实现对数据的保护(ATM都使用DEA这种算法)。这种加密算法和我们之前介绍的Enigma加密机有相通之处——循环位移的基础上进行替代模糊,增加频率分析和密码破解的难度。只不过DES是在计算机领域的二进制级别进行这种替代。

看得见的安全技术 盘点加解密进阶史

Feistel加密结构示意图(图片来自维基百科)

1977年DEA被美国政府正式采纳,基于这种算法的标准则为Data Encryption Standard数据加密标准(DES,1979年1月成为标准)。DES使用一个56位的密钥以及附加的8位奇偶校验位,产生最大64位的分组大小。这是一个迭代的分组密码,使用称为 Feistel 的技术,其中将加密的文本块分成两半。使用子密钥对其中一半应用循环功能,然后将输出与另一半进行“异或”运算;然后对其进行交换,这一过程会继续下去,但最后一个循环不交换。DES使用16个循环,使用异或,置换,代换,移位操作四种基本运算。

#p#

对于计算数字签名来说Hashes是必不可少的,尤其是在电子商务的数字证书领域应用更是广泛。美国国家标准与技术研究院(NIST)拥有一系列的Hashes哈希算法。Hash也被称作“散列”,可以把任意长度的输入字符通过Hash变换成固定长度的输出——也就是散列值。

Secure Hash Algorithm安全散列算法就是其中最为重要的一种Hash算法。SHA能计算出一个数字信息所对应到的,长度固定的字符串(又称信息摘要)的算法。SHA被FIPS认定为五种安全散列算法之一(SHA家族五大算法为SHA-1、SHA-224、SHA-256、SHA-384和SHA-512),因为:

一、由信息摘要反推原输入信息,从计算理论上来说是很困难的;

二、想要找到两组不同的信息对应到相同的信息摘要,从计算理论上来说也是很困难的。任何对输入信息的变动,都有很高的机率导致其产生的信息摘要迥异。

看得见的安全技术 盘点加解密进阶史

SHA家族对比(图片来自维基百科)

SHA-1, SHA-224, SHA-256, SHA-384 和 SHA-512 都被需要安全散列算法的美国联邦政府所应用,他们也使用其他的密码算法和协定来保护敏感的未保密数据。FIPS PUB 180-1 也鼓励私人或商业组织使用 SHA-1 加密。

除此之外,密码学历史上还出现了一种one-Time Pad(并非平板电脑)的加密系统,被誉为“密码编码学的圣杯”。

该加密系统由Gibert Vernam和Joseph Mauborgne发明。这种密码系统的密钥和明文具有相同的长度,而且密钥只可使用一次,因此也叫“一次一密”。

看得见的安全技术 盘点加解密进阶史

one-Time Pad

通信双方事先各有一个可以一页一页撕下来的本子,其中每页记录一个密钥(类似日历的使用),每使用一个密钥加密一条信息后,该页也就作废,下次加密时再使用下一页的密钥。接收者在解密信息后也销毁密钥本中用过的一页密钥。

它采用随机的二进制数据组成密钥。加密时,对密钥和明文进行异或操作,得到密文;解密时用同样的密钥和密文进行异或操作,得到明文。

一次一密度密钥必须是随机产生的,其缺点是需要非常长的密钥,从而导致大量的精力去产生和传输这种密钥。就目前来说,某些高度机密的低带宽信道也有采用这种一次一密度加密系统。据说美国和前苏联之间的热线电话也是采用这种一次一密度加密系统。

#p#

之前我们提到在加解密算法中需要使用密钥。1976年,在美国斯坦福大学的迪菲(Diffie)和赫尔曼(Hellman)两人提出了公开密钥的新思想。这种思想下不仅可以对加密算法进行公开,也可以对加密用的密钥进行公开。进一步地,如果将加密密钥和解密密钥设定为不一样,并对解密密钥进行保密即可保证安全。这也就是著名的公钥密码体系,也称作非对称密码体制。

在这种思想基础上,麻省理工学院的里维斯特(Ronald Rivest)、沙米尔(Adi Shamir)和阿德勒曼(Len Adleman)提出第一个较完善的公钥密码体制——RSA体制。它是由三位发明人的姓氏首字母命名,是一种建立在大数因子分解基础上的算法。它是第一个成熟的、迄今为止理论上最成功的公钥密码系统。

看得见的安全技术 盘点加解密进阶史

公钥私钥在加解密中的应用示意图

公钥通常用于加密会话密钥、验证数字签名,或加密可以用相应的私钥解密的数据。另一个自己保留,称为私钥。通过这种算法得到的密钥对能保证在世界范围内是唯一的。使用这个密钥对的时候,如果用其中一个密钥加密一段数据,必须用另一个密钥解密。比如用公钥加密数据就必须用私钥解密,如果用私钥加密也必须用公钥解密。

每支钥匙产生一个被使用来改变属性的功能。私有的钥匙产生一个私有改变属性的功能,而公开的钥匙 产生一个 公开改变属性的功能。如果一个功能是用来加密消息,另外一个功能则被用来解密消息。公开钥匙系统的优势是两个用户能够安全的沟通而不需交换秘密钥匙。因此它非常适合于提供认证,完整和不能否认的服务,所有的这些服务即是我们所知的数字签名。

数字签名,顾名思义,就是普通签章的数字化,它的特性是可以轻易被制造签章,但他人却难以仿冒。在数字签名算法中主要包括签署和验证。签署采用了私密钥处理信息或者信息的hash值而产生签章。验证则是使用公开钥匙验证签章的真实性。

值得指出的是,在密码学史上,还有一种叫做Steganography(隐写术)的信息隐藏技巧。它并非属于加密的范畴,但却起到了加密的效果。Steganography,来源于特里特米乌斯的一本讲述密码学与隐写术的著作Steganographia,该书书名源于希腊语,意为“隐秘书写”。

看得见的安全技术 盘点加解密进阶史

OpenStego信息隐秘工具

隐写的信息看起来像一些其他的东西,例如一张购物清单,一篇文章,一篇图画或者其他“伪装”的消息。 在当代,则更多的意味着将加密的数据进行隐藏。著名的有OpenStego应用工具。这是一款可以帮助用户将文件、加密数据隐藏在图片中的工具。

编后语:

从以上的介绍中我们不难发现,早期的加解密主要是通过机械、初级电子设备来实现。它们工作速度很慢、笨重,而现代的加解密则完全不同,更多的是依赖计算机和软件来实现。

通过计算机和软件的技术来实现加密,但也不意味着有更高的安全性,因为破解密码者同样可以通过计算机和软件来进行攻破。一个可靠的加密系统应该是采用了随机并且足够长的密钥来实现,此外还需要通信双方之间的沟通渠道有足够安全的保障机制。

首页
评论
分享
Top