单表代替密码的分析

来源:互联网 发布:知乎 真武七截阵 编辑:程序博客网 时间:2024/06/15 05:47
语言的统计特性
字母表 数字(0~m-1)
英文的一阶统计特性:统计单个英文字母在一段足够长的英文课文中出现的概率
英文字母分类表
极大概率字母集:E
大概率字母集:T A O
较大概率字母集:I N S H R
平均概率字母集:D L
较低概率字母集:C M W F G Y P B U
低概率字母集:V K
极低概率字母集:J X Q Z
语言的二阶统计特性
双字母出现的频数表示:n(i,j)i ,j=0,1,2,(m-1)
双字母出现的概率p(xi,yi)=n(i,j)/(n-1)
英文双字母的概率最大的30对字母按概率大小排列为:
th he in er an re ed on es st en at to nt ha nd ou ea ng as or ti is et it ar te se hi of 
三字母出现的概率:p(xi,xj,xk)=n(i,j,k)/(n-2)
三字母按概率大小排列为:
the ing and her ere ent tha nth was rth for dth hat she ion int his sth ers ver 
密文量足够大 考虑数字 标点符号 注意数据格式 报头信息
英文的其他统计特性
冠词the 英文中一半以e s d t 结尾  以t a s w 开头
攻击单表代替密码的方法为猜字法
自然语言的文字结合规律
词头:T A S O I C W P N F
词尾:E S D N T R Y F O L
辅音和元音的结合规律:必须含有一个元音


第一步:做出密文字母出现的频次分布表
第二步:确定加密密表类型 
第三步:根据密文字母的频次统计,确定某些密文字母对应的明文字母属于那个类型或那几个字母组成的集合
第四步:利用自然语言的文字结合规律进行猜测


