网络安全技术作业--如何破解多表替代密码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

背景了解
替代是古典密码中用到的最基本的处理技巧之一。

替代密码是指先建立一个替换表,加密时将需要加密的明文依次通过查表,替换为相应的字符,明文字符被逐个替换后,生成无任何意义的字符串,即密文,替代密码的密钥就是其替换表。

根据密码算法加解密时使用替换表多少的不同,替代密码又可分为单表替代密码和多表替代密码。

单表替代密码的密码算法加解密时使用一个固定的替换表。

单表替代密码又可分为一般单表替代密码、移位密码、仿射密码、密钥短语密码。

多表替代密码的密码算法加解密时使用多个替换表。

多表替代密码有弗吉尼亚密码、希尔(Hill)密码、一次一密钥密码、Playfair密码。

多表替代密码
单表替代密码表现出明文中单字母出现的频率分布与密文中相同,多表替代密码使用从明文字母到密文字母的多个映射来隐藏单字母出现的频率分布,每个映射是简单替代密码中的一对一映射多表替代密码将明文字母划分为长度相同的消息单元,称为明文分组,对明文成组地进行替代,同一个字母有不同的密文,改变了单表替代密码中密文的唯一性,使密码分析更加困难。

多表替代密码的特点是使用了两个或两个以上的替代表。

著名的维吉尼亚密码和Hill 密码等均是多表替代密码。

⒈维吉尼亚密码
维吉尼亚密码是最古老而且最著名的多表替代密码体制之一,与位移密码体制相似,但维吉尼亚密码的密钥是动态周期变化的。

该密码体制有一个参数n。

在加解密时,同样把英文字母映射为0-25的数字再进行运算,并按n个字母一组进行变换。

明文空间、密文空间及密钥空间都是长度为n的英文字母串的集合,因此可表示
加密变换定义如下:
设密钥k=(k1,k2,…,kn), 明文m=(m1,m2,…,mn), 加密变换为:
Ek(m)=(c1,c2,…,cn),
其中ci(mi + ki)(mod26),i =1,2,…,n
对密文c=(c1,c2,…,cn), 解密变换为:
Dk(c)=(m1,m2,…,mn), 其中 mi=(ci -ki)(mod26),i =1,2,…,n
⒉希尔(Hill)密码
Hill密码算法的基本思想是将n个明文字母通过线性变换,将它们转换为n个密文字母。

解密只需做一次逆变换即可。

⒊一次一密密码(One Time Pad)
若替代码的密钥是一个随机且不重复的字符序列,这种密码则称为一次一密密码,因为它的密钥只使用一次。

该密码体制是美国电话电报公司的Joseph Mauborgne在1917年为
电报通信设计的一种密码,所以又称为Vernam密码。

Vernam密码在对明文加密,前首先将明文编码为(0,1)序列,然后再进行加密变换。

设m=(m1 m2 m3 … mi …)为明文,k=(k1 k2 k3 … ki …)为密钥,其中mi,ki ∈(0,1), i≥1, 则加密变换为:c=(c1 c2 c3 … ci …) ,其中ci = mi Å ki , i≥1,这里为模2加法(或异或运算)
解密变换为:
m=(m1 m2 m3 … mi …) ,其中mi = ci Å ki , i≥1,
在应用Vernam密码时,如果对不同的明文使用不同的随机密钥,这时Vernam密码为一次一密密码。

由于每一密钥序列都是等概率随机产生的,敌手没有任何信息用来对密文进行密码分析。

香农(Claude Shannon)从信息论的角度证明了这种密码体制在理论上是不可破译的。

但如果重复使用同一个密钥加密不同的明文,则这时的Vernam密码就较为容易破译。

若敌手获得了一个密文c=(c1 c2 c3 …ci …) 和对应明文
m=(m1 m2 m3 …mi …) 时,就很容易得出密钥k=(k1 k2 k3 …ki …) ,其中ki = ciÅ mi,i≥1。

故若重复使用密钥,该密码体制就很不安全。

