维吉尼亚密码引入了“密钥”的概念,即根据密钥来决定用哪一行的密表来进行替换,以此来对抗字频统计。假如以上面第一行代表明文字母,左面第一列代表密钥字母,对如下明文加密:
TO BE OR NOT TO BE THAT IS THE QUESTION
当选定RELATIONS作为密钥时,加密过程是:明文一个字母为T,第一个密钥字母为R,因此可以找到在R行中代替T的为K,依此类推,得出对应关系如下:
密钥:RE LA TI ONS RE LA TION SR ELA TIONSREL
明文:TO BE OR NOT TO BE THAT IS THE QUESTION
密文:KS ME HZ BBL KS ME MPOG AJ XSE JCSFLZSY
与凯撒密码类似,进行一下运算两次即可
维吉尼亚密码的原理与凯撒密码类似,其实是凯撒的一种强化和变形,通过使加密相同明文的秘钥不同,来掩盖字符的频率。
但也不是找不到字符频率,我们可以发现,将用"h"字符加密的明文取出之后,就变成了普通的凯撒加密,这是可以通过字符频率分析来破解的。
用到的数学公式:重合指数
1.破解秘钥长度N。
2.将密文分成N组,逐个破解秘钥。
其中fi为每个字符在英文当中的频率。fi^2则表示连续取出两个相连的字符,它们相同的概率。英文中对26种情况求和的统计结果约为0.065。
Ni/N为密文中某个字符占密文的比例,假设秘钥长度为key_len,如果key_len组密文中的重合指数IC1也都与0.065接近,那么就可以推测key_len是秘钥长度了。
当秘钥长度key_len知道以后,我们将密文分成key_len个组,计算每个分组的IC2。
举个栗子:如果第一个分组都是用b字符进行加密,那么a字符的频率会转移到b字符上,c字符的频率会转移到d字符上......我们也做这种相应的转移,让b字符在密文的频率(N1/L)和a字符在英文的频率f0相乘,当然这只是其中一种猜测。我们将这26种字符可能都列出来,最接近IC的一定是用b字符加密的那一组。
维吉尼亚加密法。
讲到概率论出现之后,传统的移位法就不好使了。
维吉尼亚加密法,就是为了对抗频率分析出现的——使用这套加密方法之后,字母的频率特征会消失。
一般认为,做出这套加密法的是法国外交官布莱斯·德·维吉尼亚。
但这个结论有很多争议,在他之前40多年的德国炼金术士约翰尼斯发明的表格法,也包含其中关键部分;在他之前80多年,意大利诗人莱昂也提出过这种方法的关键部分。
一个发明到底归属谁有必要考据细节吗?
当然没有。我主要是想指出一个规律——凡是出现了一个发明权一堆人抢的情况,就说明那个领域已经形成了成熟的行业。
密码学也是如此。我们暂且认为维吉尼亚就是发明人吧。问题来了,他一个外交官怎么会对密码学研究那么深呢?有两个原因:
在18世纪初,欧洲各国都有隶属于情报机构,专门负责加密解密的部门,叫“黑房厅”。它是和邮政系统配合运行的。
每天有大批信件本来是从各地寄到邮局,再从邮局分发出去。黑房厅出现后,一部分信就不是从邮局直接递给收信人了,而是要先经过黑房厅,再送到收信人手里。
哪部分信件要绕这么一道弯儿呢?
其实就是所有寄给当地大使馆的信件,会受到这种特殊待遇。因为这里很可能有机密信息。
虽然我直接把内幕说出来了,但黑房厅在当年运作的时候是完全保密的,人不知鬼不觉。信件不能因为破译需要时间,而让对方使领馆人员察觉到递送超时。
以当时最著名的维也纳黑房厅来说,每天早上7点,信件先抵达黑房厅,工作人员小心翼翼的融开封口,由专门的速记员把信件誊写抄录,如果是很偏门的语言,就由专家出马誊写。然后马上把信封好口,在三小时内送回邮局,邮局再按正常流程递送出去。
那时各国都在重要信件上使用了加密法,最初普遍采用替代法和移位法的混合,但对掌握频率分析法的黑房厅来说,总是可以破译。
奥地利除了自己偷看信,还暗中把消息卖给其他国家的情报部门。没过几年,很多国家察觉到自己的加密可能失效了,于是就催生出下一代加密法。
为了弄懂后面新的加密法,我们有必要先来回顾一下第二代加密法存在哪些漏洞。
讲了替代法的破解原理,因为每个字母实际使用的频率是有固定值的,所以不论那些字母被什么符号替代了,都可以从频率上找出它的真身。
玛丽女王就生活在加密法打不过解密法的年代。其实在她被砍头的40年前,新的加密法已经出现了,它是替代法的改进版,叫“多套符号加密法”。
为了掩盖字母使用中暴露的频率特征,解决办法就是用多套符号代替原来的文字,比如原文的字母是A,从前只把它替换成F,现在把它替换成F或者G这两个。那什么时候用F什么时候用G呢?可以自行规定,比如说,字母在奇数位时用F代替,字母在偶数位时用G代替。
从前单套符号替代的时候,凡是文字中频率为7.63%的符号,差不多就代表A了。但现在A由F和G混合在一起,7.63%的特征不再出现,哪个符号代表A就没人知道了,于是频率分析法暂时失效。
而且,多套符号加密法并没满足于2-3套,后来典型使用的是26套。
这个用了26套字符的方法,就是第三代密码“维吉尼亚加密法”。就是它,成功压制了解密一方的频率分析法。
它是一个表格,第一行代表原文的字母,下面每一横行代表原文分别由哪些字母代替,每一竖列代表我们要用第几套字符来替换原文。一共26个字母,一共26套代替法,所以这个表是一个26×26的表。
维吉尼亚密码表
它具体是怎么加密呢?
假设我要给“hello”加密,现在的思路和单套的加密方法不一样了。单套的时候,我们可以指定这个表里任意一横行,比如指定第8行的意思就是说,原文中的字母都往后移8位,只使用这一行的规则,“hello”就变成了PMTTW。
但现在我们的思路是用多套密码,不能只用第8行第8套。于是我们就这样指定:
你说这听着怎么这么乱啊?具体每个字母移动多少位竟然要单独指定,太麻烦了吧?
如果原文只是hello这种词还好,要是一封信的话,一个字母一个字母的规定用哪套替代,不但加密费劲,解读也费劲。只能单独再写一本说明书出来,照着它一个字母一个字母的还原,费时费力、容易出错不说,连加密的初衷都实现不了。
因为这份说明书的文字量比原文还要多得多,而且这个说明书还必须以谁都可以看懂的方式书写。想让收信方看明白,必须要送一本加密说明书给对方,如果说明书被截获,内容也就白加密了。
这个问题是这么解决的:
第三代的维吉尼亚加密法在真实使用时,人们事先规定每个字母用了哪套移位法时,并不是毫无规律的瞎指定,而是要约定一个规则,这个规则就叫作 “ 钥匙 ”。
钥匙最初只是一个单词,比如,像钥匙是yes,那怎么加密呢?
你看,yes的y是第25个字母,就代表加密时把原文第一个字母往后移25位;yes的第二个字母e是字母表中第5个字母,就代表把原文的第二个字母往后移5位;yes的第三个字母s在字母表中是第19个字母,就代表把原文第3个字母后移19位。这样原文的前三个字母,就分别用了第25套、第5套、第19套替代法。
那原文第4个、第5个、第6个字母怎么解决呢?好办,就按刚刚的规则循环就好。
这样“hello”在钥匙是yes的情况下,就被加密成了FIDJS。
这样的好处是,原文里同一个字母会被加密成不同字符,hello中的两个“l”分别变成了D和J。而且密文中同样的字符也可能代表不同的原文,谁和谁都不对应。
1586年,维吉尼亚把这个想法写在了《密码论》中发表。
而上节课我们说的玛丽女王是在1587年被砍的头,如果她和反叛军能用到这本书里的加密方法,也许会是另一种命运。
维吉尼亚法相比从前的加密法,破解难度上了一个新的台阶,按理说应该倍受青睐吧?结果恰恰相反——它在出现后的200年里,几乎没有人使用。
原因很简单,太麻烦了。咱们第一节课就讲到,真正好用的密码,是在安全性和效率上找到了平衡点。
你想,用单套密码的时候,当年玛丽女王稍作训练,在监狱里就可以抛开字典直接用密文回信,但是如果用维吉尼亚密码的话,估计她老得翻字典。
而且大家也可以设身处地的想想,加密法可是一套26×26的表格,而且还有长短不一的钥匙。每加密一个字母,都要在表格里找来找去,就算是在熟练操作的情况下,加密一个字母也得要3秒钟的时间。写完一篇500字的短文,要3个多小时的高强度工作。慢还不说,这样来回来去的查和写,还容易出错。
所以在它诞生后的200多年时间里,几乎没有人用。既然没人使用,自然200多年也就没有人破解。
直到1861年到1865年美国南北战争时期,维吉尼亚加密法才被广泛使用。
为什么会这样?是因为人们脑子变聪明了,手更快了吗?
不是的,而是因为随着科学技术的发展,那时候加密解密的工作已经可以由机械来完成。1860年代,不但已经有了蒸汽机,也有了电动机,这种有规律的体力活儿机器是最擅长干的,既不会抱怨累,也不太会出错。
从维吉尼亚法推迟200多年才得到实际使用,我们能明白一个道理——
基础学科的发展是工程领域发展的根基,新理论的发明要比产品的发明重要得多。
就算是只限于密码学领域,这个规律也反复出现了多次,而且大都集中在维吉尼亚密码法诞生之后。
因为16世纪初,现代科学已经在欧洲出现了。科学理论用得好就能生出新技术,新技术解决一个个困难,让人类更愿意把精力投入到科学中,于是又产生出更多的技术,形成了一个正反馈。
在这样一个新环境里,出现了一个有意思的情况:
维吉尼亚加密法是这样,维吉尼亚加密法的破解也一样是这样。
这并不是偶然,而是现代科学出现后的常态,在任何领域都是如此。
知道了这个规律,我们就会少一分对伟大发明家的崇拜,多一分对背后科学原理的敬畏。
学号:16030140019
姓名: 莫益彰
【嵌牛导读】:凯撒密码是一种简单的加密方法,即将文本中的每一个字符都位移相同的位置。如选定位移3位:
原文:a b c
密文:d e f
由于出现了字母频度分析,凯撒密码变得很容易破解,因此人们在单一恺撒密码的基础上扩展出多表密码,称为“维吉尼亚”密码。
【嵌牛鼻子】密码学,计算机安全。
【嵌牛提问】维吉尼亚怎么破解,8位维吉尼亚是否可破?维吉尼亚算法的时间复杂度?
【嵌牛正文】
维吉尼亚密码的加密
维吉尼亚密码由凯撒密码扩展而来,引入了密钥的概念。即根据密钥来决定用哪一行的密表来进行替换,以此来对抗字频统计。假如以上面第一行代表明文字母,左面第一列代表密钥字母,对如下明文加密:
TO BE OR NOT TO BE THAT IS THE QUESTION
当选定RELATIONS作为密钥时,加密过程是:明文一个字母为T,第一个密钥字母为R,因此可以找到在R行中代替T的为K,依此类推,得出对应关系如下:
密钥:RE LA TI ONS RE LA TION SR ELA TIONSREL
明文:TO BE OR NOT TO BE THAT IS THE QUESTION
密文:KS ME HZ BBL KS ME MPOG AJ XSE JCSFLZSY
图解加密过程:
在维吉尼亚(Vigenère)的密码中,发件人和收件人必须使用同一个关键词(或者同一文字章节),这个关键词或文字章节中的字母告诉他们怎么样才能前后改变字母的位置来获得该段信息中的每个字母的正确对应位置。
维吉尼亚密码的破解
维吉尼亚密码分解后实则就是多个凯撒密码,只要知道密钥的长度,我们就可以将其分解。
如密文为:ABCDEFGHIJKLMN
如果我们知道密钥长度为3,就可将其分解为三组:
组1:A D G J N
组2:B E H K
组3:C F I M
分解后每组就是一个凯撒密码,即组内的位移量是一致的,对每一组即可用频度分析法来解密。
所以破解维吉尼亚密码的关键就是确定密钥的长度。
确定密钥长度
确定密钥长度主要有两种方法,Kasiski 测试法相对简单很多,但Friedman 测试法的效果明显优于Kasiski 测试法。
Kasiski 测试法
在英文中,一些常见的单词如the有几率被密钥的相同部分加密,即原文中的the可能在密文中呈现为相同的三个字母。
在这种情况下,相同片段的间距就是密文长度的倍数。
所以我们可以通过在密文中找到相同的片段,计算出这些相同片段之间的间距,而密钥长度理论上就是这些间距的公约数。
然后我们需要知道重合指数(IC, index of coincidence)的概念。
重合指数表示两个随机选出的字母是相同的的概率,即随机选出两个A的概率+随机选出两个B的概率+随机选出两个C的概率+……+随机选出两个Z的概率。
对英语而言,根据上述的频率表,我们可以计算出英语文本的重合指数为
P(A)^2 + P(B)^2+……+P(Z)^2 = 0.65
利用重合指数推测密钥长度的原理在于,对于一个由凯撒密码加密的序列,由于所有字母的位移程度相同,所以密文的重合指数应等于原文语言的重合指数。
据此,我们可以逐一计算不同密钥长度下的重合指数,当重合指数接近期望的0.65时,我们就可以推测这是我们所要找的密钥长度。
举例来说,对密文ABCDEABCDEABCDEABC
首先测试密钥长度=1,对密文ABCDEABCDEABCDEABC统计每个字符出现的次数:
A: 4 B: 4 C: 4 D:3 E:3
那么对于该序列的重合指数就为:(4/18)^2 + (4/18)^2 + (4/18)^2 +(3/18)^2 +(3/18)^2 != 0.65
然后测试密钥长度=2,将密文ABCDEABCDEABCDEABC分解为两组:
组1:A C E B D A C E B
组2:B D A C E B D A C
我们知道如果密钥长度真的是2,那么组1,组2都是一个凯撒密码。对组1组2分别计算重合指数。
如果组1的重合指数接近0.65,组2的重合指数也接近0.65,那么基本可以断定密钥长度为2。
在知道了密钥长度n以后,就可将密文分解为n组,每一组都是一个凯撒密码,然后对每一组用字母频度分析进行解密,和在一起就能成功解密凯撒密码。
上文已经说到,自然语言的字母频度是一定的。字母频度分析就是将密文的字母频度和自然语言的自然频度排序对比,从而找出可能的原文。
采用替代密码算法中的维吉尼亚密码方法,密文C=“HEADVIGENERE”,密钥K=KEY,求明文P
将密文HEADVIGENERE用密钥替换后为KEYKEYKEYKEY
替换前:HEADVIGENERE
替换后:KEYKEYKEYKEY
解密求明文:
按替换后的内容找到第一行的K所在位置向下寻找,找到H的位置,当前行最左侧第一列对应的就为明文X
加密求密文:
按明文找到第一列对应的H,在从第一行中找到对应的密钥K,两个位置相交的值就为密文.
答案:
HEA DVI GEN ERE
KEY KEY KEY KEY
XAC TRK WAP UNG