BLOCK CIPHER
分组密码
工作方式
重点
diffusion(扩散):目的是让明文中的单个数字影响密文中的多个数组,从而使明文的统计特征在密文中消失,相当于明文的统计结构被扩散。
confusion(混淆): 目的是让密钥与密文的统计信息之间的关系变得复杂,从而通过增加统计方法进行攻击的难度
CBC 密文分组链接模式
加密输入时当前明文分组和前一密文分组的异或,形成一条链,使用相同的密钥,这样每个明文分组的加密函数输入与明文分组之间没有固定的关系(先异或再加密)
计算初始值Initial Value(IV)的方法
- 用加密函数加密一个时变值,所用密钥和明文加密所用的密钥相同
- 用随机数发生器产生一个随机数分组
-
CBC的优点和局限:
- 每个密文分组依赖于所有明文分组
- 明文消息中的任何一点变化都会影响所有的密文分组
- 发送方和接收方需要共享初始变量Initial Value(IV)
- 在消息的最后,还要处理不够长度的分组
-
加密:
Ci=EK(Pi⨁C C i = E K ( P i ⨁ C i−1) i − 1 )
C0=IV C 0 = I V
解密:
Pi=DK(Ci)⨁C P i = D K ( C i ) ⨁ C i−1 i − 1
C0=IV C 0 = I V
加密时,明文中的微小改变会导致其后的全部密文块发生改变,而在解密时,从两个邻接的密文块中即可得到一个明文块,因此在解密过程中可以被并行化,而解密时,密文中一位的改变只会导致其对应的明文块完全改变和下一个明文块中对应为发生改变,不会影响其他明文的内容CFB 密码反馈模式
加密函数的输入是一个64位的寄存器,产生初始向量IV。加密函数高端j位与明文P1的第一单元异或,产生j位密文C1进入移位寄存器低端,继续加密,与P2输入异或,如此重复知道所有明文单元都完成加密(先加密再异或)
优缺点
优点
- 当数据以位或字节形式到达时使用都是适当的
- 最通用的是流密码形式
-
缺点
- 不利于并行计算
- 误差传送:一个明文单元损坏影响多个单元
- 唯一的IV
与CBC相似,明文的改变会影响接下来所有的密文,因此加密过程不能并行化;而同样的,与CBC类似,解密过程时可以并行化的,在解密时,密文中一位数据的改变仅会影响两个明文块,对应明文块中的数据与下一块中全部的数据,而之后的数据将恢复正常OFB
与CFB类似,但是OFB中加密函数输出被反馈回移位寄存器,CFB中是密文单元被反馈回移位寄存器
Ci=Pi⨁Oi C i = P i ⨁ O i
Pi=Ci⨁Oi P i = C i ⨁ O i
Oi=EK(O O i = E K ( O i−1) i − 1 )
Oi=IV O i = I V
优点
传输中的比特差错不会传播
缺点
比CFB更容易受报文流篡改攻击
IV
IV通常不需要保密,但是在大多数情况中,不应当在使用同一密钥的情乱下两次使用同一个IV。对于CBC和OFB,重用IV会导致泄露明文某个块的某些信息,亦包括两个不同消息中相同的前缀。对于OFB和CTR而言,重用IV会导致完全失去安全性。