636.基于MATLAB频度分析择取的hill密码破译

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

基于MATLAB 频度分析择取的hill 密码破译
摘要
本文对2Hill 密码破译问题进行了观察分析,发现密文中MG 连续出现两次,说明明文是英文的概率较小,所以猜测明文是由汉语拼音组成。

具体模型为:穷举反密钥(解密矩阵)⇒得到全部明文⇒计算机频度分析择取(攻击明文)⇒剩余少量几组明文⇒人为择选⇒取得可行明文⇒解得密钥。

首先通过穷举法攻击反密钥1
A -解得所有明文。

接着通过MATLA
B 程序频度分析攻击明文剔除不符字母出现频率的拼音明文,得到15组符合拼音字母出现频率的明文,最后人为从中选出正确可行的明文并通过计算机程序计算密钥矩阵。

破译得到的可行明文为:WEIRUANGONGSIJIJIANGTUICHUXINYIDAIBENTEN GG ,转化为拼音为:WEI ,RUAN ,GONG ,SI ,JI ,JIANG ,TUI ,CHU ,XIN ,YI ,DAI ,BEN ,TENG ,G ,其中最后一个字母为哑字母。

所以翻译成汉语就是:“微软公司即将推出新一代奔腾”。

根据密文与破译出的明文可以解得密钥(加密矩阵)为:5
2311⎛⎫ ⎪⎝⎭
,反密钥(解密矩阵)为:51817⎛⎫ ⎪⎝⎭。

最后对模型进行了加密检验,即用加密矩阵和所得文明进行一次加密过程,得到的结果(密文)与题目中所截获的密文相同,证明了本模型的正确性。

本文的特色在于把密码学与统计学相结合,通过计算机编程实现,在11秒左右的时间,可以取得正确可行的明文。

而基于MATLAB 频度分析择取攻击明文,是最重要的一块,使得明文数量从426456976=个减少到了15个,减少人为用肉眼拣选的痛苦。

具体实现如下:统计汉语拼音字母的出现频率,计算出高频率的字母在42个字母组成的密文中的出现次数,通过计算机程序模拟攻击明文剔除未达到出现次数下限以及以A 、E 、I 、O 、U 开头的明文。

关键词 频度分析 统计法 穷举法 明文攻击 计算机择取 MATLAB
Hill 密码的破译问题(程序题)
我方截获了敌方的一段密文:
UTCQCVFOYQUVMGMGULFOLEYHDUHOPEASWXTIFBAMWT
已知它是根据下面明文字母表值按Hill2密码体制加密的,请将其解密。

(利用编程求解,附上计算机程序)
附:明文字母表值表:
二符号说明
符号符号说明
A密钥矩阵
C明文矩阵
P密文矩阵
图3-1:加密信息传递过程【1】
破译密码虽然需要技术,但更加重要的是“猜测”的艺术。

“猜测”的成功与否直接决定着破译的结果。

统计法是根据统计资料进行猜测的。

在一段足够长且非特别专门化的文章中,字母的使用频率是比较稳定的。

【2】
Hill密码完全隐藏了字符对的频率信息,采用唯密文攻击密码是很难攻破的。

但是hill密码也有它的弱点:线性变换的安全性很脆弱,易被已知的明文攻击攻破。

只要我们破解出相应的明文,则取其中两对密文和明文,变可以破译出密钥。

【3】
综合以上分析,该问题可以通过穷举法和频度分析法并用的方法来解决。

经过分析密文:UTCQCVFOYQUV MGMG ULFOLEYHDUHOPEASWXTIFBAMW T,发现其中的MG连续出现两次,因为连续出现两次双字母在英文中出现的概率比较小,所以猜测明文是由汉语拼音组成。

从而可以从汉语拼音方面入手,建立模型。

四、模型的建立与求解
4.1 Hill2密码的数学模型
一般的Hill2 密码的数学模型为:
明文⇒加密器⇒密文⇒普通信道⇒解密器⇒明文
在这个过程中,运用的数学手段是矩阵运算,加密过程的具体步骤如下:
1) 根据明文字母的表值,将明文信息用数字表示,设明文信息只需要26 个
A B C D E F G H I J K L M
1 2 3 4 5 6 7 8 9 10 11 12 13
N O P Q R S T U V W X Y Z
14 15 16 17 18 19 20 21 22 23 24 25 26
2) 选择一个二阶可逆整数方阵A,称为Hill2密码的加密矩阵,它是这个加密体制的“密钥”(是加密的关键,仅通信双方掌握)。

