分組加密算法的幾種工作模式


1. 分組加密算法

1.1 國密算法

國密算法,即國家商用密碼算法,如SM系列的密碼,常用的國密密碼有:

密碼分類 國產商用密碼 國際商用密碼
對稱加密 分組加密(塊加密) SM1/SCB2 SM4/SMS4 SM7 DES IDEA AES RC5 RC6
序列加密(流加密) ZUC(祖沖之算法) SSF46 RC4
非對稱/公鑰加密 大數分解 - RSA DSA ECDSA Rabin
離散對數 SM2 SM9 DH DSA ECC ECDH
密碼雜湊(散列) SM3 MD5 SHA-1 SHA-2
  • SM1算法的加密強度與AES相當,但算法未公開,僅以IP核的形式存在於芯片中,調用該算法時,需要通過加密芯片的接口進行調用。

  • SM4算法,是無線局域網標准的分組數據算法,其加密流程介紹請閱讀:SM4分組密碼算法

  • SM7算法未公開,適用於非接IC卡應用包括身份識別類應用(門禁卡、工作證、參賽證),票務類應用(大型賽事門票、展會門票),支付與通卡類應用(積分消費卡、校園一卡通、企業一卡通、公交一卡通)。


1.2 分組加密

分組加密(塊加密)— Block Cyper:將明文分組成塊,一次加密一個明文分組塊。

從國密算法中可以知道,分組加密是對128比特的明文輸入和128比特的加密密鑰進行處理,生成128比特的密文輸出,即分組加密算法只能加密固定長度的明文分組塊

但實際情況往往是明文的長度會遠超過密碼分組的長度,因此需要對分組加密算法進行迭代,才能將明文全部加密,采用的迭代方法就是分組加密算法的加密工作模式。


2. ECB模式

ECB模式:Electronic CodeBook mode,電子密碼本模式

ECB模式是將明文分成固定長度的組塊,然后對每個明文分組塊使用相同的密鑰進行獨立加密或解密,且該加密的結果將直接作為密文分組。
ECB模式是最簡單的分組加密算法的一種工作模式。


ECB模式的工作原理

當最后一個明文分組的內容小於分組長度時,需要用一些特定的數據行進填充。

ECB模式的結構圖

ECB模式的優點

  • 簡單、快速,利於並行計算(加解密)
  • 單一密文損壞的話,不會影響到其他塊的解密,即誤差不會被傳送

ECB模式的缺點

  • ECB模式中明文分組與密文分組是一一對應的關系,因此相同的明文分組經過加密后都將轉換成相同的密文分組
  • 這樣通過觀察密文的情況就可知道明文的重復組合情況,並可依此進行破譯,即不能隱藏明文
  • 無需破譯密碼,僅通過密文可以操縱明文(進行刪除、替換)
  • 不能抵御重放攻擊,可能對明文進行主動攻擊

ECB模式是存在一定風險的!

由上述介紹可知,ECB模式只進行了分組和加密操作,且相同的明文分組加密后會得到相同的密文分組,於是需要設計讓相同的明文分組和相同的密鑰加密后得到不同的密文分組。基於此思想,在明文分組和密鑰加密運算中加入一個干擾項,因此,引入以下工作模式。

3. CBC模式

CBC模式:Cipher Block Chaining mode,密文分組鏈接模式

CBC模式是先將明文分成若干個組塊,然后每個明文分組與前一密文分組進行異或 \(XOR\) 運算,然后再進行加密。因此,每個密文分組都依賴於它前面的所有明文分組

由於密文分組像鏈條一樣相互連接在一起,因此稱為密文分組鏈接模式。

從加密過程可知,第 \(0\) 塊明文分組沒有上一塊密文分組來進行異或,於是引入一個初始化向量 \(IV(Initialization\ Vector)\) 來充當第一個干擾項,保證每條消息的唯一性。


CBC模式的工作原理

