CBC,密文分组链接模式,是分组加密工作模式的一种
CBC字节翻转攻击,针对的是CBC Mode,只要分组密码工作在CBC模式下,都适用于字节翻转攻击

CBC Mode如下:


(本来是想拿《图解密码技术》的图的,看了一眼,发现它的解密是错误的)

平时我们需要注意的是加密使用到的初始向量IV,还有密钥key
CBC Mode的加解密的处理都是连续的,并不是并行处理

因此,CBC字节翻转攻击的实现就是基于连续处理这样的特点

每一组密文进行分组算法解密之后,需要和前一组的密文异或才能得到明文

CBC字节翻转攻击的核心原理是通过破坏一个比特的密文来篡改一个比特的明文

假设此时我们已知第n-1组的密文中的某一位的值a,以及第n组的密文的同一位置的值经过解密算法的b,那么第n组该位置上的明文为c=abc=a\oplus b

此时,我们通过篡改第n-1组的aacxa\oplus c\oplus xx为我们想要的,那么,解密出来的第n组明文,为acxb=ccx=0x=xa\oplus c\oplus x\oplus b=c\oplus c\oplus x=0\oplus x=x,就达成了我们篡改的目的

一般,在AES加密过程中,明文分组的长度为128位,即16个字节,密钥长度一般也选择16个字节,至于明文的填充方式,后面有介绍

有一些例题,还有Python模拟攻击在处理ing……
可参考https://goodapple.top/archives/217
https://qftm.github.io/2019/03/26/cbc-byte-reverse-attack/