此前介绍的都是基于手工编码来实现加解密功能,而采用这种人工编码原理的电报编码和译码在我国一直被应用到上世纪七八十年代,这多少有点令人遗憾。这种人工编码的方式效率极低,而且保密性也很差。
在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月都未能破解德国潜艇的密文。
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个循环,使用异或,置换,代换,移位操作四种基本运算。
对于计算数字签名来说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
通信双方事先各有一个可以一页一页撕下来的本子,其中每页记录一个密钥(类似日历的使用),每使用一个密钥加密一条信息后,该页也就作废,下次加密时再使用下一页的密钥。接收者在解密信息后也销毁密钥本中用过的一页密钥。
它采用随机的二进制数据组成密钥。加密时,对密钥和明文进行异或操作,得到密文;解密时用同样的密钥和密文进行异或操作,得到明文。
一次一密度密钥必须是随机产生的,其缺点是需要非常长的密钥,从而导致大量的精力去产生和传输这种密钥。就目前来说,某些高度机密的低带宽信道也有采用这种一次一密度加密系统。据说美国和前苏联之间的热线电话也是采用这种一次一密度加密系统。
之前我们提到在加解密算法中需要使用密钥。1976年,在美国斯坦福大学的迪菲(Diffie)和赫尔曼(Hellman)两人提出了公开密钥的新思想。这种思想下不仅可以对加密算法进行公开,也可以对加密用的密钥进行公开。进一步地,如果将加密密钥和解密密钥设定为不一样,并对解密密钥进行保密即可保证安全。这也就是著名的公钥密码体系,也称作非对称密码体制。
在这种思想基础上,麻省理工学院的里维斯特(Ronald Rivest)、沙米尔(Adi Shamir)和阿德勒曼(Len Adleman)提出第一个较完善的公钥密码体制——RSA体制。它是由三位发明人的姓氏首字母命名,是一种建立在大数因子分解基础上的算法。它是第一个成熟的、迄今为止理论上最成功的公钥密码系统。
公钥私钥在加解密中的应用示意图
公钥通常用于加密会话密钥、验证数字签名,或加密可以用相应的私钥解密的数据。另一个自己保留,称为私钥。通过这种算法得到的密钥对能保证在世界范围内是唯一的。使用这个密钥对的时候,如果用其中一个密钥加密一段数据,必须用另一个密钥解密。比如用公钥加密数据就必须用私钥解密,如果用私钥加密也必须用公钥解密。
每支钥匙产生一个被使用来改变属性的功能。私有的钥匙产生一个私有改变属性的功能,而公开的钥匙 产生一个 公开改变属性的功能。如果一个功能是用来加密消息,另外一个功能则被用来解密消息。公开钥匙系统的优势是两个用户能够安全的沟通而不需交换秘密钥匙。因此它非常适合于提供认证,完整和不能否认的服务,所有的这些服务即是我们所知的数字签名。
数字签名,顾名思义,就是普通签章的数字化,它的特性是可以轻易被制造签章,但他人却难以仿冒。在数字签名算法中主要包括签署和验证。签署采用了私密钥处理信息或者信息的hash值而产生签章。验证则是使用公开钥匙验证签章的真实性。
值得指出的是,在密码学史上,还有一种叫做Steganography(隐写术)的信息隐藏技巧。它并非属于加密的范畴,但却起到了加密的效果。 Steganography,来源于特里特米乌斯的一本讲述密码学与隐写术的著作Steganographia,该书书名源于希腊语,意为“隐秘书写”。
OpenStego信息隐秘工具
隐写的信息看起来像一些其他的东西,例如一张购物清单,一篇文章,一篇图画或者其他“伪装”的消息。 在当代,则更多的意味着将加密的数据进行隐藏。著名的有OpenStego应用工具。这是一款可以帮助用户将文件、加密数据隐藏在图片中的工具。
编后语:
从以上的介绍中我们不难发现,早期的加解密主要是通过机械、初级电子设备来实现。它们工作速度很慢、笨重,而现代的加解密则完全不同,更多的是依赖计算机和软件来实现。
通过计算机和软件的技术来实现加密,但也不意味着有更高的安全性,因为破解密码者同样可以通过计算机和软件来进行攻破。一个可靠的加密系统应该是采用了随机并且足够长的密钥来实现,此外还需要通信双方之间的沟通渠道有足够安全的保障机制。
本文来源:中关村在线 作者:佚名