加密過程:

  1. 無法單獨對一個中間的明文分組進行加密
  2. 明文的微小改變會導致其后全部密文分組發生改變

解密過程:

若密文分組中有一個分組損壞了

Case 1:該損壞的密文分組的長度沒有改變,只有內容發生改變
解密時最多只有2個分組受到數據損壞的影響。

Case 2:該損壞的密文分組的長度發生改變(缺失或增添)
一旦密文分組中缺失或增添一些比特,則會導致密文分組的長度發生改變,之后的分組也會發生錯位,將密文分組排列后進行解密,則會影響損壞的密文分組及后續所有的解密過程。

CBC模式的結構圖

CBC模式的優點

  • 每個密文分組均依賴於所有的信息塊,不容易主動攻擊,安全性優於ECB模式
  • 適合傳輸長度長的報文,互聯網安全的通信協議之一的SSL、IPSec就是采用CBC模式確保通信機密性的

CBC模式的缺點

  • 發送方和接收方均需要知道初始化向量 \(IV\)
  • 加密過程是串行的,無法被並行化(解密過程可以從兩個相鄰的密文分組中即可解密得到一個明文分組,即解密過程可以被並行化),且同樣不能抵御重放攻擊

4. CFB模式

CFB模式:Cipher FeedBack mode,密文反饋模式

CFB模式中密碼算法的輸入是前一個密文分組,再將該密文分組送到密碼算法的輸入端產生自同步的密鑰流。其解密過程幾乎就是顛倒的CBC的加密過程。

由於是將密文分組反饋到密碼算法中,因此稱為密文反饋模式。


CFB模式的工作原理

加密過程:

  1. 將前一個密文分組(或初始化向量 \(IV\))進行再加密;
  2. 將明文分組和上一步處理得到的再加密的密文分組進行異或。

需要使用一個與塊的大小相同的移位寄存器,並用IV將寄存器初始化。然后,將寄存器內容使用塊密碼加密,然后將結果的最高x位與平文的x進行異或,以產生密文的x位。下一步將生成的x位密文移入寄存器中,並對下面的x位平文重復這一過程。解密過程與加密過程相似,以IV開始,對寄存器加密,將結果的高x與密文異或,產生x位平文,再將密文的下面x位移入寄存器。
與CBC相似,平文的改變會影響接下來所有的密文,因此加密過程不能並行化;而同樣的,與CBC類似,解密過程是可以並行化的。
摘自分組加密的四種模式(ECB、CBC、CFB、OFB)

解密過程:

CFB模式的解密過程幾乎就是顛倒的CBC模式的加密過程。

CFB模式的結構圖

CFB模式的優點

  • 隱藏了明文模式
  • 分組密碼轉化為流模式
  • 可以即時加密傳送小於分組的數據
  • 加密流程和解密流程中被加密的數據是前一段密文分組,因此即使明文數據的長度不是密鑰的整數倍也是不需要填充的,這保證了數據長度在加密前后是相同的
  • 與CBC模式類似,解密過程是可以並行化的
  • 解密過程使用的是加密器

CFB模式的缺點

  • CFB模式中是對密文分組進行反饋,因此必須從第一個明文分組開始按順序進行加密,即加密過程無法並行化
  • 與CBC模式相似,明文的改變會影響接下來的所有密文
  • 誤差傳送:一個明文單元損壞會影響多個單元

5. OFB模式

OFB模式:Output FeedBack mode,輸出反饋模式

由於是將密碼算法的輸出反饋給密碼算法中,因此稱為輸出反饋模式。


OFB模式的工作原理

加密過程:

  1. 加密先將初始化向量 \(IV\) 用密鑰加密生成密鑰流
  2. 再將密鑰流與明文流異或得到密文流

解密過程:

  1. 解密先將初始化向量 \(IV\) 用密鑰加密生成密鑰流
  2. 再將密鑰流與密文流異或得到明文流 (加密和解密的流程是完全一樣的)

