分組加密模式 ECB、CBC、PCBC、CFB、OFB、CTR

在分組加密算法中,有幾種不同的工作模式,分別是ECB(Electronic CodeBook,電子密碼本模式)、CBC(Cipher-block chaining,密碼塊連接模式)、PCBC(Propagating cipher-block chaining,填充密碼塊鏈接模式)、CFB(Cipher feedback,密文反饋模式)、OFB(Output feedback,輸出反饋模式)、CTR(Counter mode,計數器模式)。

注意這幾種模式適用於對稱加密算法中,對稱加密算法的特點是密文長度等於密文長度;加解密用同一組祕鑰。在CFB、OFB、CTR模式中需要涉及到流密碼(序列密碼)的概念,這裏先給出,摘自百度百科序列密碼

序列密碼也稱爲流密碼(Stream Cipher),它是對稱密碼算法的一種。序列密碼具有實現簡單、便於硬件實施、加解密處理速度快、沒有或只有有限的錯誤傳播等特點,因此在實際應用中,特別是專用或機密機構中保持着優勢,典型的應用領域包括無線通信、外交通信。 1949年Shannon證明了只有一次一密的密碼體制是絕對安全的,這給序列密碼技術的研究以強大的支持,序列密碼方案的發展是模仿一次一密系統的嘗試,或者說“一次一密”的密碼方案是序列密碼的雛形。如果序列密碼所使用的是真正隨機方式的、與消息流長度相同的密鑰流,則此時的序列密碼就是一次一密的密碼體制。若能以一種方式產生一隨機序列(密鑰流),這一序列由密鑰所確定,則利用這樣的序列就可以進行加密,即將密鑰、明文表示成連續的符號或二進制,對應地進行加密,加解密時一次處理明文中的一個或幾個比特。

在序列密碼中,密鑰流由密鑰流發生器f產生:zi=f(k,si),這裏的si是加密器中存儲器(記憶元件)在i時刻的狀態。根據加密器中的記憶元件si的存貯狀態是否依賴於明文字符,序列密碼可進一步分成同步和自同步兩種。如果si獨立於明文字符則稱爲同步流密碼,否則稱爲自同步流密碼。

序列密碼與分組密碼的對比

分組密碼以一定大小作爲每次處理的基本單元,而序列密碼則是以一個元素(一個字母或一個比特)作爲基本的處理單元。

序列密碼是一個隨時間變化的加密變換,具有轉換速度快、低錯誤傳播的優點,硬件實現電路更簡單;其缺點是:低擴散(意味着混亂不夠)、插入及修改的不敏感性。

分組密碼使用的是一個不隨時間變化的固定變換,具有擴散性好、插入敏感等優點;其缺點是:加解密處理速度慢、存在錯誤傳播。

序列密碼涉及到大量的理論知識,提出了衆多的設計原理,也得到了廣泛的分析,但許多研究成果並沒有完全公開,這也許是因爲序列密碼目前主要應用於軍事和外交等機密部門的緣故。目前,公開的序列密碼算法主要有RC4、SEAL等。

ECB模式

Electronic CodeBook,電子密碼本模式,這種模式的特點是每一個明文塊對應一個密文塊,是最簡單的對稱加密模式。

ECB模式加密過程
ECB模式解密過程

缺點:ECB模式中,明文分組與密文分組是一一對應的關係,因此,如果明文中存在多個相同的明文分組,則這些明文分組最終都將被轉換爲相同的密文分組。這樣一來,只要觀察一下密文,就可以知道明文存在怎樣的重複組合,並可以以此爲線索來破譯密碼,因此ECB模式是存在一定風險的。

如:某銀行的轉賬請求數據由以下3個分組構成。

分組1=付款人的銀行賬號

分組2=收款人的銀行賬號

分組3=轉賬金額。

現在需要A賬戶給B賬戶轉賬100,但是如果將分組1和分組2的密文進行調換,就會使賬戶B給賬戶A轉賬100。這種情況就是在不需要破解密文的情況下,就能操縱明文。

CBC模式

