本來很久之前就應該把它學了,但是不能靜下心看完,拖到現在.........
今天上課的時候跟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