微信公眾號:龍躍十二
持續更新,歡迎關注!
複製程式碼
用心分享,共同成長
沒有什麼比你每天進步一點點更實在了
本文已經收錄至我的GitHub,歡迎大家踴躍star?。 GitHub hello,小夥伴們!又到了一週一更的時候,不得不說,你們還是挺棒的嘛,上期的DES系列反饋非常好,其實對於這些複雜的知識,我們都是初次去接觸它,不要怕,抱緊我的小細腿,我們一起來!
上次給大家分享完DES的安全性以後,我一直在考慮出一篇探討關於分組密碼工作模式的文章,這不,說來就來,我們今天講講分組密碼的四種工作模式,快來讓你的知識再進階一下下( •̀ ω •́ )✧
經過前期的學習,我們都清楚分組密碼在加密時,明文分組的長度是固定的,但是在實際應用中,我們待加密訊息的資料量是無法確定的,而且資料格式可能是多種多樣的。所以為了推廣使用DES,美國就定義了 DES 的 4 種執行模式(至於為什麼是美國,你自己瞭解一下DES的歷史),我想用一個圖表的形式,給你展示的明明白白。模式 | 描述 | 使用途徑 |
---|---|---|
ECB(電碼本模式) | 用於每一個明文組獨立的用同一金鑰加密 | 傳送短資料 ( 如一個加密金鑰) |
CBC(密碼分組連結模式) | 當前明文組與前一密文組異或作為當前加密演算法的輸入 | 傳送資料分組;認證 |
CFB(密碼反饋模式) | 每次只處理輸入的 j 位元 , 將上一次的密文用作加 密演算法的輸入以產生偽隨機輸出 , 該輸出再與當前 明文異或以產生當前密文 | 傳送資料分組;認證 |
OFB(輸出反饋模式) | 與 CFB 類似 ,不同之處是本次加密演算法的輸入為前一次加密演算法的輸出 | 有擾通道傳送資料 |
其實看到這裡,是不是覺著CFB和OFB有點略微的難理解呢,不要著急,詳細的解釋馬上就來。
ECB(電碼本模式):
ECB可以說是分組密碼的四種工作模式中最好理解的一種啦,也是最簡單的一種執行模式,它一次對一個64bit的明文分組利用相同的金鑰進行加密,當金鑰取定時,對明文的每一個分組,都有一個惟一的密文與之對應。因此形象地說,可以認為有一個非常大的電碼本,對任意一個可能的明文分組,電碼本中都有一項對應於它的密文。
如果訊息長於64位元,則將其分為長為64位元的分組,最後一個分組如果不夠64bit,則需要對這個分組進行填充。解密過程也是一次對一個分組解密,而且每次解密都使用同一金鑰。 我們來具體看一下他的加密流程:
在圖中可以看到,p1、p2、......、pN分別是64bit的明文分組序列,而其在經過分組密碼加密以後的密文分別為:c1、c2、......、cN。
ECB既然如此簡單,那它就不可避免的存在很多問題。
- 容易暴露明文的資料模式,因此ECB容易遭受重放攻擊 ECB在用於短資料(如加密金鑰)時非常理想,既高效又安全,因此如果需要安全地傳遞DES金鑰,ECB最合適不過了。
CBC(密碼分組連結模式):
由於ECB在安全性上存在一些缺陷,為了處理好這個問題,可以讓重複的明文分組產生不同的密文分組,又設計出一種CBC模式,它可滿足這一要求。
它一次使用同一金鑰對一個明文分組加密,加密演算法的輸入是當前明文分組和前一次密文分組的異或,因此加密演算法的輸入不會顯示出與這次的明文分組之間的固定關係,所以重複的明文分組不會在密文中暴露出這種重複關係,而在解密時,每一個密文分組被解密後,再與前一個密文分組異或,由此來產生明文分組。
當然,CBC模式也存在很多缺點和不足,我們來具體看看。
-
當明文中的資訊發生微小的改變時,會導致利用此明文加密所得到的全部密文資訊出現誤差。
-
在解密時,從兩個鄰接的密文塊中即可得到一個平文塊。因此,解密過程可以被並行化。
-
在解密時,密文中一位的改變只會導致其對應的明文塊和下一個明文塊中對應位發生改變,不會影響到其它明文的內容。
CBC模式除了能夠獲得保密性以外,還能用於認證。
CFB(密碼反饋模式)
我們都知道DES是分組長為64bit的分組密碼,但利用CFB模式或OFB模式可將DES轉換為流密碼。因為流密碼不需要對訊息填充,而且執行是實時的。因此如果傳送字母流,可使用流密碼對每個字母直接加密並傳送。
流密碼的明文和密文長度是相同的,因此,如果需要傳送的每個字元長為16bit,就應使用16bit的金鑰來加密每個字元。如果金鑰長超過16bit,就會造成金鑰的浪費。
下圖是CFB模式示意圖,設傳送的每個單元(如一個字元)是jbit(一般情況下取j=8),與CBC模式一樣,明文單元被連結在一起,使得密文是前面所有明文的函式。
加解密的過程當然非常簡單,下來我們說說優缺點。-
明文的改變會影響接下來所有的密文,因此加密過程不能並行化,但是解密過程是可以並行化的
-
在解密時,密文中一位資料的改變僅會影響兩個明文塊:對應平文塊中的一位資料與下一塊中全部的資料,而之後的資料將恢復正常
-
CFB擁有一些CBC所不具備的特性,這些特性與OFB和CTR的流模式相似:只需要使用塊密碼進行加密操作,且訊息無需進行填充
CBC模式除了能夠獲得保密性以外,還能用於認證。
OFB(輸出反饋模式)
OFB模式與CFB模式都有異曲同工之妙,但是不同點在於,OFB是將加密演算法的輸出反饋到移位暫存器,而CFB是將密文直接反饋到移位暫存器。
OFB模式的優點:
- 在傳輸過程中,如果有某一bit的訊息被更改或者發生錯誤時,不會影響其最後輸出。
OFB模式的缺點:
- 相對於CFB,OFB模式增加了傳輸過程中某些訊息被篡改的可能。 OMG,這些知識真是令人頭大,不過不要緊,關注小馮童學和龍叔的公眾號【龍躍十二】,一樣帶你飛!
噔噔噔噔......下期說什麼呢,關注我你就知道了,不過小姐姐我有個想法,講公鑰演算法如何??
如果文章對你有幫助,點個贊可好?