Cipher-block chaining,密碼塊連接模式。這種模式需要將每一個明文塊與前一個密文塊進行異或後在進行加密操作。第一個塊需要初始向量IV。加解密流程如下圖所示:

CBC模式加密過程
CBC模式解密過程

優點:①每一次加密都需要前一個密文塊參與,明文中微小的改變都會使後續所有密文改變;②無法從密文看出明文的規律。安全性得以提高。目前,CBC是最爲常用的工作模式。

缺點:①由於每次加密都需要前一個密文參與,所以無法並行加密,只能串行加密,加密速度受到限制。但是只要有兩個相鄰的密文塊,就可以解密出後一個密文塊的明文,比如知道密文2和密文3,就可以解密出明文3。所以解密是可以並行執行的。②改變某個密文塊,只會影響當前和下一個解密出的明文,不會影響後續解密過程。

PCBC模式

Propagating cipher-block chaining,填充密碼塊鏈接模式,又稱爲明文密碼塊鏈接(Plaintext cipher-block chaining)。它與CBC模式類似,只是在加解密時,不但要與上一個密文異或,還要與上一個明文進行異或。加解密流程如下圖所示:

PCBC模式加密過程
PCBC解密過程

優點:PCBC模式優點與CBC模式基本一致。①每一次加密都需要前一個密文塊與明文塊參與,明文中微小的改變都會使後續所有密文改變,同樣密文的改變也使解密出的明文變化很大;②無法從密文看出明文的規律;③明文的任意改動會使後續密文都改變,同樣密文的任意改動會使後續解密出的明文全部改變。安全性得以提高。

缺點:由於每次加密都需要前一個密文參與,所以無法並行加密,只能串行加密,加密速度受到限制。

CFB模式

Cipher feedback,密文反饋模式。CFB模式與前3種模式都不同,CFB模式不直接加密明文,而是將前一個密文使用祕鑰Key再加密後,與明文異或,得到密文。同樣,第一個密文需要初始向量IV加密得到。

CFB模式加密過程如下圖所示。

CFB模式加密過程

加密過程具體如下:

  1. 將移位寄存器初始化爲IV,假設移位寄存器長度爲len比特;
  2. 移位寄存器經加密器和祕鑰加密得到Ki(i=1,2,3....);
  3. 明文長度爲m(m≤len)比特,與K1的高m比特異或,得到m比特密文;
  4. 將移位寄存器左移m位,將剛剛得到的m比特密文填充到移位寄存器的低m位;
  5. 重複步驟2-4,直到所有明文被加密完成。

由於CFB模式是對密文進行加密,故解密時,同樣使用加密器進行解密。CFB模式解密過程如下圖所示,注意與加密過程箭頭指向不同。

CFB模式解密過程

解密過程具體如下:

  1. 將移位寄存器初始化爲IV,假設移位寄存器長度爲len比特;
  2. 移位寄存器經加密器和祕鑰加密得到Ki(i=1,2,3....);
  3. 密文長度爲m(m≤len)比特,與K1的高m比特異或,得到m比特明文;
  4. 將移位寄存器左移m位,將前一個m比特密文填充到移位寄存器的低m位;
  5. 重複步驟2-4,直到所有密文被解密。

觀察解密步驟,可以發現與CB解密步驟類似,直到兩個相鄰的密文就可以解密出後一個明文,所以解密過程可以並行。

CFB將塊加密變成自同步流密碼模式(關於流密碼可參考文章最開始部分)。在CFB模式中,明文數據可以是任意比特長度m,相應得到的密文也是m比特,因此明文不用分成固定比特的數據塊,整體明文也不用填充。CFB模式可以被逐比特加密,因此可以將CFB模式看作是一種使用分組密碼來實現流密碼的方式。

優點:①.隱藏了明文模式;②分組密碼轉化爲流模式;③可以及時加密傳送小於分組的數據;

缺點:①不利於並行計算;②誤差傳送:一個明文單元損壞影響多個單元;③唯一的IV;

OFB模式

Output feedback,輸出反饋模式。輸出反饋模式與密文反饋模式類似,只不過返回的是輸出。OFB模式同樣將塊加密轉換成流密碼模式。

