本来很久之前就应该把它学了,但是不能静下心看完,拖到现在.........
今天上课的时候跟cg一起看,抱着神仙的大腿将它看完了,cg牛逼!!
首先我们先看下他的加密过程
可以看到,它先将明文进行分块,第一块与初始变量异或,然后秘钥进行加密,得到的密文再与第二块明文进行异或,继续秘钥加密,以此类推,加密过程有个最显著的特点就是:前一个密文用来产生后一个密文
接下来是解密的过程,其实懂了加密的过程,解密得过程就是加密的逆推过去
将密文进行分块,第一块先秘钥解密,然后再去跟初始变量进行异或,得出来的是第一块明文,第二块密文秘钥解密,然后与第一块密文进行异或,得到第二块密文,以此类推,同样的,前一块的密文也会参与后一块密文的解密
接下来就讲翻转攻击,先给张图
可以看到,因为加密过程密文和明文其实都是可控的,假设第一块密文为A,第二块密文秘钥加密以后是B,第二块明文是C
由图可以得到
C=A^B,也就有A^B^C=0,即是B=A^C
假设我们现在将第一块密文替换成A^C,这样的话第二块明文(也就是原来的C)就会变成A^C^B,刚好是0,如果再改一下,异或多一个X的话,那么第二块明文就可以变成是我们可控的了,即是A^C^X^B=0^X=X,至于为什么不用B直接异或B,这是因为B秘钥加密的过程难以破解。
到了这里,cbc翻转攻击的原理就全部讲完了,这里顺便给一题,bugku的login4
https://blog.csdn.net/xiaorouji/article/details/81988296#t52
萌新的一些见解,还请大佬们多多指教,给大佬递茶.jpg