分组密码的模式
Posted BlackBeer
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分组密码的模式相关的知识,希望对你有一定的参考价值。
1. 分组密码的模式
为了解决加密任意长度的明文,需要对分组密码进行迭代。分组密码的迭代方法就是分组密码的模式。
2. 分组密码和流密码
2.1 分组密码
每次只能处理特定长度一块数据的算法。一块就是分组,一个分组的比特数就是分组长度。
DES,3DES分组长度都是64比特。密钥长度:DES是56比特,3DES长度是168比特。
AES分组长度是128比特。密钥长度:128比特,192比特,256比特。
2.2 流密码
对数据进行连续处理的一类密码算法。
流密码一般以1比特,8比特,或者32比特位单位进行加密和解密。
2.3 分组密码和流密码的区别
分组密码不需要内部状态记录加密的进度。
流密码对一串数据流进行处理,需要记录内部状态。
2.4 分组密码的主要模式
ECB模式:电子密码本模式
CBC模式:密码分组链接模式
CFB模式:密文反馈模式
OFB模式:输出反馈模式
CTR模式:计数器模式
3. ECB模式(Electronic CodeBook,电子密码本模式)
加密与解密:将明文分组加密后的结果直接成密文分组。最后一个分组的内容小于分组长度时,用特定的数据进行填充padding。
特点:通过观察密文就知道明文存在怎样的重复组合,以此为线索进行破译。
ECB模式的攻击:攻击者改变分组密码密文的顺序,即可改变明文的顺序,在不破译的情况下操作明文。比如 a给b转账10000,变成b给a转账10000。
4. CBC模式(Cipher Black Chaining,密文分组链接模式)
加密与解密:首先将明文分组与前一个密文分组进行XOR运算,然后进行加密。
加密流程:
解密流程:
特点:
需要初始化向量,解决了ECB模式的缺点。
分组(密文)的损坏可能导致分组明文和关联的密文解密的明文错误。
只要有1比特缺失,缺失比特后的密文解密错误。
加密不支持并行计算。
对CBC的攻击:
初始向量中任意比特进行反转,明文中相应比特也会反转。
填充提示攻击:攻击者反复发送密文,每次都对填充部分进行少许修改,服务无法解密就返回一个错误,
根据提示可以得到明文相关的信息,这种攻击不限于CBC模式。防御方法:密文认证
初始化向量攻击:IV必须使用不可预测的随机数。
SSL/TLS的TLS1.0中使用了上一次CBC模式的最后一组密文。
TLS1.1中改为必须显示的传送IV。
应用实例:
SSL/TLS中使用CBC模式确保机密性,对应的加密算法有3DES_EDE_CBC和AES_256A_CBC。
5. CFB模式(Cipher FeedBack,密文反馈模式)
前一个密文分组送回到密码算法的输入端。
加密流程:
解密流程:
特点:
需要初始化向量IV,每次加密时生成一个随机的比特序列作为初始化向量。
CFB中用密码算法生成的比特序列称为密钥流。
CFB中密码算法相当于用来生成密钥流的伪随机数生成器,初始化向量是伪随机数生成器的种子。
加密不支持并行计算。
CFB模式的攻击:
重放攻击:攻击者保留之前通信部分密文分组,新的通信中进行替换发送,结果是替换的第一个分组解密出错后,后续的内容被替换。
防御方法是消息认证码。
6. OFB模式(Output-Feedback,输出反馈模式)
密码算法的输出反馈到密码算法的输入中去。
加密流程:
解密流程:
特点:
需要初始化向量。
OFB模式中,XOR所需要的比特序列(密钥流)可事先通过密码算法生成,与明文分组无关。
可以事先进行加密和解密的准备,不支持并行计算。
7. CTR模式(CounTeR,计数器模式)
通过将逐次累加的计数器进行加密生成密钥流。
每一个分组对应一个逐次累加的计数器。
加密流程:
解密流程:
计数器的生成方法:
每一次加密生成一个不同的值once作为计数器的初始值。
计数器 = once + 分组序列号
特点:
加密解密使用相同的结构。
计数器可以直接使用once和分组序列号计算出来,加密和解密都能并行计算。
增强版:
在CTR模式上增加认证功能的模式称为GCM模式。
总体上都不建议使用ECB模式。
以上是关于分组密码的模式的主要内容,如果未能解决你的问题,请参考以下文章