OFB模式加密流程圖如下圖所示:

OFB模式加密過程

加密過程具體如下:

  1. 將移位寄存器初始化爲IV,假設移位寄存器長度爲len比特;
  2. 移位寄存器經加密器和祕鑰加密得到Ki(i=1,2,3....);
  3. 明文長度爲m(m≤len)比特,與K1的高m比特異或,得到m比特密文;
  4. 將移位寄存器左移m位,將剛剛得到的Ki的高m位填充到移位寄存器的低m位;
  5. 重複步驟2-4,直到所有明文被加密完成。

OFB模式解密時,同樣使用加密器進行解密。OFB模式解密過程如下圖所示,注意與加密過程箭頭指向不同。

OFB模式解密過程

解密過程具體如下:

  1. 將移位寄存器初始化爲IV,假設移位寄存器長度爲len比特;
  2. 移位寄存器經加密器和祕鑰加密得到Ki(i=1,2,3....);
  3. 密文長度爲m(m≤len)比特,與K1的高m比特異或,得到m比特明文;
  4. 將移位寄存器左移m位,將前一個Ki的高m位填充到移位寄存器的低m位;
  5. 重複步驟2-4,直到所有密文被解密。

優點:1.隱藏了明文模式;2.分組密碼轉化爲流模式;3.可以及時加密傳送小於分組的數據;

缺點:1.不利於並行計算;2.對明文的主動攻擊是可能的;3.誤差傳送:一個明文單元損壞影響多個單元;

CTR模式

Counter mode,計數器模式。CTR模式與OFB模式類似,它通過加密“計數器”的連續值來生成下一個密鑰流塊。計數器可以是任何保證長時間不會產生重複序列的函數。使用簡單的確定性輸入函數曾經是有爭議的;批評者認爲,“故意將密碼系統暴露在已知的系統輸入中是一種不必要的風險。”然而,目前CTR模式被廣泛接受,任何問題都被認爲是底層分組密碼的一個弱點,無論其輸入是否存在系統偏差,這種分組密碼都是安全的。

CTR模式具有類似於OFB的特性,但在解密期間也允許隨機訪問屬性。CTR模式非常適合在可以並行加密塊的多處理器機器上運行。此外,它不存在影響OFB的短週期問題。

CTR模式加密過程如下圖所示。其中Nonce和前文所述的初始向量IV一樣,由於密文需要Nonce和計數器Counter共同計算所得,故如果計數器出錯,則不能得到正確的密文。

CTR模式加密過程

CTR模式解密過程如下圖所示:

CTR模式解密過程

CTR 模式被廣泛用於 ATM 網絡安全和 IPSec應用中,相對於其它模式而言,CRT模式具有如下特點:

■ 硬件效率:允許同時處理多塊明文 / 密文。

■ 軟件效率:允許並行計算,可以很好地利用 CPU 流水等並行技術。

■ 預處理:算法和加密盒的輸出不依靠明文和密文的輸入,因此如果有足夠的保證安全的存儲器,加密算法將僅僅是一系列異或運算,這將極大地提高吞吐量。

■ 隨機訪問:第 i 塊密文的解密不依賴於第 i-1 塊密文,提供很高的隨機訪問能力。

■ 可證明的安全性:能夠證明 CTR 至少和其他模式一樣安全(CBC, CFB, OFB, ...)

■ 簡單性:與其它模式不同,CTR模式僅要求實現加密算法,但不要求實現解密算法。對於 AES 等加/解密本質上不同的算法來說,這種簡化是巨大的。

■ 無填充,可以高效地作爲流式加密使用。

參考文獻:

[1]https://blog.csdn.net/chengqiuming/article/details/82262417

[2]https://blog.csdn.net/sunqiujing/article/details/75065218

[3]https://www.cnblogs.com/gaozhang12345/p/5913771.html

[4]https://blog.csdn.net/jerry81333/article/details/78336616

[5]https://en.m.wikipedia.org/wiki/Block_cipher_mode_of_operation#CFB

[6]https://blog.csdn.net/includeiostream123/article/details/51066799

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章