分組密碼與模式

什么是分組密碼和模式

前面我們講過了DES和AES算法,他們每次都只能加密固定長度的明文,這樣的密碼算法叫做分組密碼。

如果需要加密更長的明文則需要對分組密碼進行迭代。而分組密碼的迭代方法就稱為分組密碼的模式。

本文我們會講如下幾種模式:

  • ECB模式:電子密碼本模式
  • CBC模式: 密碼分組鏈接模式
  • CFB模式: 密文反饋模式
  • OFB模式: 輸出反饋模式
  • CTR模式: 計數(shù)器模式

ECB模式

ECB模式的全稱是Electronic CodeBook模式,ECB模式是將明文分組(分組密碼算法中作為加密對象的明文)加密之后的結(jié)果直接成為密文分組(使用分組加密算法將明文分組加密之后所生成的密文)。

下圖為ECB模式的加密:

下圖為ECB模式的解密:

ECB模式的特點

ECB模式是最簡單的模式,在其中明文和密文是一一對應的,相同的明文會被加密為相同的密文,這樣可以通過觀察密文得到明文中重復的組合,并以此為線索來破解密碼。

ECB模式的攻擊

ECB模式中,每個明文對應著相應的密文。 那么攻擊者并不需要進行解密,他可以偽造密文的順序,從而改變了解密出來的明文順序。

比如 A 轉(zhuǎn)賬給B C元。如果A,B,C是明文分組,其對應的密文分組是a,b,c, 則攻擊者只需要改變密文的順序為:b,a,c, 那么被解密出來的明文含義就是 B轉(zhuǎn)賬給A C元。

CBC模式

CBC模式的全稱是Cipher Block Chaining模式。

CBC模式是將前一個密文分組與當前的明文分組的內(nèi)容混合起來進行加密的模式。這樣可以避免ECB模式的弱點。

CBC模式的加密:

CBC模式的解密:

CBC模式的特點

和ECB模式相比,ECB只是進行了加密,而CBC則是在加密之前做了一次XOR。

并且CBC要與前面一個密文分組進行XOR運算,這樣相同的明文分組也會生成不同的密文。ECB的缺陷就不存在了。

這樣其實也是CBC的缺點,它是一個鏈式結(jié)構(gòu),如果要生成密文分組3,則必須先加密明文分組1,2 。 不能并行進行。

另外我們觀察CBC的解密過程可以看到,如果一個密文分組損壞,只要密文長度不變,則只會影響其相關聯(lián)的兩個明文分組的解密。

SSL/TLS 協(xié)議就是使用CBC模式來保證通信的機密性的。

CBC模式的攻擊

CBC模式可以操縱解密過程的初始化向量,從而對解密后的明文進行攻擊。具體來說就是對初始化向量進行反轉(zhuǎn),從而導致XOR之后的明文分組1也被反轉(zhuǎn)了。

另外還有一種攻擊叫做填充提示攻擊,如果在分組密碼中,明文長度不是分組長度的整數(shù)倍時候,需要在最后一個分組填充一些數(shù)據(jù)讓其湊夠一個分組長度。在填充提示攻擊中,攻擊者會反復發(fā)送一段密文,每次發(fā)送都修改填充的數(shù)據(jù),從而根據(jù)解密的錯誤信息來推斷一部分明文相關的信息。

CFB模式

CFB模式的全稱是 Cipher FeedBack模式(密文反饋模式)。在CFB模式中,前一個密文分組會首先進行加密,然后再與明文分組進行XOR運算,最后得到密文分組。

如下圖所示CFB模式的加密:


下面是CFB模式的解密:

CFB模式的攻擊

我們觀察在CFB解密階段,是通過密文加密之后和密文進行XOR操作得到明文的。

這樣就有可能進行重放攻擊。比如用戶可以將上一次發(fā)送過來的密文保存起來,將下一次發(fā)送過來的密文進行替換,從而達到修改新明文的目的。

OFB模式

OFB模式的全稱是Output-FeedBack模式(輸出反饋模式)。在OFB模式中,密碼的輸出會反饋到密碼算法的輸入中。

OFB模式是通過將明文分組和密碼算法的輸出進行XOR運算來產(chǎn)生密文分組的。

OFB模式的加密過程:


OFB模式的解密:


我們可以看到,OFB是將初始化向量不斷的加密從而得到后續(xù)的加密輸入。

他和CFB模式的區(qū)別也就在這里。CFB是將密文分組當做加密輸入。

因為OFB模式中加密輸入跟要加密的數(shù)據(jù)無關,所以我們可以提前計算出來所有要用到的加密輸入,從而提高效率。

CTR模式

CTR模式的全稱是Counter模式(計數(shù)器模式)。CTR模式是一種將計數(shù)器不斷累加,然后進行加密從而生成密鑰流的流密碼。

下面是CTR模式的加密:

CTR模式的解密:

CTR模式的特點

CTR的加密和解密使用了完全相同的結(jié)構(gòu),所以在程序設計上比較容易實現(xiàn)。

CTR 可以任意順序?qū)Ψ纸M進行加密和解密,從而支持并行計算。

更多教程請參考 flydean的博客

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容