【分组密码的工作模式】|分组密码 | 密码学 | 信息安全 | ECB | CBC | CFB| OF B| CTR|_哔哩哔哩_bilibili
ECB

- 优点:可并行加密。
- 缺点:不具备完整保护性,而且相同明文具有相同密文。
CBC

上一个密文的输出,会异或上当前的明文分组再做加密
- 优点:具备数据完整性保护。混淆具有扩散效果。提高了安全性。
- 缺点: 错误会传播,(加密)不适合并行处理。
IV值的注意事项
固定IV
不要使用固定IV。 对于CBC加密数据的第一个块,会引入 ECB的问题。实际传输中,很多消息会有相似或相同的首个分组。
计数器IV
也有问题。 两个计数值只有少量,比如1个比特不同时(计数值汉明距离较小),那么不同的两个消息有概率碰巧产生相同的首个密文分组。例:不同的两个消息的第一个块的差异较小,且刚好差异处 和 计数值的差异比特位置一样,异或以后刚好抵消差异,那么将会生成相同的首个密文分组。
虽然可能性比较小,但是 我们不能让攻击者察觉到这个,利用这个来推导出明文直接的差异。
随机IV
随机IV方案 可以采用。但是 采用的随机IV 必须让 接收者知道。 标准的做法:将随机IV作为第一个块,附加到 CBC密文消息的前头。
这也是随机值IV的缺点: 当消息长度很短的时候,却要花费一个分组长度的代价来传递IV值。
瞬时IV
瞬时值 nonce : number used once
对于同一密钥,瞬时值不能使用第二次。瞬时值 通常是 消息的某种编号,可能还结合上其他信息构造而成。
- 瞬时IV的方案 分两步骤:①获得瞬时IV ②加密瞬时IV,得到IV值。之所以加密,是考虑到 攻击者可能完全掌握瞬时值的生成。
- IV值同样 也必须让 接收者能取得,那可能需要给密文添加额外信息,让接收者至少能恢复瞬时值。 不需要把整个IV值给过去,比如在密文开头也给出消息编号,或者利用一些别的隐含信息,使得接收者可以恢复Nonce,以至加密瞬时值得到同样的IV值。
- 大多数系统而言,一般32~48bit的消息编号长度足够大了。开销远小于一个块长度。甚至如果系统本身就有消息计数器,或者传输利用的是隐含计数器的可靠信道,可以做到没有任何额外开销。
OFB

CTR

CFB

加密算法的输入是 前一个密文块(首个是IV)。明文本身不被加密而是与加密器的输出做异或。

若 s = 128,(对于AES就是 blocksize)那就是分组模式。
若 s 小于 blocksize,比如s = 8,那么 每次异或的是 s比特
加密算法的输入位数是 b (block size),数据是 移位寄存器
异或的 位数 就是 分片单位 s 比特。
表示移位寄存器的高s比特被顶出丢弃,尾部拼接入异或器的输出。