第三章——分组密码

来源:互联网 发布:淘宝网九块九包邮女装 编辑:程序博客网 时间:2024/06/05 04:42

1:设计原则

1) 分组长度和密钥长度——明文分组长度和密钥长度尽可能大

2) 扰乱原则——应使得密钥和明文以及密文之间的依赖关系相当复杂

3) 扩散原则——应使得密钥的每一位影响密文的许多位

针对实现的原则——软件实现和硬件实现

 

2:评估——安全性、性能、算法和实现特性

 

3:分组密码常见的设计方法

1) Feistel结构

        明文P=LR,L是P的左边n位,R是P的右边n位;进行r轮完全相同的运算,第i轮的运算为  Li=Ri-1    Ri=Li-1(异或)F(Ri-1,Ki);F()是轮函数,K1...Kr是由种子密钥生成的子密钥

方法特点

(1) 加解密是完全一样的,除了所使用的子密钥的顺序正好相反,有利于硬件实现

(2) 扩散比较慢,至少要两轮才能改变输入的每一位,从而导致轮数比较多

2) SPN结构

        Xi-1到Xi需要经历两层,第一层为S层(替换层,起扰乱作用);第二层为P层(置换层,起扩散作用)

该方法扩散快,但加解密通常不相似

 

4:数据加密标准(DES)

        明文分组为64位、有效密钥56位、输出密文64位的,具有16轮迭代的分组对称密码算法,DES由初始置换、16轮迭代和初始逆置换组成

存在争议的几点

1) S-盒的设计准则

2) 56的有效密钥太短

3) 弱密钥和半弱密钥

4) 代数结构存在互补对称性

 

5:高级加密标准(AES)

三种可选的密钥长度,且密钥长度决定轮数Nr

密钥长度为128,轮数为10;密钥长度为192,轮数为12;密钥长度为256,轮数为14

1) 给定一个明文M,将State初始化为M,并将轮密钥与State异或(轮密钥的长度=分组长度*(Nr+1))

2) 对前Nr-1轮中的每一轮,用S-盒进行一次替换(SubBytes);对替换的结果State做行移位操作(ShiftRows);再对State做列混合变换(MixColumns),然后进行AddRoundKey操作

3) 最后一轮进行SubBytes、ShiftRows和AddRoundKey操作

4) 将State定义为密文C

注意S-盒的构造过程;xy——映射为逆——转换为二进制表示、并进行放射变化得到(需用到11000110)

行移位变换——第一行保持不动,第二行循环左移一个字节,第三行循环左移两个字节,第四行循环左移三个字节

列混合变换——把每一列看成一个四项多项式,再与固定多项式a(x)进行模x^4+1乘法运算

 

AES的解密:需要用到逆S-盒,以及InvShiftRows变换和InvMixColumns变换

 

6:分组密码的工作模式

1) 电子本模式(ECB模式):直接利用加密算法分别对每个明文分组使用相同密钥进行加密(容易暴露明文数据的固有格式)

2) 链接模式(CBC模式):加密算法的输入是当前的明文分组Mi和上一次产生的密文分组Ci-1的异或,输出为密文分组Ci

3) 密码反馈模式(CFB模式):加密函数处理结果的最高s位与明文的第一个分组M1进行异或产生密文分组C1;同时,移位寄存器的值向左移动s位,并用C1替换寄存器的最低s位

4) 输出反馈模式(FOB模式)

5) 计数器模式(CTR模式):将一个计数器输入到寄存器中,对寄存器中的值进行加密后与明文M异或得到密文;每一个分组完成加密后,计数器都要增加某个常数

        具有随机访问特性、高效率

原创粉丝点击