密码学发展简史
密码学早在公元前400多年前就已经产生,人类使用密码的历史几乎与使用文字的时间一样长,密码学的发展大致可以分为3个阶段:
- 1949年之前的古典密码学阶段;
- 1949年至1975年密码学成为科学的分支;
- 1976 年以后对称密钥密码算法得到进一步发展,产生了密码学的新方向—公钥密码学。1976 年,W.Diffie 和 M.Hellman 在发表的文章“密码学的新方向”中首次公开提出了公钥密码( Public-key Cryptography) 的概念。公钥密码的提出实现了加密密钥和解密密钥之间的独立,解决了对称密码体制中通信双方必须共享密钥的问题,在密码学界具有划时代的意义。
几种常见的古典密码
古典密码学的历史可以追溯到公元前400年,斯巴达人发明了“塞塔式密码”,即把长条纸螺旋形地斜绕在一个多棱棒上,将文字沿棒的水平方向从左到右书写,写一个字旋转一下,写完一行再另起一行从左到右写,直到写完。解下来后,纸条上的文字消息杂乱无章、无法理解,这就是密文,但将它绕在另一个同等尺寸的木棒上后,就能看到原始的消息。这是最早的密码技术。
大陆古代也早有以藏头诗、藏尾诗、漏格诗及绘画等形式,将要表达的真正意思或“密语”隐藏在诗文或画卷中特定位置的记载,一般人只注意诗或画的表面意境,而不会去注意或很难发现隐藏其中的“话外之音”。如《水浒传》中梁山为了拉卢俊义入伙,“智多星”吴用和宋江便生出一段“吴用智赚玉麒麟”的故事来,利用卢俊义正为躲避“血光之灾”的惶恐心理,口占四句卦歌,其中暗藏“卢俊义反”四字。结果,成了官府治罪的证据,终于把卢俊义“逼”上了梁山。
芦花丛中一扁舟
俊杰俄从此地游
义士若能知此理
反躬难逃可无忧
更广为人知的是唐伯虎写的“我爱秋香”:
我画蓝江水悠悠
爱晚亭上枫叶愁
秋月溶溶照佛寺
香烟袅袅绕经楼
古典密码学更像是一门艺术,其核心手段是代换和置换。代换是指明文中的每一个字符被替换成密文中的另一个字符,接收者对密文做反向替换便可恢复出明文;置换是密文和明文字母保持相同,但顺序被打乱。
代换密码的著名例子有古罗马的凯撒密码(公元前1世纪)和法国的维吉尼亚密码(16世纪)。凯撒密码是对字母表中每个字母用它之后的第k个字母来代换,如,将“comeatnine”加密为“htrjfysnsj”(k=5)。但这种加密方式无法掩盖各字母的频率特征,易被破解。维吉尼亚密码相比之下提升了安全性,它的密钥通常是一个单词,如,“hear”,对于上述明文“comeatnine”,加密时将第1个字母后移8位(密钥“hear”的第一个字母h处于字母表第8位),第2个字母后移5位(密钥的第二个字母e处于字母表第5位),……,因此加密后的结果是“jsmvhxnzui”。
我们大家应该都看过抗战片,里面发报文的时候发的是密文,这个密文会对应一个密码本,比方说《三国演义》这本书。它的加密方式会告诉你加密的文字属于书中的那个字,当你解密完成之后,就可以得到明文的报文。这是一种常见的古典加密方法。
1.滚桶密码
为了保证通信信息的密码性,古希腊人通过使用一根叫scytale的棍子,将信息进行加密。送信人先将一张羊皮条绕棍子螺旋形卷起来,然后把要写的信息按某种顺序写在上面,接着打开羊皮条卷,通过其他渠道将信送给收信人。如果不知道棍子的粗细是不容易解密里面的内容的,但是收信人可以根据事先和写信人的约定,用同样的scytale的棍子将书信解密。下面是一个例子:
密文:经大们的意日那方过家参名被的些式短启观字埋凉投进暂程了和在风奔行的去一生教吹他着欢一个前堂来的沟迎家大从里,灵通仪中教事,庭魂。式国堂的是院就后餐。职因里在,馆围业为的风一吃绕。据古中本饭着副说树,正。一市这沙和经途个长样沙一的中天说他作群市。井们响不长副的那死,信公市石底后让神干长板下的人的去先路埋位惬中了生上着置意国,又,死离,人爱兴许人上也用开致多。帝让一玩勃石人最人种笑勃板们近觉超的地上之。得越市带刻所一上语长领着以阵帝言和我人愿夏和的
经过滚筒解密后的明文如图示:
2.掩格密码
16世纪米兰的物理学和数学家Cardano发明的掩格密码,可以事先设计好方格的开孔,将所要传递的信息和一些其他无关的符号组合成无效的信息,使截获者难以分析出有效信息。
3.棋盘密码
我们可以建立一张表,使每一个字符对应一数 , 是该字符所在行标号, 是列标号。这样将明文变成形式为一串数字密文。
4.凯撒(Caesar)密码
在罗马帝国时期,凯撒大帝曾经设计过一种简单的移位密码,用于战时通信。这种加密方法就是将明文的字母按照字母顺序,往后依次递推相同的字母,就可以得到加密的密文,而解密的过程正好和加密的过程相反。
原理:把一个字母替换为它后面固定位置的另一个字母(单表代换密码)。
A B C D E F G …… X Y Z
D E F G H I J …… A B C
明文:Caesar cipher is a shift substitution
密文:FDHVDU FLSKHU LV D VKLIW VXEVWLWXWLRQ
5.弗纳姆密码
1918年Gilbert Vernam 为AT&T设计的一种一次一密乱码本密码(多表代换密码)。原理:使用一个任意长的不重复数字序列,把它和明文组合在一起。
明文: V E R N A M C I P H E R
等价数字:21 4 17 13 0 12 2 8 15 7 4 17
+随机数: 76 48 16 82 44 3 58 11 60 5 48 88
和mod26: 19 0 7 17 18 15 8 19 23 12 0 1
密文: t a h r s p i t x m a b
6.圆盘密码
人们对凯撒密码进一步改善,只要将字母按照不同的顺序进行移动就可以提高破解的难度,增加信息的保密程度。如15世纪佛罗伦萨人Alberti发明圆盘密码就是这种典型的利用单表置换的方法加密的方法。如图在两个同心圆盘上,内盘按不同(杂乱)的顺序填好字母或数字,而外盘按照一定顺序填好字母或数字,转动圆盘就可以找到字母的置换方法,很方便的进行信息的加密与解密。凯撒密码与圆盘密码本质都是一样的,都属于单表置换,即一个明文字母对应的密文字母是确定的,截获者可以分析对字母出现的频率,对密码体制进行有效的攻击。Alberti的圆盘理论是古典密码学的主要代表之一, 在粘土圆盘的表面刻上带有空格的字母, 成为最初人类的加密方式, 这种方式至今还无人能破戒。
7.维吉尼亚密码
为了提高密码的破译的难度,人们有发明一种多表置换的密码,即一个明文字母可以表示为多个密文字母,多表密码加密算法结果将使得对单表置换用的简单频率分析方法失效,其中维吉尼亚密码就是一种典型的加密方法。维吉尼亚密码是使用一个词组(语句)作为密钥,词组中每一个字母都作为移位替换密码密钥确定一个替换表,维吉尼亚密码循环的使用每一个替换表完成明文字母到密文字母的变换,最后所得到的密文字母序列即为加密得到的密文。维吉尼亚是古典密码理论发展上的一个重要里程碑,他的理论又被称为多字母编码。
m个移位代换表由m个字母组成的密钥字确定
明文:w e a r d i s c o v e r e d s a v e
密钥:d e c e p t i v e d e c e p t i v e
对应数字:3 4 2 15 19 8 21
密文:Z I C V T WQNGRZGVTWAVZH
8.换位密码(置换密码)
换位就是将明文中的字母的位置重排。最简单的换位就是逆序法:
明文:computer system
密文:metsys retupmoc
列置换(纵行换位):把明文中的字符按列重新排列。例如:
明文:THIS IS A MESSAGE.
T H I S I
S A M E S
S A G E X
密文:TSSHAAIMGSEEISX
升级引入密钥“k”:
如k=COMPUTER,明文为:WHAT CAN YOU LEARN FROM THIS BOOK
密文为:WORO NNSX ALMK HUOO TETX YFBX ARIX CAHX
9.Enigma(英格码)转轮组的加密
Enigma转轮组的加密原理,正是多表替代——它通过不断改变明文和密文的字母映射关系,对明文字母们进行着连续不断的换表加密操作。三个转子不同的方向组成了262626=17576种不同可能性;三个转子间不同的相对位置为6种可能性;连接板上两两交换6对字母的可能性数目非常巨大,有100391791500种;于是一共有175766100391791500,大约为10000000000000000,即一亿亿种可能性。当时一台Enigma转轮组的加密24万人民币。
20世纪30年代领导波兰密码学家率先对德国使用的Enigma密码进行了系统性的研究和破译。在破译过程中,雷耶夫斯基首次将严格的数学化方法应用到密码破译领域,这在密码学的历史上是一个重要成就。雷耶夫斯基等人在二战期间破译了大量来自德国的信息,他们的工作成为整个二战期间盟国破译德军Enigma密码的基础。雷耶夫斯基与波兰数学家杰尔兹·罗佐基和亨里克·佐加尔斯基并称为密码研究领域的“波兰三杰”。