分组密码(二)
分组密码的操作方式
分组密码如何应用于大数据文件加密?
电码本模式(ECB,Electronic Code Book)
将每块明文加密成相应得密码块,若最后一块不足64bit,则用一些任意二进制序列填充。
特点(本质相当于一个“大的单字母替换”)
- 一种最简易的工作方式
- 相同密钥作用下,密文块和明文块一一对应,易于暴露明文固有格式
- 各密文块间缺乏相关性,信息块易于受到块替换攻击
密码块链接模式(CBC,Cipher Block Chain)
加入反馈机制,当前明文块加密前要与前面的密文块进行异或(每一块的加密都依赖于所有前面的分组),因此需要接收完整数据才能加解密
加密
解密
特点
- 同一明文块产生不同的密文块(隐蔽明文数据模式,意思是明文块内容相同,但与之异或的IV或密文块不同,产生结果不同)
- 有误码扩散,同时又有自同步特性(比如上图:C1传输错误,解密时M1、M2也错误,但之后的解密都不包含C1,所以会自动正确恢复)
- 当所有比特块到达后才能开始编解码
密码反馈模式(CFB,Cipher FeedBack)
克服CBC方式的第3个问题:采用比分组小的多的单位进行加密
特点:将分组密码转换为流密码,实现即时加密
输出反馈模式(OFB,Output FeedBack)
与CFB模式相似,但是在块内部进行反馈,反馈机制既不依赖明文也不依赖密文流,因此又被称为内部反馈模式
特点:
- 没有误码扩散,适用于传输信息长度变化较大的数据,如语音、图像等
- 比CFB更易受对消息流的篡改
- 密文与前面的明文无关
- 应用时要求一次一密(OTP,One-Time Pad)
计数器模式(CTR,Counter Model)
特点:
- 具有随机访问特性:可随机解密任何密文分组(不用考虑其他密文分组)
- 处理效率高:可并行处理
- 同一明文块产生不同密文块
- 可提前预处理
- 实现简单:加解密阶段都只涉及加密函数
ECB、CBC、CFB、OFB是美国标准与技术协会(NIST)针对DES定义的四种操作模式
其他分组密码
三重DES
DES密钥长度64位,实际56位,抗穷举攻击能力弱,采用多重加密来间接增加密钥长度
首先是二重DES:很难抵挡中间相遇攻击法 $X=E_{k1}(M)=D_{k2}(C)$,如果已知明密文对,可利用中间相遇攻击方法找出正确密钥k1、k2
接着便是带有双密钥的三重DES
国际数据加密算法(IDEA,International Data Encryption Algorithm)
64bit大小的数据块和128位的密钥
三种基本运算实现密码算法的扩散和混淆特性:
- 16bit异或
- 模$2^{16}$的16bit加法
- 模$2^{16}+1$的16bit乘法(IDEA的S盒):先进行16bit×16bit=32bit的运算,再用$2^{16}+1$取模求余
三种基本运算特点:任一两个运算都不满足分配律和结合律
IDEA | DES | |
---|---|---|
共同点 | 分组密码,分组长度64bit | 分组密码,分组长度64bit |
不同点 | 密钥长128bit | 密钥长64bit |
加解密子密钥不完全相同 | 加解密密钥完全相同 | |
可用软硬件实现,偏向软件 | ||
非Feistel结构 | Feistel结构 |
RC5加密算法
对称加密算法,特点:
- 使用与软件或硬件实现
- 运算速度快
- 能适应不同字长的处理器
- 加密轮数可变
- 密钥长度可变
- RC5结构形式简单(非Feistel结构)
- 对存储空间要求不高
三个参数决定的一组加密算法:分组64bit,加密轮数12,密钥长128bit
参数 | 定义 | 允许值 |
---|---|---|
w | 基本字块的bit数大小。RC5加密的基本单位(分组长度)为2个基本字块 | 16, 32, 64 |
r | 轮数 | 1, …,255 |
b | 算法密钥的字节长度 | 1, …,255 |