資訊與網路安全技術 第 二章 傳統秘密鑰匙系統  上一頁      下一頁

 

2-9 DES 操作模式

內容:

  • 2-9-1 電子密碼書模式

  • 2-9-2 密文區塊串接模式

  • 2-9-3 J-位元密文反饋模式

  • 2-9-4 J-位元輸出反饋模式

區塊加密法是連續的將明文區塊一個接一個加密成密文區塊,如圖 2-5 所示。基本上,每一明文區塊各對應著一個密文區塊,如果沒有經過特殊處理的話,破解者可以比對明文與密文區塊配對,則可容易地找出加密鑰匙。為了增加密文破解的困難度,我們將連續產生的密文區塊之間做特殊處理,如此一來,破解者就無法找出明文與密文區塊配對,增加破解的困難度。如何增加密文之間混擾關係,DES 密碼系統提供下列四種操作模式:

      • 電子密碼書(Electronic Code Book, ECB)模式

      • 密文區段串接(Cipher Block Chaining, CBC)模式

      • j-位元密文反饋(j-bit Cipher Feedback, CFB)模式

      • j-位元輸出反饋(j-bit Output Feedback, OFB)模式

以下分別介紹這四種操作模式。

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與起始向量(IV64 bits)之間作 XOR 運算,然後再將運算後的結果導入加密器(或演算法)處理,而得到第一個區段的密文 C1;第二輪迴時(Time=2),將上一次的加密區塊(C164 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 CipherCFB 模式每次處理 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) 所示,值得注意的是,加密處理器只有一個,資料連續輸入也僅是重複使用同一處理器)

  • 步驟 1:第一回合為第一筆資料輸入加密器(或演算法),此時『起始向量』(IV64 bits)已被事先填入『移位暫存器』(Shift Register, SR64 bits)內。

  • 步驟 2:將移位暫存器的內容輸入到 DES 加密器內,以秘密鑰匙(K)來加密處理,DES 輸出同樣也是 64 bitsEK(SR))。接下來,擷取 DES 加密器輸出的最高 J 個位元(一般都取 8 個位元),與明文資料 Pmm = 1, 2, …, nJ 個位元)的每一相對位元之間作 XOR 運算處理,經運算後輸出便是明文資料(Pm)的密文(Cm, m= 1, 2, …, nJ 個位元);而 DES 加密輸出較低位元的部分(64 – J 個位元)便被捨棄掉了。

  • 步驟 3:當下一筆資料(Pm+1)再進入時,加密處理器也進入下一回合的處理。首先將移位暫存器的內容(原 IV 值)向左移位 J 個位元(8 個位元),捨棄較高位元部分,而移位時較低位元則由上一回合的輸出(CmJ 個位元)補上(此為密文反饋的意思);接下來回到步驟 2

  • 步驟 4:如果尚有資料進入,則再進入步驟 3 處理;否則便結束。

2-22 J-位元密文反饋的操作模式

在加密處理過程中,每一筆明文資料(PmJ 個位元)輸入後,緊接著輸出它的密文(CmJ 個位元),屬於一筆接一筆資料的流動方式。因此,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 FeedbackOFB模式與密文反饋(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-位元輸出反饋的操作模式

 

主講人:粘添壽博士

 

資訊與網路安全技術