3) 将明文字母依次逐对分组.Hill2密码的加密矩阵为二阶矩阵,则明文字母每2 个一组。

若最后一组仅有一个字母,则补充一个没有实际意义的哑字母,这样使每一组都由 2 个明文字母组成。

查出每个明文字母的表值,构成一个二维列向量C。

4) A乘以C,得一新的2 维列向量P AC
=,由P的两个分量反查字母表值得到的两个字母即为密文字母。

4.2 Hill2密码的破译模型及求解
图4-1 Hill2密码的破译模型流程图
具体模型为:穷举反密钥(解密矩阵)⇒得到全部明文⇒计算机频度分析择取(攻击明文)⇒剩余少量几组明文⇒人为择选⇒取得可行明文⇒解得密钥。

(如图4-1)
4.2.1 步骤一:穷举法攻击反密钥1
A -解得所有明文。

选择一个二阶方阵1A -,称为 Hill 2 密码的解密矩阵,它是这个解密体制的“反密钥”(是解密的关键,仅通信双方掌握).分别赋予hill2反密钥1A -矩阵中的四个未知数的值为0—25,依次循环进行hill2解密过程。

解密过程如下【4】:
在模运算下解方程组: AC P = --------(1)
解得: 1(mod 26)(mod 26)C A P -= -----(2)
即可得到所有的明文C ,组数达到426456976=个。

4.2.2 步骤二:MATLAB 程序频度分析攻击明文剔除不符的拼音明文
统计法是根据统计资料进行猜测的。

在一段足够长且非特别专门化的文章中,字母的使用频率是比较稳定的。

如果该密文是有意义的,那么其对应的明文就应当服从统计分布。

问题分析中认为该明文是拼音串,因此查阅相关资料【5】, 得到汉语拼音的出现频率(%)排序为:
I(12.93) N(12.56) G(9.50) U(9.40) A(8.22) O(7.02) E(6.35) H(5.60) Y(5.52) Z(3.20) D(2.57) J(2.30) S(2.24) W(1.86) T(1.80) B(1.43) F(1.22) X(1.16) M(0.86) R(0.84)
P(0.68) C(0.68) L(0.66) Q(0.62) K(0.20) V(0.00)
因为截获的密文是42个字母,所以明文也是42个字母。

根据统计法可以计算出正确明文中高频率字母出现的次数为: I=42X12.93%=5.4306; N=42x12.56%=5.2752; G=42X9.50%=3.9900; U=42X9.40%=3.9480; A=42X8.22%=3.4524;
最终在计算机程序模拟中,将让计算机剔除不符合以下两个条件的明文: 1、为了保证可行解不被剔除并保持解的正确性,取I 、N 、G 、U 、A 的次数下限分别为5、5、3、3、3,保证了这些拼音中的高频字母出现的概率是在相对较低概率之上。

2、分析可得,在明文中,A 、E 、I 、O 、U 出现在首字母的可能性非常低,所以剔除A 、E 、I 、O 、U 出现在首字母的所有明文。

经过这次大规模的计算机处理,我们的明文数量将从456976个降到15个。

大大减少人为用肉眼拣选的痛苦。