OFB模式的結構圖

OFB模式的優點

  • 無需進行填充(因為是流密碼),可以抵御重放攻擊
  • 可事先生成密鑰流,和明文分組無關,即只要事先通過密碼算法生成密鑰流,后續只需要將明文/密文與密鑰流進行異或即可快速完成加密/解密(異或運算很快)
  • 上述即可認為:生成密鑰流的操作和進行異或運算的操作是可以並行的
  • 加解密結構相同,解密過程使用的是加密器

輸出反饋模式(Output feedback, OFB)可以將塊密碼變成同步的流密碼。它產生密鑰流的塊,然后將其與平文塊進行異或,得到密文。與其它流密碼一樣,密文中一個位的翻轉會使平文中同樣位置的位也產生翻轉。這種特性使得許多錯誤校正碼,例如奇偶校驗位,即使在加密前計算而在加密后進行校驗也可以得出正確結果。
摘自分組加密的四種模式(ECB、CBC、CFB、OFB)

OFB模式的缺點

  • 但如果對密鑰流的一個分組加密后,如果其結果和加密前一份組相同,之后的密鑰流將變成同一值的不斷反復
  • 加解密都依賴於前一段的數據,故加解密都不能並行

6. CTR模式

CTR模式:CounTeR mode,計數器模式

CTR模式與CFB模式和OFB模式一樣,把分組密碼轉化為序列密碼(流密碼)。在本質上是通過將逐次累加的計數器采用分組密碼加密產生密鑰序列,按序列密碼的方式進行加解密。最終的密文分組是通過將計數器加密得到的比特序列與明文分組進行異或 \(XOR\) 而得到的。

CTR模式的工作原理

CTR模式的結構圖

CTR模式的優點

  • CTR模式與OFB模式一樣,無需填充,可抵御重放攻擊
  • CTR模式的特征類似於OFB模式,但它允許在解密時進行隨機存取
  • CTR模式的單一密文損壞並不會影響到其他塊的解密,且支持並行運算(加解密),不會有密鑰流重復循環出現的情況
  • 由於加密和解密過程均可以進行並行處理,CTR適合運用於多處理器的硬件上
  • 解密過程使用的是加密器

CTR模式的優點是可並行、效率高、Oi的計算可預處理、適合任意長度的數據、加解密速度快,而且在加解密處理方式上適合隨機存取數據的加解密。因此,特別適合計算機隨機文件的加密,因為隨機文件要求能隨機地訪問。這對數據庫加密是有重要意義的。

CTR模式的缺點

  • 需要提供初始計數器值
  • 沒有錯誤傳播,因此不適合用於數據完整性認證

7. 小結

ECB模式將明文分組直接單獨進行加密得到密文分組。 \(\rightarrow\) 直接加密明文分組

CBC模式將明文分組先與前一個密文分組(或$ IV$)異或再加密得到密文分組。 \(\rightarrow\) 對明文分組與前一個明文分組的異或結果加密

CFB模式將前一個密文(或 \(IV\))進行加密后再與明文異或得到密文。 \(\rightarrow\) 先加密前一個密文再與明文異或

OFB模式將 \(IV\) 進行加密得到密鑰流,再將該密鑰流與明文異或得到密文。 \(\rightarrow\) 先生成密鑰流再與明文異或

CTR模式將計數器加密后再與明文分組異或得到密文分組。

其中,CFB、OFB、CTR三種模式屬於流密碼。




參考:
CBC模式解讀
OFB模式解讀
技術分享丨這是一篇簡單的小科普——什么是對稱加密算法?(下)
分組加密, 算法模式(ECB CBC CFB OFB)
可不可以通俗的解釋一下加密相關系統中的iv(初始化向量)?
分組加密的四種模式(ECB、CBC、CFB、OFB)
CTR(Counter Mode Encryption)模式-信息安全工程師知識點


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM