分组密码的五种工作模式

电子密码本模式Electronic Codebook, ECB

明文分成64的分组进行加密,必要时填充,每个分组用同一密钥加密,同样明文分组加密得相同密文

示意图

ECB

局限性

  • ECB模式特别适合数据较少的情况,如安全传输DES密钥
  • 一段明文消息中若有几个相同的明文组,则密文也将出现几个相同的片段
  • 对于很长的消息,ECB是不安全的,如果消息是非常结构化的,密码分析可能利用其结构特征来破解
  • ECB的弱点来源于其加密过的密文分组是互相独立的

密文分组链接模式Cipher Block Chaining (CBC)

加密输入是当前明文分组和前一密文分组的异或,形成一条链,使用相同的密钥, 这样每个明文分组的加密函数输入与明文分组之间不再有固定的关系

示意图

CBC

优点和局限

  • 每个密文分组依赖于其他明文分组
  • 明文消息中的任何一点变化都会影响密文分组
  • 发送方和接收方需要共享初始向量Initial Value(IV)
    • 如果IV被明文传送,则攻击者可以改变第一个分组的某些位,然后预先改变IV中的某些位,则接收者收到的P1也就相应改变了
    • 因此,IV必须是一个固定的值或者必须用ECB方式在消息之前加密传送
  • 在消息的最后,还要处理不够长度的分组
    • 可以填充已知非数据值,或者在最后一块补上填充位长度

密码反馈模式Cipher FeedBack (CFB)

  • 是一种将DES转化成流密码的技术,不再要求报文被填充成整个分组,可以实时运行,如果要传输一个字符流,每个字符都可以使用面向字符的流密码加密后立即传输。
  • 加密:加密函数的输入是一个64位的移位寄存器,产生初始向量IV。加密函数高端j位与明文P1的第一单元异或,产生j位密文C1进入移位寄存器低端,继续加密,与P2输入异或,如此重复直到所有明文单元都完成加密。
  • 解密:采用相同方案,但是使用加密函数而非解密函数

示意图

CFB

优缺点

  • 当数据以位或字节形式到达时使用都是适当的
  • 最通用的是流密码形式

输出反馈模式Output FeedBack (OFB)

结构上类似CFB,但是OFB中加密函数输出被反馈回移位寄存器,CFB中是密文单元被反馈回移位寄存器。优点是传输中的比特差错不会传播,缺点是比CFB更容易受报文流篡改攻击。

示意图

OFB

优缺点

  • OFB的一个优点是传输过程中在某位上发生的错误不会影响到其他位。比如,C1中有1位发生了错误,只会影响到P1的恢复,后续的明文单元不受影响。
  • OFB的缺点是,抗消息流篡改攻击的能力不如CFB。即密文中的某位取反,恢复出的明文相应位也取反

计数器模式Counter (CTR)

  • 是一种新模式,虽然早就提出来了
  • 与OFB很像,但是加密的是计数器的值而不是任何反馈回来的值
  • 每一个明文分组都必须使用一个不同的密钥和计数器值,决不要重复使用Ci = Pi XOR Oi Oi = DESK1(i)
  • 可以用于高速网络加密中

示意图

CTR

优缺点

  • 高效
    • 可以做并行加密
    • 对高速链路的突发数据加密尤其有效
  • 可以对被加密的分组进行随机存取
  • 相当安全
  • 简洁
  • 必须决不重复使用密钥和计数器值