经过matlab 【6】程序模拟【见附录1】:
可得到以下15种结果(15种计算机判断可行明文): WWVIUUANBOGGVIVIIIANGTIIUHKXANVIAAOBNNREGG WEIRUANGONGSIJIJIANGTUICHUXINYIDAIBENTENGG WWIVUUNAOBGGIVIVIINATGIIHUXKNAIVAABONNERGG WJIUUNNAOOGBIKIKIPNATKILHMXQNQIWAJBGNNEUGZ WNIAUHNQOUGVIOIOIHNQTYIXHYXGNEISATBANDEUGD WUIIUSNFOYGYIAIAIENFTNIGHZXXNXIUAUBPNFEIGM WUIYUANFOYGAIUIUIWNFTBIKHXXFNBIEAGBNNFEMGU WRIEUNNGOAGFIWIWINNGTUIPHUXINYIQAVBENTEAGT WQINUKNCOFGUININIANCTUIAHKXGNCINACBSNPEBGU WAIAUUNDOUGIIOIOIUNDTLIKHLXTNRISAGBNNDEUGQ WAINUUNQOHGIIBIBIUNQTYIKHYXGNEIFAGBANDEHGQ JWUINUANOOBGKIKIPIANKTLIMHQXQNWIJAGBNNUEZG NWAIHUQNUOVGOIOIHIQNYTXIYHGXENSITAABDNUEDG RWEINUGNAOFGWIWINIGNUTPIUHIXYNQIVAEBTNAETG QWNIKUCNFOUGNINIAICNUTAIKHGXCNNICASBPNBEUG
4.2.3 步骤三:人为选取正确的明文
在MATLAB 程序中输出的15组解中,经过人为观察,不难看出,只有WEIRUANGONGSIJIJIANGTUICHUXINYIDAIBENTENGG 这一组是唯一可行的拼音明文,转化为拼音为:WEI ,RUAN ,GONG ,SI ,JI ,JIANG ,TUI ,CHU ,XIN ,YI ,DAI ,BEN ,TENG ,G ,其中最后一个字母为哑字母。

所以翻译成汉语就是:“微软公司即将推出新一代奔腾”。

4.2.4 步骤四:算出对应的密钥与反密钥(程序见附录二)
由于2hill 类型密码的特殊性,其密钥矩阵在短时间内是不会变化的。

为了方便以后对敌方密文的解密,作为一个情报部门,破解出敌方使用2hill 类型密码进行信息传递的密钥,有重大的意义。

破解步骤如下:
明文前4个字母WEIR 23 95 18C ⎛⎫= ⎪⎝⎭;密文前4个字母UTCQ 21 320 17P ⎛⎫
= ⎪⎝⎭,
有2hill 密码理论可以得知:P AC =,1A P C -=,11A CP --=。

因此可以得到解密
矩阵(反密钥)公式:()11mod26((mod26))(mod26)A CP --=。

由于21 320 17P ⎛⎫
= ⎪⎝⎭

det (mod26)11P =、*17 -3-20 21P ⎛⎫= ⎪
⎝⎭。

得:()11*
mod26(11(mod26))(mod26)P P --=。

由26Z 中模26倒数的整数及其模26倒数表,可知111(mod 26)19-=。

经计算
解得()1
11 21mod 2610 9P -⎛⎫
= ⎪⎝⎭。

根据解密矩阵公式:
()11mod 26((mod 26))(mod 26)23 911 21(mod 26)5 1810 95 181 7A CP --=⎛⎫⎛⎫= ⎪⎪⎝⎭⎝⎭⎛⎫= ⎪⎝⎭
根据模型编写MATLAB 程序解得(见附录二):
密钥(加密矩阵):52311⎛⎫ ⎪⎝⎭ 反密钥(解密矩阵):51817⎛⎫
⎪⎝⎭。

五、模型的检验
为了检验密钥(加密矩阵)的正确性,本文对模型进行了检验【7】,即将得
到的明文通过加密矩阵加密,根据hill2密码的加密规则,选取密钥52311⎛⎫
⎪⎝⎭,
通过MATLAB 【8】编程(见附录三)实现,将明文WEI ,RUAN ,GONG ,SI ,JI ,JIANG ,TUI ,CHU ,XIN ,YI ,DAI ,BEN ,TENG ,G 加密成密文,程序求解结果为:UTCQCVFOYQUVMGMGULFOLEYHDUHOPEASWXTIFBAMWT ,与所截获的密文一致,从而检验了模型的正确性。

六、模型评价与推广
6.1模型评价
图6-1:模型图示
本文通过把密码学与统计学相结合的方法,通过穷举法【9】穷举反密钥,得到456976个明文,接着经过统计学知识,得到各个字母在拼音中出现的概率大小,计算相应的拼音字母在明文中出现的次数,最后运用计算机处理,将明文数量从456976个降到乐15个,而整个计算机模拟的过程,仅需要11秒的时间,破译者只需要在15个中间稍加观察就可得到可行解。

本文将密码学与统计学结合并用计算机编程实现的方法减少人为用肉眼拣选的痛苦。

