對稱塊加密算法加密模式詳解

標題:對稱塊加密算法加密模式詳解
作者:DragonKing 
Email: 
[email protected]
原發網站:中國openssl專業論壇 http://openssl.126.com
版權聲明:未經作者允許,不能轉載和在出版物中使用本文

在openssl或其他密碼相關的資料中,我們經常看到對稱加密算法有ECB、CBC之類加密模式的簡稱,到底這些加密模式是什麼呢?它們之間有什麼不同呢,今天就是爲大家解開這個迷。
在現有的對稱加密算法中,主要有4種加密處理模式,這4種加密處理模式一般是針對塊加密算法而言的,如DES算法。這4種加密模式羅列如下:

    模式中文描述             英文名稱(Openssl縮寫)
    電子密碼本模式   Electronic Code Book(ECB)
    加密塊鏈模式           Cipher Block Chaining(CBC)
    加密反饋模式           Cipher Feedback Mode(CFB)
    輸出反饋模式           Output Feedback Mode(OFB)
   
下面我們分別介紹這4種加密模式。
【電子密碼本模式】
這種模式是最早採用和最簡單的模式,它將加密的數據分成若干組,每組的大小跟加密密鑰長度相同,然後每組都用相同的密鑰進行加密。比如DES算法,一個64位的密鑰,如果採用該模式加密,就是將要加密的數據分成每組64位的數據,如果最後一組不夠64位,那麼就補齊爲64位,然後每組數據都採用DES算法的64位密鑰進行加密。下圖:
_______________________
My name |is Drago|nKing
-----------------------
上圖“My name is DragonKing”這句話每8個字符(64位)作爲一塊,然後使用一個相同的64位的密鑰對每個塊進行加密,最後一塊不足64位,就補齊後再進行加密。
可以看到,因爲ECB方式每64位使用的密鑰都是相同的,所以非常容易獲得密文進行密碼破解,此外,因爲每64位是相互獨立的,有時候甚至不用破解密碼,只要簡單的將其中一塊替換就可以達到黑客目的。
【加密塊鏈模式】
080324151446.jpg

從這兩個圖中大家可以看到,CBC模式的加密首先也是將明文分成固定長度(64位)的塊(P0,P1...),然後將前面一個加密塊輸出的密文與下一個要加密的明文塊進行XOR(異或)操作計算,將計算結果再用密鑰進行加密得到密文。第一明文塊加密的時候,因爲前面沒有加密的密文,所以需要一個初始化向量(IV)。跟ECB方式不一樣,通過連接關係,使得密文跟明文不再是一一對應的關係,破解起來更困難,而且克服了只要簡單調換密文塊可能達到目的的攻擊。
但是該加密模式的缺點是不能實時解密,也就是說,必須等到每8個字節都接受到之後才能開始加密,否則就不能得到正確的結果。這在要求實時性比較高的時候就顯得不合適了。所以纔有了下面兩種加密模式。
【加密反饋模式】
加密反饋模式爲了克服必須等待8個字節全部得到才能進行解密的缺點,採用了一個64位(8個字節)的位移寄存器來獲得密文,如下圖所示:

080324151608.jpg

上面兩個圖中C2、C3以及P10等都是一個字節(8位)的數據,所以能夠實現字符的實時加密和解密,不用再等到8個字節都接受到之後再進行解密。圖示是在進行第10個字節數據的加密和解密過程,在該過程中,先從移位寄存器取8個字節的數據(C2到C9)用密鑰進行加密,然後取加密數據最左邊的一個字節跟輸入的明文P10進行XOR(異或)操作,得到的值作爲輸出密文C10,同時將C10送入到移位寄存器中。
需要注意的是,如果其中有一個字節的密文在傳輸的時候發生錯誤(即使是其中的一位),那麼它出現在移位寄存器期間解密的8個字節的數據都會得不到正確的解密結果,當然,這8個字節過去之後,依然可以得到正確的解密結果。但是一個比特錯誤就影響到8個字節(64個比特)的正確結果,導致魯棒性太差,所以就又提出了下面的加密模式OFB。
【輸出反饋模式】
輸出反饋模式OFB跟CFB幾乎是一樣的,除了其以爲寄存器的輸入數據稍微有一點不同之外,如下圖:
080324151655.jpg

可以看到,這種方法因爲沒有采用密文作爲加密的數據,所以克服了由於傳輸過程中由於單個比特導致64個相關比特解密失敗的情況,在本模式下,如果一個比特發生錯誤了,那麼只會影響其本身對應的一個比特,而不會影響別的。但是相對於其它模式,因爲數據之間相關性小,這種加密模式是比較不安全的,所以在應用的時候除非特別需要,一般不提倡應用OFB模式

發佈了15 篇原創文章 · 獲贊 33 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章