密碼學 - 密碼分組連結 (CBC) 模式



密碼分組連結 (CBC) 模式是一種分組密碼,它將一系列位元作為一個整體或一個塊進行加密,並將密文或加密金鑰應用於整個密碼學塊。密碼分組連結使用特定字元長度的初始化向量 (IV)。其主要特徵之一是它使用連結,這是一種工作技術,使密文塊的解密依賴於其之前的每個塊。因此,緊接在密文之前的塊的密碼學具有其之前所有塊的所有有效性。

密文的一個塊中的單個位元密碼學錯誤會影響所有後續塊的解密。密文塊的順序可以更改,這會破壞解密過程。在密碼分組連結中,每個明文塊基本上是在與緊接其之前的密文塊進行異或 (參見 XOR) 後,使用密碼學進行加密的。

只有當使用相同的加密金鑰和初始化向量 (IV) 對相同的明文或原始文字塊進行加密,並且密文塊順序保持不變時,相同的密文塊才會產生預期的結果。由於 XOR 過程掩蓋了明文模式,因此它優於電子密碼本模式。

當使用相同的加密金鑰加密兩條通訊時,初始化向量 (IV) 應該有所不同。雖然某些應用程式可能發現它有用且唯一,但初始化向量不一定需要儲存或保密。

由於 ECB 損害了一些安全或隱私標準,因此密碼分組連結或 CBC 是 ECB 的改進或更復雜的版本。在與密碼學的初始明文塊進行異或後,CBC 中的前一個密文塊被髮送作為輸入到後續加密過程。簡單來說,前一個密文塊和當前明文或原始文字塊的 XOR 輸出被加密以建立密文塊。

過程如下所示:

Cipher Block Chaining (CBC) Mode

操作

上圖顯示了 CBC 模式的工作原理。步驟如下:

  • 頂部暫存器應載入 n 位初始化向量 (IV)。

  • 將頂部暫存器中的資料值與 n 位明文塊進行異或。

  • 使用金鑰 K 使用底層分組密碼加密 XOR 操作的輸出。

  • 繼續此過程,直到所有明文塊都透過將密文塊饋送到頂部暫存器進行處理。

  • 為了解密它,IV 資料與第一個解密的密文塊進行異或。為了解密下一個密文塊,前一個密文塊也被新增到替換 IV 的暫存器中。

CBC 模式的分析

在 CBC 模式下,前一個密文塊和當前明文塊被組合,然後使用金鑰對結果進行加密。然後,解密是相反的過程,其中在當前密文被解密後,將前一個密文塊新增到結果中。

CBC 相對於 ECB 的優點是,當 IV 更改時,相同的訊息可以使用不同的密文。不利的一面是,連結效應導致傳輸錯誤在解密期間傳播到一些後續塊。

需要注意的是,CBC 模式為眾所周知的原始資料身份驗證系統提供了基礎。因此,它有利於需要對稱加密和資料原始身份驗證的應用程式。

CBC 模式的位寬

下表顯示了 CBC 模式提供的介面的位寬:

明文 密文 密碼金鑰 IV
CBC-DES 64 64 64 64
CBC-AES128 128 128 128 128
CBC-AES192 128 128 192 128
CBC-AES256 128 128 128 128

密碼分組連結 (CBC) 模式是利用分組密碼演算法的常見分組密碼操作模式。在此版本中,它能夠處理高階加密標準 (AES) 和資料加密標準 (DES)。AES 的密碼金鑰長度應為 128/192/256 位,DES 的密碼金鑰長度應為 64 位。另一個缺點是,儘管現實世界中的文字具有各種長度,但我們的工作模式僅支援固定大小的單位(單個塊為 64 或 128 位)。因此,在加密或解密之前,需要將提供給此原語的最終文字塊填充到 128 位。

CBC 模式的公式

如果將其寫成公式,則此方法可以表示為:

Ci = EK(Bi ⊕ Ci-1)

其中 Ci-1 是對應於 Bi-1 的密碼,EK 是使用金鑰 K 的塊加密技術。

注意:在上面的公式中,假設 C0 是初始化向量。

同樣,CBC 可以透過使用以下方法進行解密:

Bi = DK(Ci)⊕(Ci-1)

其中 DK 代表使用金鑰 K 的塊解密技術。

對於解密,將使用相同的初始化向量 (C0)。

安全挑戰

此方案的主要屬性如下:

  • 如果傳遞的訊息的哪怕一個位元發生更改或丟失,則將損壞一個額外的特定塊。這種損害不會影響其他塊。

  • 如果密文中丟失或添加了一個位元,則位元和塊邊界將移動,從而導致所有後續密碼學密文塊的解碼不正確。

  • 該因素能夠將塊附加到解密訊息的末尾,從而使用原始文字或明文對其進行增強。

優點

密碼分組連結 (CBC) 模式具有以下幾個優點:

  • 當輸入資料的大小超過一個塊(通常對於 AES 來說是 128 位或 16 位元組)時,CBC 模式執行良好。任何長度的訊息都可以透過將其分割成塊並連線起來進行加密和解密。

  • 儘管 CBC 本身無法提供身份驗證,但它可以與數字簽名或 HMAC(基於雜湊的訊息身份驗證程式碼)結合使用,以確保加密資料的完整性和有效性。CBC 透過結合身份驗證和加密,可以提供完整的安全解決方案。

  • 在密碼分析方面,CBC 通常比 ECB(電子密碼本)模式更安全。當使用 CBC 時,攻擊者更難以識別加密資料中的模式,因為每個密文塊都依賴於其前面的塊。因此,CBC 在保護私有資料免受攻擊或解密嘗試方面更有效。

缺點

密碼塊連結 (CBC) 模式無法進行併發加密是其缺點之一。在 CBC 模式下,每個明文塊在加密前都會與前一個密文塊進行異或運算。這使得當前塊的加密依賴於前一個密文塊。由於每個塊的加密都依賴於前一個塊的加密完成,因此無法併發或並行加密後續塊。與可以同時對多個塊進行併發加密的模式(如電子密碼本 (ECB) 或計數器 (CTR) 模式)相比,CBC 模式中加密的順序性會導致加密效能下降。但是,由於其安全優勢和對各種加密場景的相容性,CBC 模式儘管存在此限制,但仍然被廣泛使用。

廣告