实际上Vernam密码属于序列密码,加密解密方法都使用模2加,这使软
硬件实现都非常简单。

但是,这种密码体制虽然理论上是不可破译的,然而
在实际应用中,真正的一次一密系统却受到很大的限制,其主要原因在于该
密码体制要求:
①密钥是真正的随机序列;
②密钥长度大于等于明文长度;
③每个密钥只用一次(一次一密)。

这样,分发和存储这样的随机密钥序列,并确保密钥的安全都是很因难
的;另外,如何生成真正的随机序列也是一个现实问题。

因此,人们转而寻
求实际上不对攻破的密码系统。

⒋Playfair密码
Playfair密码是一种著名的双字母单表替代密码,实际上Playfair密码属于一种多字母替代密码,它将明文中的双字母作为一个单元对待,并将这些单元转换为密文字母组合。

替代时基于一个5×5的字母矩阵。

字母矩阵构造方法同密钥短语密码类似,即选用一个英文短语或单词串作为密钥,去掉其中重复的字母得到一个无重复字母的字符串,然后再将字母表中剩下的字母依次从左到右、从上往下填入矩阵中,字母I,j占同一个位置。

题目:如何破解多表替代密码?(提示-先确定周期)
单表中的凯撒密码,字母的替换是整体移位,一般破解单表替换的密文,主要以字母出现的频率做频率分析和字母出现的顺序做模式检查,找出映射关系,破译简单的替换式密码。

对于多表的从凯撒密码拓展出来的维吉尼亚密码为例,根据老师的提示我们可以先通过任意比密钥长很多的加密信息找出对同一个单词或事件的加密后第一重复出现相同加密后的间隔,也就是确定明文中同样的字母序列使用密钥中同样的字母加密的周期,当然也有很小的可能是不同的明文字母序列通过密钥的不同部分加密后形成的相同密文,但是我们可以通过大量的数据或者限制范围很大程度的排除这种情况。

多表代换密码体制的分析方法主要分为三步:第一步确定秘钥长度,常用的方法有卡西斯基(Kasiski)测试法和重合指数法(Index of Coincidence);第二步就是确定秘钥,常用的方法是拟重合指数测试法;第三步是根据第二步确定的密钥恢复出明文。

总之,第一步就是找出密文中重复出现一次以上字母,第二步就是通过这些重复出现的密文确定密钥的长度,第三步再进行频率分析,频率分析主要要注意特征比较显著的字母段,还要结合实际的情况分析明文中可能出现的高频字符串,当然还有英文语法中的单词,为了直观的感受也需要作出图表方便对比差异和规律性的波动。

Kasiski测试法:若用给定的m个密钥表周期地对明文字母加密,则当明文中有两个相同字母组在明文序列中间隔的字母数为m的倍数时,这两个明文字母组对应的密文字母组必相同。

但反过来,若密文中出现两个相同的字母组,它们所对应的明文字母组未必相同,但相同的可能性很大。

如果我们将密文中相同的字母组找出来,并对其相同字母数综合研究,找出它们的相同字母数的最大公因子,就有可能提取出有关密钥字的长度m的信息。

具体方法:搜索长度至少为3的相同密文段,记录这些相同密文端到起始点之间的距离(d1,d2,d3……),找出(d1,d2,d3……)的所有公因子,同样为了确保秘钥长度的准确性,我们在搜索另一至少长为3的相同密文段,重复上操作,最后找出他们共同的公因子,若公因子不唯一,则在采用下边的重合因子测试法确定密钥长度。

重合指数法(index of coincidence,又称一致检索法)是Wolfe Friendman于1920年提出的方法。

首先利用Kasiski测试法猜测出密钥的长度,然后利用重合指数法进行验证我们的猜测对不对。

根据基本测试和计算,26个字母构成的一段有意义文字中,任取两个元素刚好相同的概率约为0.065,所以如果一段明文是用同一个字母做密钥加密的话,这个概率是不变的。

首先根据Kasiski测试法得到了一个猜测出来的密钥长度m=5。

我们可以直奔主题验证m=5时的概率,但是也可以谨慎地从m=1开始验起。

