密码学充满神奇和挑战,激励人们为之奋斗终身。密码学和数学有千丝万缕的关系,有人觉得这很枯燥;密码学与计算机相关联,有人觉得这很纷繁复杂。但这是一场智慧的角力,从密码的设计到破解无一不闪耀着智慧的光芒;这也是一场耐心的竞赛,只有沉得住气的人才会获得成功。
在密码学史中,恩尼格玛密码机(德语:Enigma,又译哑谜机,或谜)是一种用于加密与解密文件的密码机。确切地说,Enigma是一系列相似的转子机械的统称,它包括了许多不同的型号。
恩尼格玛密码机(Enigma)
在二战期间,Enigma是在美丽的Bletchley Park(布莱切利园,是一座位于英格兰米尔顿凯恩斯(Milton Keynes)布莱切利镇内的宅第)破解的。密码专家在此Bletchley Park曾破解不少轴心国的密码与密码文件系统。正因如此,Bletchley Park附近一度成为解密中心。
从密码的起源了解密码
早期的密码技术主要用于提供机密性,最早可以追溯到公元前2000年,在古埃及的尼罗河畔,一位擅长书写者在贵族的墓碑上撰写铭文时有意用加以变形的象形文字而不是普通的象形文字。这种文字由复杂的图形组成,其含义只被为数不多的人掌握,如。这是史载的最早的密码形式。
历史上第一件军用密码装置是公元前5世纪的斯巴达密码棒(Scytale),如图所示,它采用了密码学上的移位法(Transposition)。移位法是将信息内字母的次序调动,而密码棒采用了字条缠绕木棒的方式,把字母进行位移。收信人要使用相同直径的木棒才能得到还原的信息。
古代隐写术也是战时传递秘密信息的重要手段。罗马“历史之父”希罗多德以编年史的形式记载了公元前5世纪希腊和波斯间的冲突,其中介绍到正是由于一种叫隐写术的技术才使希腊免遭波斯暴君薛西斯一世征服的厄运。薛西斯花了足足5年的战争准备,计划于公元前480年对希腊发动一场出其不意的进攻。但是波斯的野心被一名逃亡在外的希腊人德马拉图斯发现了,他决定给斯巴达带去消息以告诉他们薛西斯的侵犯企图。可问题是消息怎样送出才不被波斯士兵发现。他利用一副已上蜡的可折叠刻写板,先将消息刻写在木板的背面,再涂上蜡盖住消息,这样刻写板看上去没写任何字。最终希腊人得到了消息,并提前做好了战争准备。致使薛西斯的侵略失败。德马拉图斯的保密做法与中国古人有异曲同工之妙。中国古人将信息写在小块丝绸上,塞进一个小球里,再用蜡封上,然后让信使吞下这个蜡球以保证信息安全。这种方法在现代电视剧《暗算》中多次使用。
最早将现代密码学概念运用于实际的人是恺撒大帝(Gaius Julius Caesar,盖乌斯·尤利乌斯·恺撒,公元前100—前44年,图3-8所示)。他是古罗马帝国末期著名的统帅和政治家。虽然他一生从未登上过皇位,但是直到今天在西方国家,他的名字仍是君主的代名词。他博学多才、文武双全,既是卓越的军事家又是雄辩的文学家。在掌权期间,恺撒南征北伐使罗马的版图得到了空前的扩大,他还把自己的亲身经历写成著名的战争回忆录—《高卢战记》和《内战记》。而现在我们使用的公历就是从他所采用的“儒略历”演变过来的。当然最富娱乐性的还有他和“埃及艳后”克丽奥佩托拉七世(希腊语:Κλεοπατρα Ζ,古埃及托勒密王朝的最后一任法老)的一段风流情史。Caser不相信负责他和他手下将领通信的传令官,因此他发明了一种简单的加密算法把他的信息加密,后来被称为“Caesar密码”(图3-9)。当Caesar说“Hw wx,Euxwh!”而不是“Et tu,Brute!”(“你这畜生!”)时,他的心腹会懂得他的意思。《高卢战记》有描述恺撒曾经使用密码来传递信息。值得一提的是,大约2000年后,联邦将军A.S. Johnson(约翰逊)和PierreBeauregard(皮埃尔·博雷加德)在希洛战斗中再次使用了这种简易的密码。
Caesar密码是将字母按字母表的顺序排列,并且最后一个字母与第一字母相连。加密方法是将明文中的每个字母用其后面的第三个字母代替,就变成了密文。例如:“世博上海”
E X P O S H A N G H A I
的Caesar密码是:
H A S R V K D Q J K D L
这很容易从Caesar密码的代替表得到。
Caesar密码代替表
明文 | a | b | c | d | e | f | g | h | i | j | k | l | m |
密文 | D | E | F | G | H | I | J | K | L | M | N | O | P |
明文 | n | o | p | q | r | s | t | u | v | w | x | y | z |
密文 | Q | R | S | T | U | V | W | X | Y | Z | A | B | C |
Caser密码是替换加密法,属经典密码学(Classical Cryptography)中的一种,它将一组字母换成其他字母或符号。另一种经典加密方法是置换加密法,它将字母的顺序重新排列。例如,给出密文:
OPXE IAHGNAHS
你能猜出这是什么意思吗?我们只要将每个单词倒过来读,就会迅速恢复明文:
SHANGHAI EXPO
再比如,在美国南北战争时期,军队中曾经使用过“双轨”式密码,也称为“栅栏密码”,加密时先将明文写成双轨的形式,例如将shanghai expo写成:
s a g a e p
h n h i x o
然后按行的顺序书写即可得出密文:sagaephnhixo.解密时,先计算密文中字母的总数,然后将密文分成两部分,排列成双轨形式后按列的顺序读出即要恢复的明文。
在第一次世界大战期间,德国间谍曾经依靠字典来编写密文。例如100-3-16表示某字典的第100页第3段的第16个单词。但是,这种加密方法并不可靠,美国情报部门搜集了所有德文字典,只用了几天时间就找出了德方所用的字典,从而破译了这种密码,致使德军损失惨重。
计算机的出现,大大地促进了密码学的变革,正如德国学者T.Beth所说:“突然,现代密码学从半军事性的角落里解脱出来,一跃成为通信科学一切领域中的中心研究课题。”由于商业应用和大量计算机网络通信的需要,人们对数据保护、数据传输的安全性越来越重视,这更大地促进了密码学的发展与普及。
从基本概念了解密码
密码学的基本目的是使得两个在不安全信道中通信的人,我们称为Alice和Bob,以一种使他们敌手Cracker不能明白和理解通信内容的方式进行通信。不安全信道在实际中是普遍存在的,比如电话线或计算机网络。Alice发送给Bob的是未被加密的信息,通常称为明文(Plaintext),例如英文单词、数字、符号和图像。Alice使用预先商量好的密钥(Key)对明文进行加密,加密过的明文称为密文(Ciphertext),Alice将密文通过信道发送给Bob。对于Cracker来说,他可以窃听到信道中Alice发送的密文,但是无法知道其所对应的明文;而对于接收者Bob,由于知道密钥,可以对密文进行解密,从而获得明文。图中给出加密通信的基本过程。