分组密码的工作模式是一个算法,它刻画了如何利用分组密码提供信息安全服务。1980年NBS(现在的NIST)公布了4种DES的工作模式,它们分别是电子密码本模式(Electronic Codebook Mode ,ECB)、密码分组链模式(Cipher Block Chaining Mode ,CBC)、密码反馈模式模式(Cipher Feedback Mode ,CFB)、输出反馈模式(Output Feedback Mode ,OFB)。2000年3月NIST为AES公开征集保密工作模式,2001年12月在文件300-38A中公布了用于保密性的5种工作模式,分别是ECB、CBC、CFB、OFB、CTR(计数模式,Counter Mode)。
(1)电子密码本模式ECB
图4.17 电子密码本模式
一个明文分组加密成一个密文分组,相同的明文分组被加密成相同的密文分组。由于大多数消息并不是刚好分成64-比特(或者任意分组长)的加密分组,通常需要填充最后一个分组,为了在解密后将填充位去掉,需要在最后一分组的最后一字节中填上填充长度。
ECB模式的缺点是:如果密码分析者有很多消息的明密文对,那就可能在不知道密钥的情况下恢复出明文;更严重的问题是敌手通过重放,可以在不知道密钥情况下修改被加密过的消息,用这种办法欺骗接收者。例如在实际应用中,不同的消息可能会有一些比特序列是相同的(消息头),敌手重放消息头,修改消息体欺骗接收者。
(2)密码分组链模式CBC
明文要与前面的密文进行异或运算然后被加密,从而形成密文链。每一分组的加密都依赖于所有前面的分组。在处理第一个明文分组时,与一个初始向量(IV)组进行异或运算。IV不需要保密,它可以明文形式与密文一起传送。密文分组的计算为:
C i =Ek(Pi⊕C i -1)
接受方明文分组的计算为:
P i = Ci-1Å DK( C i)
使用IV后,完全相同的明文被加密成不同的密文。敌手再用分组重放进行攻击是完全不可能的了。
图4.18 密码分组链模式
(3)密码反馈模式CFB
在CFB模式下,设分组长度为n,数据可以在比分组长度小得多的k比特字符里进行加密(1≤k≤n)。开始,仍然使用一个长度为n的初始向量(IV)。每个k比特字符对应的密文Ci为该明文字符Pi与一个k比特密钥字符Ki进行异或得到。该密钥字符是通过加密前n比特密文得到的。
为了初始化CFB过程,分组算法的输入必须用IV初始化,它并不需要保密,但必须是唯一的。如果在CFB模式下IV不是唯一的,密码分析者就可以恢复出相应的明文。
图4.19 n-比特分组算法下的k-比特CFB模式
(4)输出反馈模式OFB
用分组密码产生一个随机密钥流,将此密钥流和明文流进行异或可得密文流。仍然需要一个初始向量(IV)。IV应当唯一但不须保密。
Ci =Pi ⊕Si ; Si =Ek(Si -1 )
Pi =Ci⊕Si ;Si=Ek(Si -1)
其中Si是状态,它独立于明文和密文。
图4.20 比特输出反馈模式
(5)计数模式CTR
该模式使用一个计数ctr(也是一个初始向量)。
Ci=Ek(ctr+i)⊕Pi
Pi=Ek(ctr+i)⊕Ci
注意该模式不需要计算Ek的逆。该模式的优点是可以并行、可以预处理、可证明其安全界至少与CBC一样好、加密与解密仅涉及密码算法的加密等。
图4.21 计数模式 |