验证m=1的情况方法如下:
首先将密文(按顺序)排成一列,两两选取字母(取遍所有可能情况),计算其相同的概率。

当然像图中所述例子,用手算显然不是我们想要的,我们如果自己想算的话可以利用计算机程序。

我们用“字母相同的次数”除以“总抽取次数”即可得这一概率。

最后计算出来的结果是0.045,很显然它更接近0.038,而不是0.065。

验证m=2的情况方法如下:
将密文按顺序
1 2
3 4
5 6
...
排成两列,对每一列用类似m=1的方法去做,则每一列可以得到一个概率,也就是说我们到手了两个概率0.046,0.041,显然它们也是离0.038更近,离0.065更远。

m=3,m=4的情况类似可做。

见证奇迹的时刻到了,我们终于等到验证m=5的情况了。

首先将密文按顺序
1 2 3 4 5
6 7 8 9 10
...
排成5列,对每列计算“任取两个字母刚好相同”的概率,分别为0.063,0.068,0.069,0.061,0.072,好了,数字完全不一样了,完全是我们希望的节奏了。

它们和0.065非常滴接近。

在一串无规律的字母中,我们随意抽取两个字母,由于每个字母被抽到的概率相同,因此抽取的两个字母相同的概率为26*(1/26)^2=0.0385.如果是从一篇文章或者一句完整的话中抽取的概率为P(a)^2+P(b)^2+….+p(z)^2=0.0687.这种特性是破译密码的一大关键,正常的单表替代,其重合指数更接近于0。

0687,而像维吉尼亚密码这类周期性多表替代,其重合指数更接近于0.0385,所以通过重合指数便可以判断密文的加密类型。

当然,前面说过,她的作用绝对不仅仅于此。

现在,简单介绍下如何从密文中获得重合指数:
已知从n个密文中抽取两个字母的方式有Cn^2=n(n-1)/2种,其中N(A)个A组成一对的方式有CAN^2=NA(NA-1)/2种,所以抽到的两字母都为A的概率为NA(NA-1)/N(N-1),以此类推,密文的重合指数就是简称IC
现在大家对于重合指数都有一定的了解了,现在来实践下,体验它更强大的威力~~让它来判断下维密的密钥长度吧。

假设密钥长度为d,将密文一行行地卸载一张有d个列的表格里,再一列列写下来.
如:密文为 cdgfxzycmnzl 假设长度为3 则列出下表
1 2 3
C d g
F x z
Y c m
N z l
所以第一列为cfyn二为dxcz三为gzml
实际上,每一列的字母此时就是单表替代。

因此我们只需要分别计算每一列的IC,并最终计算平均值,便可得知密钥的确切长度了,如IC十分接近于0.0687,那么我们就成功地得出密钥长度d的值了。

维吉尼亚密码引入了“密钥”的概念,即根据密钥来决定用哪一行的密表来进行替换,以此来对抗字频统计。

假如以上面第一行代表明文字母,左面第一列代表密钥字母,对如下明文加密:
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)的密码中,发件人和收件人必须使用同一个关键词(或者同一文字章节),这个关键词或文字章节中的字母告诉他们怎么样才能前后改变字母的位置来获得该段信息中的每个字母的正确对应位置。

比如如果关键字“BIG”被使用了,发件人将把信息按三个字母的顺序排列。

第一个三字母单词的第一个字母将应当向前移动一个位置(因为B是排在A后面的字母),第二个字母需要向前移动8位(I是A后面第8个字母),而第三个字母需要向前移动6位(G是A后面第6个字母)。

然后,文字就可以按下面的顺序来进行加密了:
未加密文字:THE BUTCHER THE BAKER AND THE CANDLESTICK MAKER。

(屠夫、面包师和蜡烛匠)。

关键密钥: BIG BIGBIGB IGB IGBIG BIG BIG BIGBIGBIGBI GBIGB 加密文字:UPK CCZDPKS BNF JGLMX BVJ UPK DITETKTBODS SBSKS。

相关文档
最新文档