对称密码

对称密码算法可以分为分组密码和流密码:
分组密码(block cipher)是每次只能处理特定长度的一块(block)数据的密码算法,一次能处理的数据长度成为分组长度(block length)
流密码(stream cipher)是对数据流进行连续处理的一类密码算法

分组密码模式简介

分组密码一次只能处理特定长度的数据,但是通常情况下需要加密的明文数据长度是大于分组长度的,因此就需要将明文分为若干个block进行加密,不同分组之间的加密成为迭代,不同的分组迭代加密方式就是分组密码的模式。
分组密码常用的模式有5种:

  • ECB模式:Electronic CodeBook mode,电子密码本模式
  • CBC模式:Cipher Block Chaining mode,密码分组连接模式
  • CFB模式:Cipher FeedBack mode,密文反馈模式
  • OFB模式:Output FeedBack mode,输出反馈模式
  • CTR模式:Counter mode,计数器模式

模式实现

ECB模式

ECB模式按照分组长度,将明文分为若干个分组,每个分组独立加密得到密文,每个分组之间相互不影响。

  • 加密
    分组密码的模式-LMLPHP

  • 解密
    分组密码的模式-LMLPHP

针对ECB模式的攻击

  • ECB模式每个分组独立加密,相同的明文分组,最后输出的密文是一样的,因此,通过观察密文分布情况,就能大概确定明文分布情况
  • 攻击者操纵调整密文顺序,导致接收者解密后得到的明文也发生变化

CBC模式

CBC为密文分组链接模式。

  • 加密:
    每次分组加密时,首先将明文和前一个分组密文进行XOR运算,然后再进行加密得到密文。第一个分组没有可以XOR的密文分组,因此第一个分组是和IV进行XOR运算,然后再加密。
    分组密码的模式-LMLPHP

  • 解密:
    解密时,从第一个密文分组到最后一个密文分组,先使用密钥解密,然后和前一个密文进行XOR运算得到明文。第一个分组是解密后和IV进行XOR。
    分组密码的模式-LMLPHP

针对CBC模式的攻击

IV比特反转:由于CBC模式第一个分组解密后,是通过与IV进行XOR操作,因此,攻击者通过反转IV中的某些比特,就可以操纵明文变化

CFB模式

CFB为密文反馈模式。

  • 加密
    加密时,将前一个密文加密后和当前分组明文进行XOR操作,得到当前分组的密文。第一个分组加密时,将IV进行加密后和第一组明文XOR
    分组密码的模式-LMLPHP

  • 解密
    解密时,将前一个分组密文先加密,然后和当前分组密文进行XOR,得到明文。第一个分组解密,是将IV加密后和密文XOR
    分组密码的模式-LMLPHP

针对CFB模式的攻击

重放攻击:Alice向Bob发生消息,由4个密文分组组成,中间人Mallory将后3个密文保存下来。Alice第二次向Bob发送消息时,Mallory将保存的3个旧密文替换后发送给Bob,Bob解密时,第一个密文可以正常解密,第二个会报错,第三个和第四个会变成Mallory替换的内容。

OFB模式

OFB为输出反馈模式

  • 加密
    加密时,通过将IV加密,和第一个明文分组XOR得到第一个密文分组,对加密后的IV继续加密,和第二个明文XOR,以此类推
    分组密码的模式-LMLPHP

  • 解密
    解密时,将IV加密,和第一个密文分组XOR得到第一个明文分组,继续对IV加密后的结果加密和第二个密文分组XOR,得到第二个明文,以此类推
    分组密码的模式-LMLPHP

CTR模式

CTR为计数器模式,将主词累加的计数器进行加密生成密钥流,和明文XOR得到密文。

  • 加密
    第一个分组加密时,将计数器CTR加密,和第一个明文XOR,得到第一个密文,然后将计数器CTR加一,加密后和第二个明文XOR,以此类推
    分组密码的模式-LMLPHP

  • 解密
    解密时,通过将CTR加密后和密文XOR得到明文。
    分组密码的模式-LMLPHP

06-14 16:54