密碼學之分組密碼操作模式

1 什麼是分組密碼操作模式

通常,分組密碼算法(如典型的DES)是提供數據安全的一個基本構件,它以固定長度的分組作爲基本的處理單位。分組密碼的操作模式就是如何在各種各樣的應用中使用這些基本構件。

2 常見的幾種分組密碼操作模式

常見的分組密碼操作模式有:電子密碼本模式(ECB)、密碼分組鏈接模式(CBC)、計數器模式(CTR)、輸出反饋模式(OFB)、密碼反饋模式(CFB)。下面我將對這幾種模式分別做介紹。

2.1 電子密碼本模式(ECB)

電子密碼本模式是最簡單的方式,在這種模式下明文被每次處理64位,並且每個明文分組都用同一個密鑰加密。由於每個64位的明文有一個唯一的密文,可以想象有一個巨大的密碼本,其中對每一個可能對64位明文分組都有一個密文項與之對應。故稱爲“密碼本”模式。整個加密過程就是把這個報文分成若干個64位的分組,如果有必要的話對最後一個分組進行填充,以保證其作爲一個處理單元的64位分組大小。加密每次處理一個分組,每次總用同一個密鑰。
(加密)Cj = Ek(Pj) ,(j=1,2, …,N)
(解密)Pj = Dk(Cj),(j=1,2, …,N)
特點:
①模式操作簡單,不同的分組可以進行並行處理;
②明文中的重複內容將在密文中表現出來,特別對於圖像數據和明文變化較少的數據。弱點源於對每個明文分組是分離處理的;
③不具有錯誤傳播特性,即如果一個分組中出現傳輸錯誤不會影響其他分組; ④主要用於內容較短(不超過一個分組)的報文的加密處理。

2.2 密碼分組鏈接模式(CBC)

在密碼分組連接模式下,加密函數的輸入是當前明文分組和前一個密文分組的異或;每個明文分組使用相同的密鑰。每個明文分組的加密函數的輸入與明文分組之間不再有固定的關係,不會再出現同一段報文中相同明文得到相同的密文。
(加密) C1 = Ek(P1⊕IV) (IV爲初始向量),Cj = (Pj⊕cj-1) , (j=2, …,N)
(解密) P1 = Dk(C1)⊕IV (IV位初始向量) ,Pj = Dk(Cj)⊕Cj-1 ,(j=2, …,N)
特點:
①同一個消息中的兩個相同的明文被加密成不同的密文;
②不通消息的前若干個分組相同,且加密時使用相同的IV,這些分組的加密結果將一致,這是以時間戳作爲IV較好;
③如果密文分組Cj有一位傳輸錯誤,解密是可能導致對應明文分組Pj中多位出錯,但密文分組中的這一位出錯只會導致明文分組Pj+1中對應位置的一位出錯,其後的明文分組不再受影響,因此,密文分組中的一位出錯具有自恢復能力;
④CBC模式可以用於加密和認證,用於加密時不能並行處理,也不能用於加密或解密可以隨機訪問的文件記錄(因爲CBC模式需要訪問以前的記錄)

2.3 計數器模式(CTR)

在計數器模式下,使用與明文分組相同的計數器長度,但要求加密不同的分組所用的計數器值必須不同。計數器值經過加密函數變換的結果再與明文分組異或,從而得到密文。解密是使用相同的計數器值序列,用加密函數變換後的計數器值與密文分組異或,從而恢復明文。
(加密) Cj = Pj⊕Ek(CTR+j) ,(j=1,2,…,N)
(解密) Pj = Cj⊕Ek(CTR+j),(j=1,2,…,N)
特點:
①處理效率。CTR模式能夠對多塊報文的加密和解密進行並行處理,使得吞吐量大大的提高,提高了處理效率;
②預處理。在CTR模式中,進行異或之前的基本加密處理部分並不依賴於明文或密文的輸入,因此可以提前進行預處理,極大地提高了吞吐量;
③隨機訪問特性。可以隨機的對任意一個密文分組進行解密處理,對該密文分組的處理與其他密文無關;
④實現的簡單性。CTR模式只要求實現加密函數,不涉及解密函數,即CTR模式的加密和解密階段都使用相同的基本加密函數,從而體現出其簡單性。

2.4 輸出反饋模式(OFB)

在輸出反饋模式下,加密函數的輸入是64位的移位寄存器SR,對第一個分組的處理需要使用初始向量IV,每處理完一個分組,移位寄存器就左移j位,加密函數64位輸出的高j位被反饋回64位的移位寄存器的低j位,剩下的64-j位被丟棄。這種模式主要用於面向字符的流密碼加密傳輸。
(加密) C1 = P1⊕Sj[Ek(IV)] ,Ci = Pi⊕Sj[Ek(SRj||Sji-1)] ,(i=2,…,N)
(解密) P1 = C1⊕Sj[Ek(IV)] ,Pi = Ci⊕Si[Ek(SRj||Sji-1)] ,(i=2,…,N)
特點:
①發送方(加密)和接收方(解密)都只使用所選定密碼算法的加密函數;
②沒有錯誤傳輸,如果傳輸中出現錯誤,不會影響其後各位;
③OFB是一種同步流密碼,與明文異或前的密碼流獨立於明文和密文;
④密文中的一位傳輸錯誤隻影響明文中的相應位。

2.5 密碼反饋模式(CFB)

與輸出反饋模式結構上類似,j位密碼反饋將j位的密文用於反饋輸入,即前一個密文分組(j位)被填充入64位移位寄存器的低j位,組成當前分組加密函數的輸入參數之一。在CFB模式中密文單元被反饋回移位寄存器,所以,傳輸中出現的錯誤將會傳播引起後續所有消息的損壞。任何明文單元對應的密文都是前面明文的一個函數。
在j位CFB模式中,加密函數的輸入是一個64位的移位寄存器,這個移位寄存器被初始化爲一個初始向量IV,加密函數處理結果的最左邊(最高位)的j位與明文的第一個分組P1進行異或產生密文C1,然後這個密文單元被傳輸出去。同時,這個移位寄存器的內容被左移j位,而C1則被放進移位寄存器的最右邊(最低位)j位中。重複這個過程,直到所有的明文單元都完成加密。
(加密) C1 = P1⊕Sj[Ek(IV)] ,Ci = Pi⊕Sj[Ek(SRj||Ci-1)],(i=2,…,N)
(解密) P1 = C1⊕Sj[Ek(IV)] ,Pi = Ci⊕Si[Ek(SRj||Ci-1)],(i=2,…,N)
特點:
①加密和解密時只是用所選定分組加密方法(DES、AES)中的加密函數;
②可用於加密較小的分組,不需要進行填充;
③效率相對較低;
④CFB實際上是一個非同步的流加密模式,與其明文疑惑前的密鑰流取決於加密密鑰和前一個密文分組;
⑤可以用同一個密鑰加密多個消息,但每一個消息的初始向量IV應不同;
⑥如果密文分組Cj有一位傳輸錯誤,解密時將導致對應明文分組Pj相同位置的一位出錯,但只要Cj中的各位沒有全部移出寄存器,後續明文分組中大多數位有50%的出錯概率,只有當移位寄存器全部刷新後,系統纔會從錯誤鎮恢復。

總結

本博文參考《密碼學》課本,僅用與學習參考。

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