目录
电子密码本模式(Electronic Codebook, ECB)
密码分组链接模式(Cipher Block Chaining, CBC)
密文反馈模式(Cipher Feedback, CFB)
输出反馈模式(Output Feedback, OFB)
计数器模式(Counter, CTR)
电子密码本模式(Electronic Codebook, ECB)
ECB模式是最简单的加密模式,它将明文分成固定大小的块,然后对每个块独立进行加密。同样的明文块将加密为相同的密文块,因此在某些情况下可能存在安全性问题,例如对于相同的明文块会得到相同的密文块。
因为密码加密算法基本都是对一组明文进行加密的算法,假设一组长度为128位,加密前将要加密的明文分为多组,分别进行加密,这种其实算是不采用额外的加密模式,但是也给了这种模式一个名字,就叫电子密码本模式。
- 特点:将每个明文块独立地加密成对应的密文块,不涉及前后依赖关系。
- 优点:简单、并行处理能力强。
- 缺点:相同的明文块将生成相同的密文块,对于重复的明文模式不安全;无法隐藏明文模式的统计特征。
- 应用场景:适用于对独立、固定大小的数据块进行加密,如加密小文件、数据库中的敏感数据。
- 局限性:不适用于加密长消息、文件或流式数据;不提供数据的完整性保护。
密码分组链接模式(Cipher Block Chaining, CBC)
CBC模式首先使用初始向量(IV)与第一个明文块异或,然后进行加密,并将前一个密文块与当前明文块进行异或操作,然后加密。每个明文块的加密都依赖于前一个密文块的加密结果,从而打破了相同明文块生成相同密文块的规律。CBC模式提供了更好的安全性,并且可以并行加密和解密。
-
基本原理:
- 在CBC模式中,明文被分成固定大小的块(通常是64位或128位),每个块用作加密的单位。
- 每个明文块在加密之前都会与前一个密文块进行异或运算。
- 第一个明文块需要使用一个初始向量 (Initialization Vector, IV) 进行异或运算。
-
加密过程:
- 首先,选择一个合适的加密算法(如AES)和密钥。
- 将明文按照块大小分割,并为第一个块选择一个随机的初始向量 (IV)。
- 对第一个明文块进行加密,将 IV 与明文块进行异或运算,然后使用密钥对结果进行加密得到第一个密文块。
- 对于后续的明文块,将当前明文块与前一个密文块进行异或运算,然后使用密钥对结果进行加密得到当前密文块。
- 重复上述步骤,直到所有明文块都被加密。
-
解密过程:
- 使用相同的密钥和初始向量 (IV) 进行解密。
- 对第一个密文块使用密钥进行解密,然后与 IV 进行异或运算,得到第一个明文块。
- 对于后续的密文块,使用密钥进行解密,然后与前一个密文块进行异或运算,得到当前明文块。
- 重复上述步骤,直到所有密文块都被解密。
-
特点和安全性:
- CBC模式提供了较好的安全性,因为每个密文块的加密都依赖于前一个密文块。
- 引入初始向量 (IV) 增加了随机性,即使相同的明文块会产生不同的密文块。
- CBC模式可以有效地隐藏明文中的模式,提高安全性。
- CBC模式支持并行处理,可以在多个处理器上同时进行加密和解密操作。
- 特点:将前一个密文块与当前明文块进行异或操作,然后加密,引入了反馈机制。
- 优点:隐藏了明文模式的统计特征;提供了数据的完整性保护。
- 缺点:串行处理,性能较低;对于大数据块,无法并行加密。
- 应用场景:适用于对长消息、文件或流式数据进行加密;对于要求保护数据完整性的应用。
- 局限性:对于错误传播和重放攻击可能不具备足够的防御能力;需要使用初始向量(IV)。
密文反馈模式(Cipher Feedback, CFB)
CFB模式将前一个密文块的输出与密钥流进行异或操作,然后将结果与明文块进行异或得到密文块。在最开始则使用移位寄存器中的初始向量与密钥流进行加密,加密后选择前j比特与明文异或就可得到密文。这种模式下,密钥流的生成依赖于前一个密文块的加密结果,从而使得加密过程可以按块进行,而不需要等待整个数据块。
- 特点:将前一个密文块的部分或全部作为输入与当前明文块进行异或操作,然后加密。
- 优点:可以实现随机访问和流式加密;对于错误传播有较好的防御能力。
- 缺点:串行处理,性能较低。
- 应用场景:适用于实时加密应用、流媒体传输,可实现较高的实时性能。
- 局限性:需要使用初始向量(IV);对于大数据块,无法并行加密。
输出反馈模式(Output Feedback, OFB)
OFB模式将前一组加密后的密钥流中的前j比特直接移入后一组的寄存器中,不需要得知前一组的明密文,每一组与明文进行异或的比特流也不会受到明密文的影响。OFB模式与CFB模式类似,但密钥流的生成是独立于明密文的,因此可以事先生成整个密钥流。
特点:将前一个加密器的输出作为输入与当前明文块进行异或操作,然后加密。
- 优点:可以实现随机访问和流式加密;对于错误传播有较好的防御能力。
- 缺点:串行处理,性能较低。
- 应用场景:适用于实时加密应用、流媒体传输,可实现较高的实时性能。
- 局限性:需要使用初始向量(IV);对于大数据块,无法并行加密。
计数器模式(Counter, CTR)
CTR模式使用一个计数器作为输入,将计数器的值和初始向量输入加密算法,配合加密算法本身的密钥,得到一个输出,用这个输出与明文进行异或就得到密文。
计数器的值在每个块加密时递增,可以事先生成所有的计数器值以生成密钥流。
初始向量始终是固定不变的,每次只是改变计数器的值。
- 特点:使用计数器生成密钥流,然后与明文进行异或操作。
- 优点:可以实现随机访问和流式加密;并行处理能力强。
- 缺点:对于重放攻击可能不具备足够的防御能力。
- 应用场景:适用于并行处理和高性能加密场景,如磁盘加密、网络传输加密。
- 局限性:对于错误传播和重放攻击需要采取适当的措施;需要使用初始向量(IV)。