最早的关于替换密码用于战争的文献记录是出现在恺撒的《高卢战记》中,也就是后来出现的恺撒密码,恺撒详细描写了他怎样把消息传送给西塞罗,那个时候西塞罗的军队正被高卢人围困,而且已经到了投降的边缘,根据记载恺撒是把罗马字母替换成了希腊字母,以防止消息落入敌人手中时被解读出来。这是密码史上第一次用另外一种敌人陌生的语言来作为密文,后来在二战时期的美军也做过同样的事情,不过美国人用的是印地安人的纳瓦霍语,据史料记载,当时除了纳瓦霍族人,全世界懂纳瓦霍语的不超过30个,而且这些人全部在美国境内,可以说破译难度极高。恺撒经常使用这种密写方式,以至于Valerius Probus写了一本关于恺撒的密码专著,但是可惜这本专著没有留存下来,不过在Suetonius写于公元2世纪的著作中,我们知道了关于恺撒所使用的密码的细节,根据Suetonius的记载恺撒只是简单的把明文中的每个字母替换成了它后面3位的那个字母,也就上说恺撒所使用的密钥=3。
比如恺撒所使用的密码表:
明码表:ABCDEFGHIJKLMNOPQRSTUVWXYZ
密码表:DEFGHIJKLMNOPQRSTUVWXYZABC
明文 F O R E S T
密文 I R U H V W
但是恺撒密码的密钥空间只有可怜的25种,因此为了使密码有更高的安全性,单字母替换密码就出现了,只需重排密码表二十六个字母的顺序。凡是采用简单重新排列明文字母表来作为密码表,且每个相同的明文字母总是被同一个密文字母所替换的被称作单表替换密码。单表替换密码的密钥空间大小是26!= 403291461126605635584000000,也就是大约有4.03*10^26种密钥,即使密文被敌人截获了,如果采用暴力方法来破译的话,也就是采用尝试每一种可能的密钥的穷举法,那么就算敌人能够一秒钟尝试一种密钥,也要花上几十亿个宇宙年龄的时间来找到正确的那一个。如:
明码表 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
密码表 Q W E R T Y U I O P A S D F G H J K L Z X C V B N M
明文 F O R E S T
密文 Y G K T L Z
这种密码持续使用几个世纪,由于单表替换密码拥有数量巨大的密钥可能性,看起来似乎是不可攻破的,至少用穷举法来暴力破解是无效了,直到公元9世纪阿拉伯一位科学家发明了频率分析法,这让我们不必去检查四千亿亿亿的密钥可能性,而只需要分析字母在密文里出现的频率就可以破解出明文来。对单表替换密码的破解,标志着密码分析的诞生。下面我们来看看是如何破解单表替换密码。
字母有它自己的个性,其中之一就是它出现的频率。下面的图表给出了在英语中每个字母出现的平均频率:
资料一、英文中字母使用频率表(%)
A 8.19, B 1.47, C 3.83, D 3.91, E 12.25, F 2.26, G 1.71, H 4.57, I 7.10, J 0.14, K 0.41, L 3.77,  M 3.34, N 7.06, O 7.26, P 2.89, Q 0.09, R 6.85, S 6.36, T 9.41,U 2.58, V 1.09, W 1.59, X 0.21, Y 1.58, Z 0.08,
资料二、英文中字母使用频率表
A 0.0856, J 0.0013, S 0.0607
B 0.0139, K 0.0042, T 0.1045
C 0.0297, L 0.0339, U 0.0249
D 0.0378, M 0.0249, V 0.0092
E 0.1304, N 0.0707, W 0.0149
F 0.0289, O 0.0797, X 0.0017
G 0.0199, P 0.0199, Y 0.0199
H 0.0528, Q 0.0012, Z 0.0008
I 0.0627, R 0.0677,
资料三、英文中字母使用频率统计表(此统计表是由Dewey.G在统计了约438,023个字母后得到的)
E - 0.1268,T - 0.0978,A - 0.0788,O - 0.0776
I - 0.0707, N - 0.0706,S - 0.0634,R - 0.0594
H - 0.0573,L - 0.0394,D - 0.0389,U - 0.0280
C - 0.0268,F - 0.0256,M - 0.0244,W - 0.0214
Y - 0.0202,G - 0.0187,P - 0.0186,B - 0.0156
V - 0.0102,K - 0.0060,X - 0.0016,J - 0.0010
Q - 0.0009,Z - 0.0006
由于统计资料的不一样,所以这些数据会有所出入,不过大体上差不多,按由高到低的顺序排下来的这个字母序列基本上很多地方还是一致的。
资料一顺序:ETAOIN RSHDC LMPUF GWYBV KXJQZ
资料二顺序:ETAONR ISHDL CFMUP GYWBV KXJQZ
资料三顺序:ETAOIN SRHLD UCFMW YPGBV KXJQZ
第一个图表中的数据是四舍五入取了整后的整数,大致排序是:
ETAOIN/RSHDL/CU/FMPGWY/BV/KXJQZ
可以分成几个部分:
1. 频率高的字母: ETAOIN/RSHDL,4%以上
2. 频率中的字母: CU/FMPGWY,   2-3%
3. 频率低的字母: BV/KXJQZ,    0-1%
如果现在有一个密文需要破译,当我们知道它是用单表替换密码来加密的,就首先计算出每个字母的出现频率。如果在这个密文里频率最高的字母假设是K,那么就很有可能是用K替换了明码表中的E,如果密文里频率第二高的字母假设是A,那么就很有可能是用A替换了明码表中的T,如此继续类推下去,直到整个替换表格都填上了对应的字母。
需要注意的是频率分析法的数学基础是统计学,样本数量必将影响到用频率分析法来破译密码,一个很短的明文是可以不符合字母出现的平均频率的,因为它只有一个很小的字母样本空间,也就是说长一些的密码更容易被破译出来,因为它的字母频率更符合字母出现的平均频率,而短一些的就比较难破译了,需要更多的猜测与发挥想象的能力,如果非常非常短的密码,可能就是破不出来的了。
举个例子来说明这个问题,比如有个外星人降落在纽约街头,他分析他所遇见的前100个人,那么很有可能其中有将近50个是男人、将近50个是女人,这时候这个外星人就可能会得出这样的结论:地球人中有一半是男性、一半是女性;但是当样本的数量很少的时候,就有可能得出错误的结论来,比如另一个外星人降落在伦敦街头,他分析他所遇见的前2个人,然后就离开地球了,很有可能这2个人都是女人,那么这个外星人就可能会得出这样一个错误的结论:地球人中都是女性。
现在我们开始破译下面这份密文:
RMM YROM UK WUTUWAW UEXS XZHAA JRHXK SEA SV QZUDZ XZA FAMYRA UEZRFUX XZA RLOUXREU RESXZAH XZSKA QZS UE XZAUH SQE MREYORYA RHA DRMMAW DAMXK UE SOH YROMK XZA XZUHW RMM XZAKA WUVVAH VHSN ARDZ SXZAH UE MREYORYA DOKXSNK REW MRQK
我们猜测它是用的单表替换法加密,那么接下来就是破解的步骤:
第一步先统计字母频率(在这里可以利用电脑来代替手工操作,不过想想古时候的人都是纯手工操作,真是让我晕菜),总共183个字母,把频率百分比记下来:
A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R   S  T  U  V  W  X  Y  Z
12 0  0  3  7  1  0  5  0  1  5  1  7  1  4  0  2  10  6  1  8  2  4  9  4  8
然后要做的就是给明码表和密码表配对:
明码表:e
密码表:A
可以看到A在密文中的频率达到了12%,极有可能就是替换了明文中的e,那么就在替换表格中让明文的e对应密文的A,当然这里还只是一个猜测,比如R在密文中频率达到了10%,也有可能是R替换的e,因为密文的样本容量较小,出现偏差也是很正常的事情,那么到底哪个正确,就需要把A=e代入密文中去验证了(大写字母表示密文字母,用小写字母表示明文字母)。
然后把E,H,K,M,O,R,S,U,W,X,Y,Z这几个在密文中出现频率高的字母都先找出来,这样就得到集合A1={A,E,H,K,M,O,R,S,U,W,X,Y,Z},同时可以得到在英文中平均频率高的字母的集合B1={ e,t,a,o,n,i,r,s,h,d,l,c,u },那么就很有可能是A1中的那些字母,它们替换了B1中的那些字母,现在我们假设让A与e,R与t,X与a配对,代回密文中发现有a*e,a*e*e这样的单词结构,这个感觉不怎么对,那么就换一下(这是试错法),再令A=e,R=a,X=t,感觉这个的可能性要大些,接着可以统计连续重复的字母,在密文中,A重复了1次,M重复了3次,V重复了1次,X重复了1次。得到集合A2={ A,M,V,X },而在英文中,通常最容易重复的字母是 ss,ee,tt,ff,ll,mm,oo,所以有集合B2={ s,e,t,f,l,m,o },然后把交集找出来。
集合A1={ A,E,H,K,M,O,R,S,U,W,X,Y,Z }
集合A2={ A,M,V,X }
A1与A2的交集={ A,M,X },这是密文中同时出现频率高,又有连续重复的字母集合,
集合B1={ e,t,a,o,n,i,r,s,h,d,l,c,u }
集合B2={ s,e,t,f,l,m,o }
B1与B2的交集={ e,t,s,l,o },这是英文中通常平均频率高,又容易连续重复的字母集合。
那么基本上就是在 { A,M,X } 与 { e,t,s,l,o } 里找对应关系了,现在看来A对应e的可能性,要比R对应e的可能性高多了,而且前面分析的A=e,X=t在这里看来,也是合理的,这样就有A=e,R=a,X=t,那么M=?,基本上只能从s,l,o三个中选,试一下就知道了,把o代进去,得到aoo,排除,s和l代进去都还不明朗,不过M=l代入后在明文中出现了all这个单词,可能性应该更大一些。
在明文中发现有两个t*e的结构,猜是the,所以Z=h,V可能是m或f,用V=f代入后,发现*f结构,猜是of,所以S=o,由a**的结构,猜是and,所以E=n,W=d,全部代入后大概样子出来了一些,说明上面的猜测都基本是正确的,剩下的可以通过猜词猜出来了,*nto猜是into,所以U=I;发现anotho*,这个应该是anothor,所以H=r;i*,tho*e,所以K=s;到了这里基本上就该出来了,接着由o*n结构,猜是own,Q=w;di*ided,T=v;*arts,猜parts,J=p;fro*,N=m;whi*h,*alled,D=c;c*stoms,o*r,O=u;lan*ua*e,Y=g;inha*it,F=b;
至此,除了一个字母没有猜出来外(是个地名,没法再猜了,需要更多的样本才能继续破译),明文大意就全出来了。
现在来总结一下频率分析法破译单表替换密码的要点:1、如果破解时觉得很麻烦,可以把焦点放在连续重复的字母上,在英语中最常见的连续重复字母是按照这样的顺序:ss,ee,tt,ff,ll,mm,oo;2、如果密文是按词来分隔的,那么就先判断出那些只有1个、2个及3个字母的单词,在英语中,1个字母的单词只有a和I,最常见的2个字母的单词有:of,to,in,it,is,be,as,at,so,we,he,by,or,on,no,最常见的3个字母的单词是the和and;3、即使密文没有按词来分隔,还可以用字母对分析表的方法来判断出e,之后可以判断出h来,这是因为在英语中h常常出现在e之前(比如the,then,they),几乎不出现在e之后,没有其它的字母对有这样高的不对称关系;4、还有一个相当有用的方法就是根据经验在密文中猜词或者词组的能力。


0 0
原创粉丝点击