一.章节梗概
讨论以下算法,理解怎么设计好的密码算法的关键问题
1.Caesar cipher
2.单字母表密码
3.Playfairmima
4.维吉尼亚密码
5.自动生成密码
二.Caesar cipher
2.1 穷举攻击
穷举攻击定义:尝试所有密钥直到有一个合法密钥能够把密文还原成明文,这就是穷举攻击。
进行穷举攻击的条件:
1.密钥数量比较少,可以穷举
2.明文是有信息量在里面的,可以通过信息来判断解密后的信息是否正确。
注意:如果明文是一个纯粹随机的序列,我们没法解密。
2.2 改进凯撒密码
攻击者总能通过穷举法对凯撒密码算法进行破译。
如何改进:增加密钥数量。
三、 单字母表密码
3.1 单字母表密码的特点
密钥数量足够多,密钥是26个字母长度。
单字母密码分两种不同的加密形式,一个单表代换密码,一个多表代换。
3.2 加密方法
加密方式:替代法
采用另一个乱序字母表来替代明文字母,明文字母和密文字母保持一一对应关系。要得到一个乱序字母表,可以采取随机排列的方式,也可以由一张混淆字母表生成,过程如下:
a) 随机选择一个密钥字或密钥短语,例如:cybersecurity
b) 去掉重复字母:cybersuit
c) 这些字母构成矩阵的第一行,矩阵的后续各行由标准字母表中去掉密钥字的字母后剩下的字母构成
d) 按列取出矩阵中的字母得到混淆字母表:
canydobfp
egqrhvsjw
ukxilztm
3.3 单字母表密码的攻击手段
1.出现频率高的词
2.字母频率分析的方法:因为单字母表密码没有改变原来明文里的字母出现的频率,因此我们就可以根据替换后的字母频率与已知的字母频率相对应,就可以分析出替换前的字母。
3.4 单字母表的致命缺陷
把明文里字母的统计规律原封不动的保留到了密文里面。
注:密钥数量多了,但它还是可以破译的,而且攻击者去攻击的技术手段不需要去穷举。
思考:什么是好的密码算法?
好的密码算法:攻击者只能用穷举法进行攻击,除此之外别无他法,这样我们可以量化攻击难度,攻击者的攻击成本和key size成正比。
3.5 改进单字母表密码
两种改进方案:
1.明文分组,一次加密多个字母,如playfair密码,对明文进行分组,然后一次代替(多对一)
2.一个字母被多个字母代替,如维吉尼亚密码,明文里的一个字母,在密文里被多个字母来替代(一对多)
单字母密码密码分析(上)
四、无条件安全&计算机上安全
4.1 定义
无条件安全:是指我们假设攻击者有无限的时间,有无限的计算机资源,它也不能够解密,不能够攻破的密码算法。
计算机上安全:是指我们假设攻击者的时间是有限的,攻击者的计算资源是有限的情况下,无法解密。
4.2 讨论
在计算机安全的定义下,我们设计密码时,只需要考虑加密者的计算成本远远低于攻击者在不知道密钥的情况下破译密码的成本就可以了。
无条件安全的定义下,能够达到无条件安全的这样一种机制时不存在的,或者只在理论上安全,我们现实中使用的密码方案没有无条件安全这种方案。
五、playfair密码(多对一)
5.1 定义
Playfair是一次加密双字母组合,也就是我们把明文分组的时候,2个字母为一组。
Playfair是惠斯通发明的,配合他发明的电报机一起使用,当要发送一个字母G的时候,黄色的指针偏转,指向字母G。
5.2 playfair密码加密步骤
分为三大步:1.编制密码表 2.整理明文 3.编写密文
构成部分:1.密钥 2.密码 3.密文 4.注明某个字母代替的另一个字母
1.编制密码表:
选一个关键字,关键字是密钥,下面的例子的关键字是“CRAZYDOG”;
构造一个关键字的矩阵,用于加密;
规定I和J不做区分,所以I的位置既是J又是I;
2.整理明文:对明文进行分组,两个字母一组,如果是重复的字母,中间加一个X,剩一个单字母也用X填充,如communist,应成为co,mx,mu,ni,st;
3.编写密文:加密规则为,同行取右边,同列取左边,其他取交叉;
加密规则的详细解释如下:
1 若p1 p2在同一行,对应密文c1 c2分别是紧靠p1 p2 右端的字母。其中第一列被看做是最后一列的右方。如,按照前表,ct对应dc
2 若p1 p2在同一列,对应密文c1 c2分别是紧靠p1 p2 下方的字母。其中第一行被看做是最后一行的下方。
3 若p1 p2不在同一行,不在同一列,则c1 c2是由p1 p2确定的矩形的其他两角的字母(至于横向替换还是纵向替换要事先约好,或自行尝试)。如,按照前表,wh对应ku或uk。**
如,依照上表,明文where there is life,there is hope.
可先整理为:WH ER ET HE RE IS LI FE TH ER EI SH OP EX
然后密文为:KU YO XD OL OY PL FK DL FU YO LG LN NG LY
将密文变成大写,然后几个字母一组排列。
如5个一组就是KUYOX DOLOY PLFKD LFUYO LGLNN GLY
密码表的详细解释如下:
在这个5*5的密码表中,共有5行5列字母,代表从A-Z 共26个字母,其中I和J不作区分。
第一列(或第一行)是密钥,其余按照字母顺序。密钥是一个单词或词组,若有重复字母,可将后面重复的字母去掉。
当然也要把使用频率最少的字母去掉。如:密钥是Live and learn,去掉后则为liveandr。
如果密钥过长可占用第二列或行。
填写好关键字后剩下的表按A-Z的顺序填写,关键字里已有的字母不再填写。
5.3 对Playfair密码的攻击和改进
只需要几百个单词的文本就可以被攻击。
改进:增大明文分组。
六、维吉尼亚密码(一对多)
6.1 定义
维吉尼亚密码是一种使用多表代换的代换密码,是在凯撒密码的基础上扩展出来的多表密码。
为了生成密码,需要使用表格法。这一表格包括了26行字母表,每一行都由前一行向左偏移一位得到。具体使用哪一行字母表进行编译是基于密钥进行的,在过程中会不断地变换。
维吉尼亚密码引入了“密钥”的概念,根据密钥来决定用哪一行的密表来进行替换,以此来对抗字频统计。
6.2 加密与解密原理
加密:
维吉尼亚密码必须有一个密钥,这个密钥由字母组成,最少一个,最多可与明文字母数量相等。
例如:
明文:SECRET MESSAGE
密钥:CODE
1.首先,选择某一关键词并重复而得到密钥。
明文 SECRETMESSAGE
密钥 CODECODECODEC
2.对照表格,密钥中的字母为行,明文中的字母为列。例如明文的第一个字母为S,密钥的第一个字母为C,对应表格,则密文的第一个字母为U。
3.对照完得密文:USFVGHPIUGDKG
解 密
解密前首先要知道密钥和密文。
例如:
密文:TLDKKOVD
密钥:TWO
1.密钥重复至与密文等长,密钥:TWOTWOTW
2.对照表格,密钥第一个字母为T,找到T行中的密文第一个字母T,为A列,可得明文第一个字母为A。
3.相应对照剩余字母,得明文:APPROACH
维吉尼亚密码
七、自动密钥密码(Autokey Cipher)
密钥和明文一样长。
自动密钥密码是密码学中的一种加密算法,与维吉尼亚密码类似。区别在于密钥不同。它的密钥开头是一个关键词,之后则是明文的重复。
是一种比较强的密码。
缺陷:可以用来做密码分析,密钥key用的英文文本,加密对象也是英文文本,密钥里的字母频率和明文里统计规律是一样的;
把动态生成密钥发挥到极限就是在密文里如何把明文里一些统计上的规律屏蔽掉,把这个思想发挥到极致我们要找一个这样的keyword,它和明文一样长,不会重复使用或循环使用,在统计上和明文没有任何练习。
条件一:密钥和明文一样长。
条件二:密钥和明文不能有统计上的联系。
八、一次一密(One-Time-Pad)
一次一密是对称密钥密码的理论标杆。
如果密钥和消息一样长,且真正随机,那么该密码无条件安全。
1918年Gillbert Vernam提出密钥与明文一样长且没有统计关系的密钥内容,算法表述采用二进制数据,且申请了专利:
异或运算有这些性质:
所以上面密码的算法是可逆的。
1949年,Shannon在他发表的经典论文中证明了一次一密的无条件安全性密钥的分发是个大问题,实用价值较弱,因为这个密码要求通讯双方提前共享一个纯粹的密钥序列。