320 likes | 510 Views
数学实验. 密码的加密 、. 解密与破译. 主讲:费文龙. 即使埃斯库罗斯被人们遗忘,阿基米德仍会被人们记住,因为即使语言文字会消亡,数学概念也不会消亡。 — G.H.Hardy. 现代数学家象其他从事科学的人们那样,在应用他们的原理方面化费的心血比在了解这些原理方面多得多。 — G.B.Berkeley. 密码的故事. 战争和和平时期的间谍战. (大仲马). 基度山伯爵. 舞蹈人形. Conan Doyle. 创作的 歇洛克 . 福尔摩斯. 这段符号的译文为 AM HERE ABE SLANE. 密码学 — Cryptography.
E N D
数学实验 密码的加密、 解密与破译 主讲:费文龙
即使埃斯库罗斯被人们遗忘,阿基米德仍会被人们记住,因为即使语言文字会消亡,数学概念也不会消亡。 —G.H.Hardy 现代数学家象其他从事科学的人们那样,在应用他们的原理方面化费的心血比在了解这些原理方面多得多。 —G.B.Berkeley
密码的故事 战争和和平时期的间谍战 (大仲马) 基度山伯爵 舞蹈人形 Conan Doyle 创作的歇洛克.福尔摩斯 这段符号的译文为AM HERE ABE SLANE .
密码学— Cryptography 源于希腊文字:秘密+书写,古老神秘的学科 目的 • 将信息传递给己方的接收者 • 防止敌方知道信息的内容 谁最先使用密码? Julius Caesar(恺撒) 密文:Kh lv wkh uxohu ri dqflhqw Urpd 明文:He is the ruler of ancient Roma
密码学名词 明 文 需要采用某种方法对其进行变换来隐蔽 它所载荷的信息或字符串 加密过程 将明文变换成另一种不能被非授权者所 理解的隐蔽信息的消息或字符串的过程 明文经过加密过程的变换所得的消息或 密 文 字符串 加密变换 将明文变为密文的变换 解密变换 将密文变为明文的变换 加密变换所使用的参数 密 钥
简单的加密解密过程模型 发送者 明文 加密器 密文 普通信道 接收者 明文 解密器 窃听、干扰
单表密码 将英文字母组成的明文字母,按照一定的规则,转换成另一个字母,即可得到密文。 每一个字母转换的规则可以任意指定,不同的规则就可以构成不同的加密方法。 但是必须让你的合法接收者也知道这个规则。这样他才能够进行正确地解密。 如:加密规则为“每个字母向后平移5个位置” a->e b->f … w->a x->b … 明文: Hello,world! 密文: Lipps,asvph!
为了便于解码,以及解码的唯一性,这种单表加密方法,一般要求明文字母和密文字母之间是一一对应的。所以,总共可以有 26!~1026种不同的加密方法。 主要缺陷:字母出现频率不变 英文字母在文章中出现的概率是不同的。甚至是非常悬殊的。 同一个字母在每一篇文章的出现频率当然不会完全相同,但是还是相对比较稳定的。
字母 概率 字母 概率 字母 概率 空白 0.2 S 0.052 Y,W 0.012 E 0.105 H 0.047 G 0.011 T 0.072 D 0.035 B 0.0105 O 0.0654 L 0.029 V 0.008 A 0.063 C 0.023 K 0.003 N 0.059 F,U 0.0225 X 0.002 I 0.055 M 0.021 J,Q,Z 0.001 R 0.054 P 0.0175
相对稳定的字母出现的频率也为密码破译者提供了可乘之机。 我们可以根据密码中每一个字母出现的频率,与字母出现的统计规律进行比较,就可以大概猜出密码的意思。 如果说我们能够破译出密码中某些频率比较特殊的字母所对应的明文字母,那么密码就露出破绽,再结合语言的知识和对密码可能的内容的猜测,我们就可以很轻易的破译出密码。
多表密码 为了打乱字母的出现频率,我们在一段文章中,利用几种不同的规则,将同一个字母对应到几个不同的字母,以使得每个密码字母出现的频率与明文字母出现频率不同。 也就是准备几个密码表轮流使用,将明文字母转换到几个密码字母,来分散字母的出现频率。这样根据字母出现频率来破译密码就不可能了。
鉴于制作并保存密码表就存在密码表被偷窃的危险,下面建议一种不用密码表的的多表密码方案。它是法国密码学家维吉尼亚设计的,称为维吉尼亚密码。 它采用加法密码作为单表密码,用不同的加法密码来构造多表密码。
加法密码 • 将26个英文字母从a到z按顺序排列。并且认为z后面是a。 • 秘密取定0到25的一个整数c。 • 将每个明文字母在英文字母表上向后移动c个位置,得到的字母作为密文字母。 • 这样得到的密码叫做加法密码。 • 每个加法密码由一个整数c决定,猜出了c,就找到了攻破这个密码的钥匙.c是加密和破译的关键,称为密钥 • 如:我们前面将英文字母每个先后平移5位,这个5就是密钥,得到的密码就是加法密码。
维吉尼亚密码 • 自己想好一个英文单词作为密钥,比如,用codebreaking作密钥. • 单词中的每个字母代表一个单表密码。比如, • 第一个字母c,表示明文的a在密文中要变成c,向后移动了两位,这就代表以2为密钥的加法密码。明文中的第一个字母要用这个加法密码加密,用它向后移动2位后的字母代替。 • 第二个字母是o,从a到z要移动14位.明文的第二个字母用密钥14的加法密码加密。 • 依次类推,密钥字codebreaking表示将明文中的前12个字母分别用密钥为2、14、3、4 、 1 、 17 、 4 、 0、 10 、 8 、 13 、 6的加法密码加密. • 然后又重复使用密钥字.将以下的12个字母再依次用这些密码加密. • 如此反复使用.直到整篇文章被全部加密.
维吉尼亚密码的破译1 • 采用多表密码之后,各个字母出现频率的差别被抹杀了。 • 但是,由于不同的密码表的更换是周期性的,仍然给破泽者留下了可乘之机。 • 比如,上面的密钥字长度是12,密码表更换的周期是12如果知道了这个周期。即使不知道密钥字,也能用破泽单表密码的方法来破译它。 • 方法是:将密文的前12个宇母排为第一行,以下12个字母排成第二行,在下面12个字母排成第三行,……,这样每一列上的密码都是由同一个密钥加密的,每一列就变成了一个单表加法密码
维吉尼亚密码的破译2 • 如果不知道密钥字的长度,能不能破译呢?答案是肯定的。 • 方法如下: • 对n=1,2,3…将密文向左移动n位,排列在原密码的下面,这样第一行的每个密文字母说对准的第二行的字母,恰好是第一行的这个字母在密文中向后移动n位的那个位置。 • 依次比较上下两行同一列上的字母,统计出两个字母相同的个数占总字符数的比例。 • 对于某个n这个比例会明显上升,这说明这个n有可能是密钥字的长度。 • 原因是: • 如果n不是密钥字长度q的倍数,上下两列的字母是用不同的密码表加密的,相互之间是无关的,他们相同的概率为1/26~0.038 • 如果n是密钥字长度q的倍数,上下两列的字母是用同一个密码表加密的,两者相同的概率可以这样来计算:设每个字母在文章中出现的概率为ka,kb,…,kz,上下两个字母同为a的概率为ka2,于是上下两列字母相同的概率为ka,kb,…,kz的平方和,大约是0.065,比上面的概率显然大。 • 据此,我们就可以猜测出密钥字的长度q
HILL2密码 明文分组(两个一组),按组转换成密文 同一字母在不同组中所对应密码不同
HILL2密码的加密与解密 ★假设要加密的明文是由26个字母所构成 ★ 将每个明文字母与 0 – 25 的一个数字建立 1–1对应关系,称为明文字母的表值
★ 选择一个加密矩阵 A — 二阶正整数值的矩阵 . 例如 ★ 将明文字母依次按每两个字母一组查出其表 值,得到一组二维向量 ★ 通过加密矩阵得到 ,而 ★ 查向量i的字母表值,即得到密文 ★ 利用加密矩阵的逆矩阵,由密文得到明文
关于模运算 (mon26) 模 m等价 设a , b为两个整数, 若 记作 称a 模 m 等价于b, 剩余集 称为模m的剩余集 运算律 设 a , b为两个整数,
a 1 3 5 7 9 11 15 17 19 21 23 25 a –1(mod26) 1 9 21 15 3 19 7 23 11 5 17 25 设 模 m倒数 ,若存在 使得 ,称 a 有模 m倒数 记作 整数 a有模 m倒数的充要条件为 命 题 a与 m无公共素因子 模 26 倒数表
怎样求模 m倒数 即解方程 定义 Euler 函数: 设 m为一自然数,Zm中与m互素的数的个数称为m的Euler 函数,记为 (m) 可借助软件 Mathematica: Eulerphi[m] Euler 定理 对任意整数 k, m, 若k, m互素,则 故所求 x为
设 为 n阶方阵, 矩阵模 m 可逆 使得 若存在 ,称 B为 A的模 m逆矩 阵,记作 矩阵 A 模 m可逆 | A | 与 m无公共素 命 题 因子 模 m逆矩阵 例 子
一个简单实例 明 文:Our marshal was shot 补充哑字母 分 组: ou rm ar sh al wa ss ho tt 对应向量 加 密: 左乘加密矩阵 直接结果
密文向量 ek rm kb ix yj yc ee ls hh 密 文 解 密 只要将解密矩阵 左乘密文向量即可求得明文向 量,从而查出明文 使用Hill密码时的加密矩阵应该模 结 论 26可逆
使用Mathematica In[1]:= a = {{1, 2}, {0, 3}}; MatrixForm[a] Out[1]//MatrixForm= In[2]:= deta = Mod[Det[a], 26] Out[2]= 3 In[3]:= inva = Inverse[a]; MatrixForm[inva] Out[3]//MatrixForm= In[4]:= adja = deta inva Out[4]//MatrixForm=
In[5]:=ideta = 9 Out[5]= 9 In[6]:=inva1 = Mod[ideta adja, 26]; MatrixForm[inva1] Out[6]//MatrixForm= In[7]:= b = {{5, 18, 11, 9, 25, 25, 5, 12, 8}, {11, 13, 2, 24, 10, 3, 5, 19, 8}}; c = Mod[inva1.b, 26]; MatrixForm[c] Out[7]//MatrixForm=
HILL2密码的破译 关键是求得加密矩阵的逆—解密矩阵 只要分析出两个明文向量(线性无关)与 相应的密文向量 若有
一个破译例子 甲方截获了一段密文:OJWPISWAZUXAU UISEABAUCRSIPLBHAAMMLPJJOTENH 经分析这段密文是用HILL2密码编译的,且这段 密文的字母 UCRS 依次代表了字母 TACO,若 明文字母的表值如前,试破译这密文的内容? 关 系 其中 其中
计算A-1 (mod26)
破 译 密文向量 明文向量 明文:Clinton is going to visit a country in Middle East