天天看點

分組密碼的幾種模式

  本文主要參考自博文分組密碼的幾種模式。另外,還可參考另一篇。

  介紹最詳細的是維基百科條目塊密碼的工作模式,非常值得推薦。

  電子密碼本(Electronic Code Book,ECB)

  密碼塊連結(Cipher Block Chaining,CBC)

  密碼回報(Cipher Feedback,CFB)

  輸出回報(Output Feedback,OFB)

  填充密碼塊連結(Propagating cipher-block chaining, PCBC)

  分組密碼有不同的加密和解密機制。最簡單的加密方式就是一個明文資料塊加密成一個密文資料塊,下一個明文資料塊加密成下一個密文資料塊,以此類推。這就是電子密碼本(ECB)模式。圖5-5說明了電子密碼本(ECB)模式。

  

分組密碼的幾種模式

  雖然簡單,但ECB模式不能為模式識别的密碼分析提供保護。這就意味着如果明文中含有兩個相同的資料塊,則密文中必然會有兩個相同的資料塊。當我們進行密碼分析的時候,一個常用到的技術就是識别和确定密文中存在的模式。一旦模式被确定了,那就很容易推斷出使用了ECB加密,這樣攻者隻需瞄準解決特定的密文資料塊即可,而不必解密整個密文。

  為了解決這個問題,我們介紹一下分組密碼的其他幾種形式:(1)密碼分組連結(CBC);(2)填充密碼分組連結(PCBC);(3)密碼回報(CFB);(4)輸出回報(OFB)。本節我隻介紹加密方法(把加密的步驟反向就可以得到解密方法)。

  密碼分組連結(CBC):如圖5-6所示的CBC使用了初始化向量(IV)和第一組明文進行異或操作,然後加密,加密後的密文與下一組明文進行異或操作,以此類推。這種方式保證了每組密文依賴于它前面所有的明文。

分組密碼的幾種模式

  填充密碼分組連結(PCBC):如圖5-7所示的PCBC與前面講述的CBC非常相似。它們的不同在于,在PCBC中,不僅僅隻有初始化向量(IV)與第一組明文進行異或,以及密文與下一組明文進行異或操作,而且還包含初始化向量與第一組密文進行異或操作,以及這個結果與下一組的明文進行異或操作。這種設計方式導緻密文中任何一個微小的修改都會導緻加密和解密流程發生很大的改變。

分組密碼的幾種模式

  密碼回報(CFB):如圖5-8所示的CFB與CBC相比,初始化向量(IV)和明文颠倒了一下位置。是以與CBC不同,CFB不會先進行初始化向量和第一組明文的異或操作後進行加密,然後密文與下一組明文再進行異或後加密操作,而是它會首先對初始化向量進行加密,然後由加密後的初始化向量與明文進行異或操作生成密文,接着再對這個密文進行加密,然後與下一組明文進行異或操作。

分組密碼的幾種模式