转:https://www.cnblogs.com/WittPeng/p/8978737.html
对称密码之分组密码
对称密码
- 特点:加密速度快、安全性好、基于标准化··· ···
- 应用:数据保密传输、加密存储··· ···
分组密码概述
- 将明文消息编码表示后的二进制序列,划分为固定大小的块
- 加密和解密是一一映射的
- 设计应满足要求
- 分组足够长
- 密钥长度足够长
- 由密钥确定的置换算法足够复杂
- 加密和解密运算简单
- 一般无数据扩展
- 理想分组密码
- 分组密码的设计原则:扩散、混乱
- 乘积密码体制:在密钥控制下扩散和混乱两种密码操作的多次迭代
- 迭代结构
- Feistel密码
- SP网络
组成 | S盒(代换):混乱作用,P盒(置换):扩散作用 |
效果 | 雪崩效应 |
设计原则 |
|
DES算法
- 特点
分组长度 | 64位 |
密码体制 | 对称密码体制,加密和密钥使用同一密钥,仅子密钥编排顺序不同 |
有效密钥长度 | 56位(原64位的每个第8位为奇偶校验位,可忽略) |
迭代结构 | SP网络结构,共16轮 |
优点 | 只使用了标准的算术和逻辑运算 |
- 流程
①64位明文->②IP置换->
③分为两部分L0和R0:L0为下一轮的R1;R0和第一次置换得到的子密钥混合经过F函数得到下一轮的L1
->④置换IP-1->⑤得到64位密文
F函数:
扩展置换 | 8*4的矩阵 每行的头尾各补齐一位,变成8*6的矩阵 |
Ki子密钥的生成算法 | 将56位的有效的密钥压缩成48位 |
代换盒(S盒) |
步骤说明:b1b6确定行,b2b3b4b5确定列,将48位变成32位 特点:
|
置换运算(P盒) |
- 安全性
- 缺陷
- 互补性:
2.弱密钥:4个弱密钥,12个半弱密钥
3.迭代轮数
4.密钥长度
- 应对方法:多重DES
- 二重DES
- 三重DES
- DES的分析方法:
- 差分分析:由明文差和密文差求系数a,当轮数低于8轮时,个人计算机几分钟即可攻破
- 线性分析
AES算法
- 特点介绍
- 分组长度:128位
- 密钥长度和对应轮数:128位10轮,192位12轮,256位14轮
- 过程:前9轮 字节代换、行移位、列混合和轮密钥加,第10轮 字节代换、行位移和轮密钥加
字节代换:S盒定义方法
(1)初始化S盒,将第m行n列的元素初始化为0xmn
(2)将S盒中的每个字节映射为它在有限域GF(28)中的逆,0x00映射为自身。AES使用Z2[x]上的不可约多项式m(x)=x8+x4+x3+x+1来构造GF(28)。求逆元素的方法是使用Z2[x]上的扩展的欧几里得算法。
行位移:简单的左循环位移操作,第n行左移n位 列混合 :通过矩阵相乘来实现
轮密钥加:
密码扩展算法:
1.将初始密钥输入到一个4*4的矩阵中,每列的四个字节组成一个字,依次命名为w[0],w[1],w[2],w[3]
2.扩充40个新列,构成总共44列的扩展密钥数组
产生方式为
其中,T的组成为:1.字循环(将一个字中的4个字节循环左移一个字节)
2.字节代换(使用S盒)
3.轮常量异或(将前两步的结果同轮常量Rcon[j]进行异或,其中j表示轮数)
- AES的结构
- AES结构的一个显著特征是它不是Feistel结构
- 输入的密钥被扩展成由44个32位字节所组成的数组w[i]
- AES结构由四个阶段组成
- 仅仅在轮密钥加阶段使用密钥,并在算法的开始和结束都是用轮密钥加阶段
- 每个阶段均可逆,解密算法和加密算法并不一样
- 加密和解密过程的最后一轮只包含3个阶段,这是由AES的特定结构所决定的,而且也是密码算法可逆性所要求的
- AES的安全性和可用性
- AES和DES的对比
相同 | 不同 | |||
DES |
|
密钥长度固定56位 | 面向比特的运算 | 加密和解密运算一致 |
AES | 密钥长度可以是128位、192位、256位 | 面向字节的运算 |
加密和解密运算不一致,加密器不能同时用做解密器 |
典型分组密码
国际数据加密算法(IDEA)
- 工作原理:明文64位,密钥128位
- 轮函数:分为8轮,每轮输入6个子密钥和4个状态块
- 输出变换
- 解密过程
- 子密钥生成
RC6
- 加密过程
- 解密过程
- 密钥扩展方案
Skipjakc算法
Callmellia算法
工作模式
电子密码本(ECB)模式
- 工作模式
- 特点:
- 分组数量庞大,易受统计分析攻击、分组重放攻击和代换攻击。
- 明文或者密文出现一位的错误,只会影响一个分组,不会是错误扩散。
- 是最快最简单的工作模式
- 应用:数据随机且较少的情况
密码分组链接(CBC)模式
- 工作模式
- 特点
- 克服了ECB模式的缺点
- 虽然加密会使错误扩散,但解密的过程又进行了抵消,最后出错的仍是一个分组(密文的错误会由一组变成两组)
- 若文档中的一个分组和他前面的一个分组和另一个文档相同,则这个分组会加密出相同的结果,所以引进了初始化向量IV,使头文件不同(IV不用加密,可以和明文一起传递)
- 应用:大型文件的加密,是软件加密的最好选择
密码反馈(CFB)模式
- 工作模式
其中,加密算法也能用于解密。加密是对移位寄存器的操作,不对明文加密
- 特点
- 面向比特流进行操作
- 可用于同步序列密码,加密和解密可同时进行
- 有CBC的优点
- 对信道错误较敏感且会进行传播,但解密后会纠正。对明文只会影响一个分组,对密文的错误影响只有寄存器推出错误密文后,才能阻止扩散
- 数据加密速率低
- 应用:加密字符序列
输出反馈(OFB)模式
- 工作模式
- 特点
- 改进了CFB,错误不会传播,但密文的错误难以发现
- 不具有自同步的能力
- 初始向量IV不需要保密
- 应用:在极易出错的环境选用的模式,但需要有高速同步机制