查看: 4568|回复: 13

[密码学习] 密码往事

简洁模式
7
发表于 2011-9-16 10:23:48 | 显示全部楼层
本文转载自果壳网,作者:吴师傅。个人觉得这篇文章写得挺好,对于密码不大了解的同学可以好好学习下。


信息时代,密码无处不在了,各种密码术也随处可见,为爱好者们津津乐道。而在此前很长一段时间,密码学作为一门行走在暗处的黑色艺术,一直不为大众所知,只在少数精英间流传。从凯撒的设计到二战时期美日间的较量,这个关于秘密通信的历史,精彩无比。有人设计密码,就有人破译密码,在这场智与智的较量中,遗下无数经典。让我们来了解几个最经典的密码,一起感受密码学里的艺术。

凯撒密码
引用
作为一名杰出的军事领袖,尤里乌斯•凯撒深知指挥官对前方将领的命令对于一场战争的重要性,这些信息绝对不能让敌方知道,于是他设计了一种对重要的军事信息进行加密的方法,即使这些信息被截获,敌方也不一定能看懂——这就是著名的凯撒密码,也算是最早的密码实例。

在这种密码中,从A到W的每个字母在加密时用字母表中位于后三位的那个字母代替,字母XYZ分别被替换成ABC。凯撒在这里是将字母向右移动了三位(如下图)。比如,在三个移位的情况下,信息DOG(这种需要加密的信息统称“明文”)就变换成GRJ(这种经加密后产生的的信息统称“密文”);密文FDW对应的明文则是CAT。可以看到,加密、解密过程都是以字母移位的位数为参照的。这种在加密和解密的算法中依赖的参数则被称为——密钥。



引用
当然,移位的选择并不仅仅限制在三位,从1到25任何数的移位都能产生类似效果。只要通信双方事先约定好,这个选择就很任意。很明显的是,移位方法最多也只有25种,这成为凯撒密码的致命弱点。一般情况下,穷举25种移位方法,得到25组新编码,必有一种编码是真实的情报内容,由于其它24组多是是毫无意义的字母组合,所以凯撒密码很容易就能被破译。

但是凯撒在当时很成功的使用了这种密码,还在《高卢战记》中颇为得意的记录下了这个加密设计。究其原因,只能是他的敌人并没有意识到他在使用密码。

改进后的加密法
引用
在凯撒密码的缺点暴露后,有人便对它做出了改进:用一个按随机顺序排列的字母表来替代正常顺序的字母表。这种简单代换方法达26!种,这个看起来不大的数字,数量级达到了10 26 ,也就是说穷举法破译已经失效了。但是,这种方法并非无懈可击,当它对一段比较长的英文信息加密时,依然容易被破译。这是英语本身的统计特性决定的。

众所周知,英语具有统计特性。每个字母的使用频率不同且差别很大。一篇文章中字母出现的相对预期频率是可以通过统计大量英语文章确定出来的。比如,英语文章中 E 的出现频率最高,大约是 12.7% 这样子;而 J 的出现频率最低,只有 0.1% 左右。当使用上述的简单代换密码时,字母表中特定字母总是被同一个字母代替,导致密文中字母出现的频率也会出现同样的不平衡性,再加上破译者对发密方背景的了解,要确定密文中包含的信息依然不是一件困难的事。

一个好的解决办法是用多个密文符号来表示同一个字母。每个字母有不同数量的的密文符号替代,替代者的数量与每个字母在英语统计中的频率成正比。例如,字母 a 在书面英语大约占 8% 的比例,所以我们可以分配8个符号来表示它。明文中出现的字母 a 在密文中可以被这8个符号中任一个替换。这样一来,每个符号在密文中的频率都在 1% 左右。类似处理所有英文字母。这样设计出的一套字母替换表,打乱了密文中的英语统计特性。但由于每个密文符号只代表唯一的明文符号,也会带来风险:对于一个给定的密钥,破译者能汇编出一部已知的明文与密文相对应的词典。

好几个世纪以来,上述的几种加密法保证信息了的安全。不过自从频度分析这种方法被引进到欧洲后,密码破译者终于占据了上风。苏格兰玛丽女王的悲剧充分诠释了这种密码的弱点。

“不可破译”的密码
引用
1586年,英国政府破译了苏格兰玛丽女王和同党谋反的密信,玛丽女王惨遭吊死。而她使用的就是字母替换这种单码加密法。这个事件也正式宣告上述密码已经全部失效。

同年,一位名叫维热纳尔的法国外交家出版了一本《密码理论》,介绍一种以他自己名字命名的新密码,而这本书一直无人问津。直到两百年后莫尔斯电码流行开来,为了防止电报员泄露信息和间谍窥探秘密,维热纳尔密码才被广泛应用。

维热纳尔密码一度被认为是无法破译的,以致让一些掌握这种密码的人洋洋自喜,不过很快,以建立了现代计算机的理论框架而闻名于世的怪才查尔斯•巴贝奇解决了这个难题。

