2-9 DES 操作模式
區塊加密法是連續的將明文區塊一個接一個加密成密文區塊,如圖 2-5 所示。基本上,每一明文區塊各對應著一個密文區塊,如果沒有經過特殊處理的話,破解者可以比對明文與密文區塊配對,則可容易地找出加密鑰匙。為了增加密文破解的困難度,我們將連續產生的密文區塊之間做特殊處理,如此一來,破解者就無法找出明文與密文區塊配對,增加破解的困難度。如何增加密文之間混擾關係,DES 密碼系統提供下列四種操作模式:
以下分別介紹這四種操作模式。 2-9-1電子密碼書模式 『電子密碼書』(Electronic Code Book)是區塊加密演算法,最基本操作模式。它的做法是將每一明文區塊都對應著一個密文區塊,密文區塊之間沒有經過特殊處理,如圖 2-20 所示。圖 2-20 (a) 中輸入的訊息(Message, M)也許是不定長度的,首先將補足成 64位元區塊的整數倍(明文,P),再分別進入 DES 加密器(或演算法)處理;每一區塊(PK, k =1, 2, .., N)加密後也成為 64 個位元的密文區塊(CK, k =1, 2, .., N)。解密的操作方式(圖 2-20 (b))也如同加密一樣,一個區塊接著一個區塊進入 DES 加密器(或演算法)處理,再將各個區塊組合回原明文格式,接著將補足的位元刪除掉即可。可下列式子來表示:(鑰匙 K)
明文:P = P1 || P2 || P3, …, || PN 密文:C = EK(P) = EK (P1) || EK (P2) || EK (P3) ||, …, || EK (PN)
密文:C = C1 || C2 || C3, …, || CN 明文:P = EK(C) = EK (C1) || EK (C2) || EK (C3) ||, …, || EK (CN)
圖 2-20 電子密碼書的操作模式 電子密碼書模式只適合用在較少量的資料加密,譬如,只傳送一把秘密鑰匙給對方,則利用此模式即可。如果對於大量資料的傳輸,ECB 模式便不大適合,它的特點是明文和密文之間都是 64 個位元的區段對照。破解者只要用『明文攻擊』,發送給加密者明文,而得到相對應的密文,再將明文與密文區分各個區段來比對,如果資料過多的話,便非常容易找出它的秘密鑰匙。 2-9-2密文區塊串接模式 ECB 模式最大缺點是可以比對出明文與密文區塊之間的關係,藉此找出加密鑰匙,『密文區塊串接』(Cipher Block Chaining, CBC)模式就是為了彌補這個缺憾而設計的。除此之外,CBC 為了增加破解的難度,於是加入『起始向量』(Initialization Vector, IV)的措施。CBC 的每一區段同樣是 64 個位元,但相同的明文區段並不會產生同樣的密文區段,操作方式如圖 2-21 (a) 與 (b) 所示。在第一輪迴時(Time = 1),P1與起始向量(IV,64 bits)之間作 XOR 運算,然後再將運算後的結果導入加密器(或演算法)處理,而得到第一個區段的密文 C1;第二輪迴時(Time=2),將上一次的加密區塊(C1,64 bits)與本次的明文區塊做 XOR 運算,然後再將其結果導入加密器作處理,而得到本次輪迴的密文區塊 C2;依此類推,先將上一次的密文與本次的明文區塊做 XOR 運作後,再進入加密器編碼,如此便稱為『密文區段串接』。每一密文區段的輸出除了與本身明文有關之外,又加上一次的密文來產生本次的密文區段,因此無法比對出每一區段明文與密文之間的關係。解密的處理程序(如圖 2-21 (b) 所示),只要將加密的運作程序轉換過來即可,我們將 CBC 模式的處理方式以下列方程式表示: 加密運算程序: C1 = EK(IV ♁ P1) Ci = EK(Ci-1♁ Pi); i = 2, 3, 4, …N C = C1 || C2 || C3|| …|| CN 解密運算程序: P1 = DK(C1) ⊕ IV Pi = DK(Ci) ⊕ Ci-1; i = 2, 3, 4, …N P = P1 || P2 || P3, …, PN 驗證: DK(Ci) = DK( EK(Ci-1♁ Pi)); i = 2, 3, 4, …N = (Ci-1♁ Pi) 所以DK(Ci) ⊕ Ci-1 = (Ci-1♁ Pi) ♁ Ci-1 = Pi 得證之。
圖 2-21 密文區段串接的操作模式 『起始向量』(IV)是一個很重要的參數,如果雙方連續使用同一把秘密鑰匙,則會增加該鑰匙的曝光率,被破解的機會也相對增加。此外,每次通訊之前,雙方先協議出不同的 IV 數值,也可增加秘密鑰匙被破解的困難度。一般情況,雙方協議 IV 值時,並不需要加密處理,只要用明文傳送即可,破解者雖然知道 IV 內容,但不知道秘密鑰匙(K),依然無法破解,甭說每次傳送的IV 值都不一樣。 很顯然的,CBC 模式比 ECB 模式增強了許多安全性,尤其在大量資料傳輸時,就不用害怕入侵者用密文比對的方法找出秘密鑰匙。另一個重要的安全性是加入了『起始向量』,可增強秘密鑰匙使用的期限。尤其在多人共享秘密鑰匙時,每一對的每次通訊都採用不同 IV 值,也可增加共享鑰匙的隱密性。譬如,IEEE 802.11 標準便採用此加密方式,來讓多人以共享鑰匙登入系統。另一個重要的應用,就是將 IV 改成『訊息摘要』,以達成『確認性』功能。因此,『密文區段串接』(CBC)是目前使用最普遍的操作模式,許多鑰匙交換協定都採用這種方法。 2-9-3 J-位元密文反饋模式 前面兩種操作模式(ECB 與 CBC)都是屬於區塊加密(Block Cipher)方式,每次輸入加密器(或 DES 演算法)的資料都是以 64 個位元為單位,若輸入訊息不足,則必須將原來訊息補足為 64 位元的倍數。但有許多應用系統並不適合區塊加密方式,而是希望每次以少量,並且是連續性的加密。最明顯的應用是交談式的連線,雙方每次以交談式傳送少量資料給對方,同時希望對方能即時(Real-time)回應。『J-位元密文反饋』(J-bits Cipher Feedback, CFB)模式就是將 DES 區塊(64 個位元區塊)加密的方式,轉換成『串流加密』(Stream Cipher)。CFB 模式每次處理 J 個位元的加密,加密後的密文也是 J 個位元,並將加密的結果串接到下一回合的加密輸入,一般應用上都是採用 8 個位元(J = 8)的加密,這是因為一般資料的編碼都是以 8 個位元方式(如 ASCII 碼)。但為了不去修改原來 DES 編碼演算法,加密與解密的運算還是以 64 個位元為單位。 圖 2-22 為 J-位元密文反饋的運作程序,首先將訊息以每 J 個位元為單位(Pm, m = 1, 2, …, N),一個單位接一個單位連續著進入加密器內處理,每一單位的密文也是 J 個位元(Cm, m = 1, 2, …, N),並以串流方式輸出,且前一回合的密文輸出被導入到下一回合的演算法輸入。CFB 模式的加密程序為:(如圖 2-22 (a) 所示,值得注意的是,加密處理器只有一個,資料連續輸入也僅是重複使用同一處理器)
圖 2-22 J-位元密文反饋的操作模式 在加密處理過程中,每一筆明文資料(Pm,J 個位元)輸入後,緊接著輸出它的密文(Cm,J 個位元),屬於一筆接一筆資料的流動方式。因此,CFB 是串流加密(Stream Cipher)法,適合於即時性的傳輸應用。解密的處理程序(如圖 2-22 (b))也如同加密一樣,不再贅敘。依照圖 2-22 的運算程序,密文與明文的運算結果為:(Sj表示向左移位 J 個位元、Fj表示選擇較高 J 個位元、Pm與 Cm皆為 J 個位元、SR 為移位暫存器、”||” 排列的意思) 加密運算程序: SR1 = IV C1 = Fj (EK(SR1)) ⊕ P1 SRm = Sj (SRm-1) || Cm-1; m = 2, 3, 4, …, N Cm = Fj (EK(SRm)) ⊕ Pm ; m = 2, 3, 4, …, N C = C1 || C2 || C3, …, CN 解密運算程序: SR1 = IV P1 = Fj (DK(SR1)) ⊕ C1 SRm = Sj (SRm-1) || Cm-1; m = 2, 3, 4, …, N Pm = Fj (DK(SRm)) ⊕ Cm ; m = 2, 3, 4, …, N P = P1 || P2 || P3, …, PN 2-9-4 J-位元輸出反饋模式 『J-位元輸出反饋』(J-bits Output Feedback,OFB)模式與密文反饋(CFB)很相似,唯一不同的是,CFB 模式係反饋加密後的密文,而 OFB 模式是反饋 DES 加密處理後的較高 J 個位元,如圖 2-23 所示。基本上,OFB 與 CFB 模式都是屬於串流加密方式,也適用於即時性的交談式連線,譬如,安全性的 Telnet 連線。但 CFB 模式的密文是經由明文與 DES 加密輸出之間做 XOR 運算後的結果,這裡有一個先天性的缺點,就是如果上一筆資料發生錯誤將導致爾後密文產生連續性的錯誤。交談式連線有一個特點是,連線的時間較長,而每次傳輸的資料較短,因此,在長時間的通訊下,並不能保證傳輸中的資料不會發生錯誤;如果採用 CFB 操作方式,只要有一筆資料發生錯誤,就可能會導致通訊連線中斷。 因此,OFB 模式就是針對 CFB 這方面的缺點來改善,OFB 模式的反饋數值與輸入資料無關,如此可避開錯誤資料的連鎖反應。但因為 OFB 模式的密文與明文之間對應關係,比較容易遭受明文攻擊(如電子密碼書模式),這是它主要的缺點。至於 OFB 模式的運作方式(圖 2-23 (a) 與 (b)),如同 CFB 模式一樣,亦不再另述。我們將加密與解密的運算程序歸類如下:(Sj表示移位 J 個位元、Fj表示選擇較高 J 個位元、Pm與 Cm皆為 J 個位元、SR 為移位暫存器、”||” 排列的意思),加密運算程序: SR1 = IV O1 = Fj (EK(SR1)) C1 = P1⊕ O1 SRm = Sj (SRm-1) || Om-1; m = 2, 3, 4, …, N Om = Fj (EK(SRm)) ; m = 2, 3, 4, …, N Cm = Om⊕ Pm ; m = 2, 3, 4, …, N C = C1 || C2 || C3, …, CN 解密運算程序: SR1 = IV O1 = Fj (DK(SR1)) P1 = O1⊕ C1 SRm = Sj (SRm-1) || Om-1; m = 2, 3, 4, …, N Om = Fj (DK(SRm)) ; m = 2, 3, 4, …, N Pm = Om⊕ Cm ; m = 2, 3, 4, …, N P = P1 || P2 || P3, …, PN
圖 2-23 J-位元輸出反饋的操作模式
|
翻轉工作室:粘添壽
資訊與網路安全技術
翻轉電子書系列:
|