块数据加密模式

1.Electronic CodeBlock(ECB)

块加密模式是最简单的加密模式。信息被分割成单独的块,每一块单独加密。

601px-ECB_encryption.svg

601px-ECB_decryption.svg

算法特点:

1.因为每一块单独加密,所以不能很好的隐藏数据的模式,特别是在加密bitmap图像数据时。

2.每次Key、明文、密文的长度都必须是64位。

2.Cipher Block Chaining(CBC)

每一块明文在加密前会和前一块明文进行异或处理。为了使每个信息独一无二,第一个块信息会被一个初始化向量(initialization vector)

601px-CBC_encryption.svg

601px-CBC_decryption.svg

ECB加密算法可表示为:

C0 = Enc(Key, XOR(IV, P0)

Ci = Enc(Key, XOR(Ci-1, Pi)

ECB解密算法可以表示为:

P0 = XOR(IV, Dec(Key, C0))

Pi = XOR(Ci-1, Dec(Key,Ci))

算法特点:

  • 每次加密的密文长度为64位(8个字节);
  • 当相同的明文使用相同的密钥和初始向量的时候CBC模式总是产生相同的密文;
  • 密文块要依赖以前的操作结果,所以,密文块不能进行重新排列,同时不能并行加密,但是,很明显解密可以并行处理;
  • 可以使用不同的初始化向量来避免相同的明文产生相同的密文,一定程度上抵抗字典攻击;
  • 一个错误发生以后,当前和以后的密文都会被影响;

3.Cipher Feedback(CFB)

CFB模式和CBC模式相似,使块加密变成一个自同步的流加密。操作也十分相似,特别的是,CFB模式加密几乎是倒置的CBC模式加密。

Ci = Ek(Ci-1) XOR Pi

Pi = Ek(Ci-1) XOR Ci

Co = IV

注:Ci表示第i块数据块的密文,Ek表示加密过程,Pi表示第i块明文,IV 表示初始化向量

601px-CFB_encryption.svg

601px-CFB_decryption.svg

扩展:根据一个自同步密码的定义:如果有一部分密文丢失(例如:传输错误),只会出现一部分的原内容错误,并且在执行一段解密步骤后能继续正常解密。使用CFB模式加密后,解密将不再向CBC一样可以自同步。只有在一整数据块密文丢失时,CBC和CFB可以自同步;但是在丢失一个字节或者一个比特位时将会彻底是解密崩溃。为了解决好这种情况,需要依次加密一个字节或比特位。连通一个移位寄存器,CFB可以实现自同步。

标注:Si表示移位寄存器的第i次状态值;a<<x 表示a左移x位;head(a, x)表示a的高x位,n表示IV的比特位数。

image

算法特点:

  • 加密不能并行处理,解密可以并行处理;
  • 算法是自同步密码;
  • 在解密时,一个比特为错误会影响两个数据块的正确性。
  • 信息大小不必是加(解)密块的倍数;

4.Output Feedback(OFB)

与CFB模式不同之处在于,加密移位寄存器与密文无关了,仅与加密key和加密算法有关;做法不再是将密文输入到加密移位寄存器中,而是把输出的分组密文(Oi)输入到移位寄存器中。

601px-OFB_encryption.svg

601px-OFB_decryption.svg

特点:

  • 与CFB类似,以下都是不同之处;
  • 因为密文没有参与链操作,所以使得OFB模式更容易受到攻击;
  • 不会进行错误传播,某位密文发生错误,只会影响该位对应的明文,而不会影响别的位;
  • 不是自同步的,如果加密和解密两个操作失去同步,那么系统需要重新初始化;
  • 每次重新同步时,应使用不同的初始向量。可以避免产生相同的比特流,避免”已知明文”攻击 ;

互联网程序中加密模式的使用:

ECB是不推荐的方式,Key相同时,相同的明文在不同的时候产生相同的明文,容易遭到字典攻击;

CBC由于加入了向量参数,一定程度上抵御了字典工具,但缺点也随之而来,一旦中间一个数据出错或丢失,后面的数据将受到影响;

CFB与CBC类似,好处是明文和密文不用是8bit的整数倍,中间一个数据出错,只影响后面的几个块的数据;

OFB比CFB方式,一旦一个数据出错,不会影响后面的数据,但安全性降低;

因此,推荐使用CFB方式,但每个数据包单独加密,否则一个数据包丢失,需要做很多容错处理;

当然,具体问题也要具体分析,对于只需要”特定安全性”①,不需要”计算安全性”以上的软件,也可以使用ECB模式;

参考文献:

wiki:http://en.wikipedia.org/wiki/Block_cipher_mode_of_operation

sianblog:http://blog.sina.com.cn/s/blog_4c6e822d0102dwfd.html

你可能感兴趣的:(加密)