事情起源于一个布里斯托尔的一个牙医赛瓦特。这个牙医其实对密码学知之甚少,1854年,他声称发明了一种新密码,并写信给《艺术协会杂志》企图获取专利。而他只不过是将维热纳尔密码重新包装了而已。巴贝奇写信揭露这个事实,赛维特却不愿承认,甚至为难巴贝奇让他破解这个密码。其实能否破解密码和密码是不是新创造的毫无关系,但这已足以激起巴贝奇的好奇心了。很快,他就成功破解了维热纳尔密码。

对于这样重要的成果,巴贝奇却没有发表它。这也符合他的性格:他一直是这种懒洋洋的态度。而更重要的原因恐怕是英国政府要求巴贝奇保密,从而让他们可以在这方面领先全世界9年——直到1863年卡西斯基也发现了破译方法并将它发表。

有趣的是,在美国的南北战争期间,南方联军仍然在使用黄铜密码盘生成维热纳尔密码,自始至终都只主要使用三个密钥,而那个时候这密码早就被破译了,所以北方政府在情报战上一直是笑而不语的。

维热纳尔密码的原理

维热纳尔密码又叫做维吉尼亚密码。它的加密过程是这样的:首先选择一个无重复字母的密钥词(比如 MATH ),重复密钥词直至它成为一个和明文信息一样长的字母序列,再利用下面这种方阵加密这条信息。为加密第一个字母 I,此时它下方对应的密钥词是 M,于是,加密 I 时由 M 对应的那行中读出 i 列下的字母即 U,类似的,得出所有密文:
信息 IL O V E Y O U
密匙 MA T H M A T H
密文 UL HC Q Y H B



这无疑是一种高明的加密手段,维热纳尔密码用严格的轮换方式重复使用一串简单的代换密码,很好的伪装了基础语言中的字母频率。它还有很多变化,比如有一种可以允许密钥词中出现重复字母。每种变化都会产生一些新的特征,从而引发破译方式的变化。

查尔斯•巴贝奇是破译维热纳尔密码的第一人,他的思路是:在已知密码周期(即所使用的密码组件数目,显然,上述版本的维热纳尔密码周期就是密钥词长度)为 p 的情况下,将密文改写成 p 行,使得每一列按原来的密文顺序排列,例如,p=3,密文 c1c2c3c4c5c6c7c8c9… 就排列成:

c1 c4 c7…

c2 c5 c8…

c3 c6 c9…

这样排列后,每行都是使用同一简单代换密码所得出的,如此就可以对每一行都使用上一节提到过的统计分析了。事实上,对每一行而言,这种简单的代换密码正是凯撒密码。

所以对于维热纳尔密码的破译者来说,关键就在于确定周期 p,巴贝奇则用了一种精巧的方法:在密文中搜索重复的字符串,它意味着两个重复模式之间的距离可能等于周期的整数倍!

难题又被破解!再一次,密码编译者开始寻找新的方法,继续这场智的较量。
本帖子中包含更多图片或附件资源

您需要 登录 才可以下载或查看,没有帐号?加入学院

本主题帖为【历史主题】,仅楼主发布内容可以浏览。
7
1 | 楼主| 发表于 2011-9-16 10:28:47 | 显示全部楼层
19世纪之前,维热纳尔密码可以说是密码学的巅峰之作。而自从巴贝奇和卡西斯基破坏了密码学的安全性之后,密码编码学就处于一种混乱状态。编码师们一直在寻找新的密码。而20世纪初意大利人马可尼发明了无线电技术,使得安全加密的需要更为紧迫。

在无线电开始普及之后,各国政府先后投入精力开始研究加密和破译技术。加上随之而来的第一次世界大战,密码学在影响了战争结果的同时,也在这段时间飞速发展。让我们一起看看这段时间的一些经典成果。

普莱费尔(Playfair)密码

在维热纳尔密码被破解之后,英国人查尔斯•惠斯通爵士开发了这种加密法。经他的朋友普莱费尔的大力提倡后,被英国政府部门和军队采用。它在1854到1855年的克里米亚战争和1899年的布尔战争中被广泛应用,直到1915年的一战时期才被破译。

普莱费尔加密法也是一种替换密码,不同的是它不仅比先前提到的维热纳尔加密法更加先进,同时它使用方便而且可以让英语字母的频率统计分析法再无用武之地。

在这种方法中,字母是成对而不是单个加密的。而密钥是一个5×5方阵(除J以外的25个字母随机排列)。加密之前,对明文信息要稍作如下处理:
引用
用I代替J;
将要加密的信息所有字母排列成字母对形式:XX XX XX XX……
遇到同样字母组成的字母对,在中间插入Z
如果明文中字母个数是奇数,在最后补Z

实际操作时,密钥是依赖一个关键词确定产生的。比如选取关键词“rainbow”,把这个词的所含字母按序写到矩阵中之后,用25个字母中余下未出现的字母按字母表顺序补全矩阵的剩余位置,如下图(当然也可以将25个字母随机排列到矩阵中,但是这样并不利于记忆与操作)。

