分组密码工作模式
密码学中,分组密码的工作模式允许使用同一个分组密码密钥对于一块数据进行加密,并保证安全性。
历史和标准化
最早出现的工作模式,ECB,CBC,OFB和CFB,CTR,XTS,HMAC等
初始化向量(IV)
初始化向量是许多任务作模式中用于将加密随机化的一个块位,由此同样的明文,避免了较慢的重新产生密钥的过程。
初始化向量与密钥相比有不同的安全性需求,因此IV通常无须保密,然而在大多数情况中,不应当在使用同一密钥的情况下两次使用同一个IV。对于CBC和CFB,重用IV会导致泄露明文首个块的某些信息,亦包括两个不同消息中相同的前缀。对于OFB和CTR而言,重用IV会导致完全失去安全性。另外,在CBC模式中,IV在加密时必须是无法预测的;特别的,在许多实现中使用的产生IV的方法,例如SSL2.0使用的,即采用上一个消息的最后一块密文作为下一个消息的IV,是不安全的。
填充
密码块只能对确定的长度的数据块进行处理,而消息的长度通常是可变的,因此部分模式(ECB和CBC)需要最后一块在加密之前进行填充。有数种填充方式,最简单的一种是在明文的最后填充空字符以使其长度为块长度的整数倍,但必须保证可以恢复明文的原始长度。
常用模式
电子密码本(ECB)
最简单的加密模式即为电子密码本模式,需要加密的消息按照块密码的块大小被分为数个块,并对每个块进行独立加密。
缺点
同样的明文块会产生相同的密文块,因此,不能很好的隐藏数据模式。
密码块链接(CBC)
在CBC模式中,每个明文块先与前一个密文块进行异或后,在进行加密,在这种方法中每个密文块都依赖于它前面的所有明文块。同时为了保证每条消息的唯一性,在第一个块中需要使用初始化向量。
填充密码块链接(PCBC)
填充密码块链接(PCBC,Propagating cipher-block chaining)或称为明文密码块链接(Plaintext cipher-block chaining),是一种可以使密文中的微小更改在解密时导致明文大部分错误的模式,并在加密的时候也具有同样的特性。
密文反馈(CFB)
密文反馈(CFB,Cipher feedback)模式类似于CBC,可以将块密码变为自同步的流密码;工作过程亦非常相似,CFB的解密过程几乎就是颠倒的CBC的加密过程