同时,该模型具有通用性,可以解决2Hill 密码破译的一般性问题,只要明文中的拼音符合一般的人的行文习惯,不人为专门使用偏僻拼音,该模型都能在10余秒的时间内解决。

6.2模型推广
模型不仅可以针对拼音,也可以针对英文明文去破译,破译时则需要用到英文字母的出现频率表【10】,
E 是使用频率最高的,下面是英文字母使用频率表:(%) 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 便可以完成针对英文明文的2Hill 密码破译。

七、参考文献、
[1] 章照止等,现代密码学基础,北京:北京邮电大学出版社,2004
[2] 张福泰等,密码学教程(信息安全系列教材),武汉:武汉大学出版社,2006
[3] 胡磊等译,应用密码学手册,北京:电子工业出版社,2005
[4] 邓辉文等,线性代数,北京:清华大学出版社,2007
[5] 百度知道,统计拼音字母出现频率百分数
/question/44727854.html
[6] 张铮等,MATLAB程序设计与实例应用,北京:中国铁道出版社,2003
[7] 福罗赞,密码学与网络安全,北京:清华大学出版社,2009
[8] 徐金明等,MATLAB实用教程,北京:清华大学出版社,2005
[9] 维基百科,穷举法,
/wiki/%E7%A9%B7%E4%B8%BE%E6%B3%95 [10] 百度知道,英文字母频率表
/question/10229121.html
八、附录
附录一:(matlab程序,求明文)
clc
clear
tic
disp('正在破译密文。

');
m=26;
ZERO=64;T=[];e1=[];
astr='UTCQCVFOYQUVMGMGULFOLEYHDUHOPEASWXTIFBAMWT'; a1=double(astr);
lh=length(a1);
if mod(length(a1), 2)==1
a1=[a1, a1(length(a1))];
end
a1=a1-ZERO;
for i=1:length(a1)
if a1(i)==26
a1(i)=0;
end
end
T=reshape(a1, 2, length(a1)/2);
for x1=1:26
for x2=1:26
for x3=1:26
for x4=1:26
demat=[x1,x2;x3,x4];
d1=mod(demat*T, m);
e1=reshape(d1, length(a1), 1);
e1=e1';
e1=e1+ZERO;
for i=1:length(e1)
if e1(i)==64
e1(i)=90;
end
end
e1=e1(1:lh);
char(e1);
I=0;N=0;G=0;U=0;A=0;
for k=1:42
if e1(k)=='I' I=I+1;end
if e1(k)=='N' N=N+1;end
if e1(k)=='G' G=G+1;end
if e1(k)=='U' U=U+1;end
if e1(k)=='A' A=A+1;end
end
if
I>4&&N>4&&G>2&&U>2&&A>2&&e1(1)~='A'&&e1(1)~='E'&&e1(1)~='I'&&e1(1)~='O'&& e1(1)~='U'
disp( char(e1) );
end
end
end
end;
end
disp('over');
toc
附录二:(matlab程序,求密钥)
clear all
clc
m=26;zero=64;
p='WEIR';
p=double(p)-zero;p=reshape(p, 2, 2);
c='UTCQ';
c=double(c)-zero;c=reshape(c, 2, 2);
x1=p(1,1);x2=p(1,2);x3=p(2,1);x4=p(2,2);
ww=mod(det(p),26);
for i=1:m-1
if mod(ww*i, m)==1
ant=i;break;
end
end
ddd=mod(ant*[x4,-x2;-x3,x1],26);
fprintf('密钥为:');
a=mod(c*ddd,26)
附录三:(matlab程序,hill2加密程序)
clc
clear
m=26;
ZERO=64;T=[];e1=[];
astr='WEIRUANGONGSIJIJIANGTUICHUXINYIDAIBENTENGG';
a1=double(astr);
lh=length(a1);
if mod(length(a1), 2)==1
a1=[a1, a1(length(a1))];
end
a1=a1-ZERO;
for i=1:length(a1)
if a1(i)==26
a1(i)=0;
end
end
T=reshape(a1, 2, length(a1)/2); T
demat=[5 2
3 11]
d1=mod(demat*T, m)
e1=reshape(d1, length(a1), 1); e1=e1';
e1=e1+ZERO;
for i=1:length(e1)
if e1(i)==64
e1(i)=90;
end
end
e1=e1(1:lh);
char(e1)。

相关文档
最新文档