当需要加密的信息用上述规则处理后,就可以按照一套既定的规则加密:

将密钥扩充成6行6列,第六行与第一行相同,第六列与第一列相同。

若两个字母在密钥中位于一行(列),每个字母替换为扩充后的密钥中位于它右侧(下方)的字母。

两个字母不同行不同列,则第一个字母替换成与它同行,列数与第二个字母相同的字母,第二个字母替换成与这三个字母形成矩形的字母。



破译Playfair
引用
与先前所述的密码术相比,普莱费尔密码功能强大。但它并不是无懈可击,至少可以通过关键词发现法破译这种密码。

这种方法是由美国军方的大弗兰克•穆尔曼在一战时期开发的。他利用关键词的一些特征猜测关键词字母完成破译。穆尔曼知道关键词中每三个辅音字母很可能有两个元音字母,而关键词往往包含一些更为普通的字母。他还发现,如果密文中的某个字母大量和其他字母组合,那该字母很可能就是关键词的字母(因为关键词字母在明文中使用更频繁)。

穆尔曼通过分析密文,找出这些字母,它们很可能包含了大部分关键词字母,顺着这些字母继续下去,将密钥补充完整,反复尝试,就可能找出关键词了(除非运气很好,一般情况下工作量还是很大的)。

在电影《国家宝藏2》中,英国女王曾向美国内战中的南方同盟写过两封关于黄金城的密信,以期南方同盟获得巨额财富战胜北方政府。其中第二封信就是用普莱费尔密码加密的。主人公尼古拉斯凯奇的曾曾祖父为了保护了这个秘密,拒绝为南方同盟破译了这个密码被杀。两百年后凯奇依靠曾曾祖父留下的关键词(death)破解了这个普莱费尔密码,找到了黄金城的重要线索,最终解开了这个谜团。

希尔密码

普莱费尔密码特别之处在于一次加密多个字母。当密码学家了解这种加密法后,他们进一步开始尝试以三连字甚至更多字为单位的加密法。但是他们失败了,其中一个重要原因是维护三维(或以上)表是十分困难的。要成功设计这种加密法,需要引进专业的数学方法。

希尔密码诞生在1929年,是以其发明人Lester S. Hill来命名的。他是纽约亨特学院的数学教授,在1929年发表一篇论文提出了这种基于联立方程的加密算法。

希尔密码以每次加密m个明文字母块完成加密过程。首先需要对26个字母赋值,通常是a=0,b=1,…,z=25(希尔本人采取的是随机赋值)。块中的每个字母的数值一起用于生成一组新的数值。例如,m=3,需要加密的明文块的三个字母的数值(设为p1、p2和p3)通过下面的方程组转换成密文数值C1、C2和 C3。

该加密法的密钥就是矩阵

举个例子,现在对矩阵赋值如下:

利用这个密钥和上面的方程,明文“now”首先转换成数字:13 14 22。将这些数值代入方程解得密文数值:23 20 4。再将这些数字转换成字母后,就得到密文“xue”了。

加密密钥是矩阵M,那么解密密钥就是 M -1 。这意味着要使解密可行,矩阵M必须是可逆的,因此密钥值并不能随意选取。从m=3的例子中归纳出用数学方法表达希尔密码的一般形式如下:

密钥为可逆矩阵

将明文分块使得每块含有n个字母(最后不足位以z不足),用n×1的向量表示。例如第 i 块含有字符p1,p2,p3,…,pn:

那么密文就由如下方程确定:


希尔密码很好的防止了密文被攻击。而当密钥矩阵越大时,该加密法抗攻击能力就越强。但是用已知明文攻击法可以很容易地破译该密码。其攻击过程类似先前提到的汇编一部明文与密文的对应词典。即用已知明文和密文建立方程组,求解后寻找出密钥。

其他的加密技术

到这里我们完成了对历史上几种最具代表性的加密系统的介绍,然而这也并非密码史的全部经典。还有不少精妙的加密法就不在此一一详述了。比如二战时期德军使用的Enigma加密法。它属于机械化的加密方法。Enigma加密法利用电机系统实现多码变换,这种系统叫做回转轮系统。回转轮是一个圆盘,它的两面都有电子接点,每个接点代表字母表中的一个字母。回转轮内部有连接各接点的电线,这种连接方式定义了简单单码替换方式。数个这样的回转轮和一个反射器组合起来就构成了强大的Enigma加密机。然而,这个加密法最终还是被英国政府联合波兰破解了。

结语

密码学从最初的凯撒密码至今,走过了一个漫长的道路。计算机的超强计算能力,让上述经典的加密方法都已失效。但是先哲的思想并未失效,密码学也仍然在飞速发展,眼下它正朝着量子系统前进。一旦进入这种新的世界,密码学会发生什么变化,我们只能靠猜测了。但可以预见的是,这一定不是密码学故事的结束,而只是刚刚开始。
本帖子中包含更多图片或附件资源

您需要 登录 才可以下载或查看,没有帐号?加入学院

尚未登录
您需要登录后才可以回帖 登录 | 加入学院