?CBC模式的全稱是Cipher Block Chaining mode(密碼塊鏈接模式),因此得名,因為密碼塊像壹條鏈壹樣連接在壹起。
?在CBC模式下,明文包首先與之前的密文包進行異或運算,然後進行加密。
ECB模型與CBC模型的比較
?當第壹個加密明文包為時,由於沒有“前壹個密文包”,因此需要預先準備壹個包的比特序列來替換“前壹個密文包”,該比特序列稱為初始化向量,通常縮寫為IV。每次加密都會隨機生成不同的位序列作為初始化向量。
?在加密之前,明文包必須與“先前的密文包”進行異或運算,因此即使明文包1和2的值相等,密文包1和2的值也不壹定相等。這樣,CBC模式就不存在ECB模式的缺陷。
?在CBC模式下,我們無法單獨加密中間明文數據包。例如,如果要生成密文分組3,至少需要收集明文分組1、2和3。
?假設以CBC模式加密的密文分組之壹被損壞。在這種情況下,只要密文分組的長度沒有編號,在解密期間最多只有兩個分組會受到數據損壞的影響。
?假設CBC模式下密文分組中有部分比特丟失,即使此時只有1比特丟失,密文分組的長度也會發生變化,後續分組也會發生錯位,導致丟失比特之後的所有密文分組都無法解密。
?假設主動攻擊者Mallory旨在通過修改密文來操縱解密後的明文。如果Mallory可以反轉初始化向量中的任何位,明文包中的相應位也將被反轉。這是因為在CBC模式的解密過程中,第壹個明文分組將與初始化向量進行異或運算。
通過這種方式,Mallory可以攻擊初始化向量,但以同樣的方式攻擊密文分組非常困難。
?填充預言攻擊是利用分組密碼中的填充部分進行攻擊的壹種方法。在分組密碼中,當明文的長度不是分組長度的整數倍時,需要在最後壹個分組中填充壹些數據,使其充滿壹個分組的長度。在填充提示攻擊中,攻擊者會重復發送壹段密文,並且每次發送時都會對填充數據進行壹點更改。由於接收方在無法正確解密時會返回壹條錯誤消息,因此攻擊者可以通過這條錯誤消息獲得壹些與明文相關的信息。這種攻擊模式並不局限於CBC模式,而是適用於所有需要填充數據包的模式。2014對SSL3.0影響很大的獅子狗攻擊實際上是壹種填充攻擊。為了防禦這種攻擊,有必要對密文進行認證,以確保該密文確實是由合法發送者在公式化明文內容的前提下生成的。
?初始化向量必須使用不可預測的隨機數。然後在SSL/TSL1.0的版本協議中,初始向量不使用不可預測的隨機數,而是使用最後壹個CBC模式加密中的最後壹個數據包。為了防止攻擊者對此進行攻擊,TSL1.1以上的版本更改了初始化向量必須顯式傳輸的規定。
?SSL/TSL是確保互聯網安全的通信協議之壹,它使用CBC模式來確保通信的機密性,例如使用CBC模式的三重DES的3DES_EDE_CBC和使用CBC模式的256位AES的AES_256_CBC。
分組密碼CNOOC的壹種模式被稱為CTS模式。在分組密碼中,當明文的長度不能被分組的長度整除時,最後壹個分組需要被填充。CTS模式用於告知最後壹個包的哪個密文包數據用於信息填充,通常與ECB模式和CBC模式結合使用。根據最後壹個數據包的發送順序,CTS模式有多種變體(CBC-CS1、CBC-CS2、CBC-CS3)。
本系列的主要內容來自圖形密碼學第三版。
我只是壹個知識的搬運工
文章中的插圖來自原著。