图解密码技术(第四章)
- 填充 padding
- 初始化向量 Initialization Vector
- 填充提示攻击 Padding Oracle Attack
ECB模式
将明文分组直接加密的方式就是ECB模式。
什么是ECB模式
Electronic CodeBook模式:电子密码本模式
明文分组加密之后的结果直接成为密文分组。
党组后一个明文分组内容小于分组长度时,需要用一些特定的数据进行填充。
ECB特点
ECB是最简单的一种模式。相同的明文分组对应的密文分组是一样的,存在一定风险。
对ECB模式的攻击
对每个明文分组进行独立的加密解密,是一个很大的弱点。
一大弱点:可以在不破译密文的情况下操纵明文
主动攻击者可以做的,不仅仅是替换,还可以删除,复制。
消息验证码可以检测出对密文的篡改。
CBC模式
什么是CBC模式
Cipher Block Chaining模式:密文分组链接模式
首先将明文分组与前一个密文分组进行XOR运算,在进行加密。
ECB模式只进行了加密,而CBC模式在加密前进行了一次XOR。
初始化向量
加密第一个明文分组,由于没有前一个密文分组,要事先准备一个长度为一个分组长度的比特序列,被称为初始化向量,简记IV。
CBC模式的特点
损坏(密文分组长度没变):CBC模式中密文分组损坏时,会影响两个明文分组。
缺失(密文分组长度改变):即使只有1比特缺失,那此后的分组发生错位,全都无法解密。
对CBC模式的攻击
如果Mallory的目的是为了通过修改密文来操纵明文,则他可以通过对初始化向量进行比特反转(0变1,1变0)对明文分组进行比特反转攻击
可以对初始化向量进行攻击,但是对密文分组也进行同样攻击就很困难。如果密文分组1进行了反转,则明文分组1就不是简单发生反转变化了,无法达到期望的反转效果。
消息验证码,可以判断数据有没有被篡改。
填充提示攻击
填充提示攻击是一种利用分组密码中的填充部分来进行攻击的方法。该攻击适用于所有需要分组填充的模式。
在这个攻击中,攻击者回重复发送一段密文,每次发送都对填充的密文进行少许修改,通过无法解密时返回的一个错误消息,来获得一部分的明文相关信息。
防御这种攻击,需要对密文进行认证。
对初始化向量进行攻击
IV必须使用不可预测的随机数,但是SSL/TLS的TLS1.0的版本中,没有使用不可预测数,而是使用了上一次CBC加密的最后一个分组。容易被攻击。
CBC模式的应用实例
确保互联网安全的通信协议之一SSL/TLS就是使用CBC模式来确保通信的机密性。
如:使用CBC模式的三重DES的3DES_EDE_CBC
使用CBC模式的256比特的AES的AES_256_CBC