密碼學 - Blowfish 演算法



Blowfish 加密是一種對稱金鑰分組密碼,常用於密碼雜湊、VPN 和檔案加密。自 1993 年推出以來,由於其高效的加密和解密操作,這種加密方法獲得了普及。但是,最近出現更安全、更先進的演算法,例如 AES,正在逐漸取代 Blowfish。

Blowfish 是一種 64 位分組密碼,使用對稱加密和金鑰長度最長可達 448 位。它由 Bruce Schneier 於 1993 年建立,旨在取代過時的 DES(資料加密標準)和 IDEA(國際資料加密演算法)加密方法。

雖然其普及度最近有所下降,但 Blowfish 以其易用性和效率而聞名。它正在被更新、更強大的加密方法(如高階加密標準 (AES))所取代。

Blowfish 的特點

Blowfish 演算法的一些主要特點如下:

  • 分組密碼 - Blowfish 使用對稱金鑰的分組密碼技術加密資料,產生 64 位的分組加密。
  • 對稱金鑰演算法 - Blowfish 使用相同的對稱加密金鑰對資料進行加密和解密。
  • 不同的金鑰長度 - Blowfish 提供從 32 位到 448 位不等的金鑰長度。金鑰越長,資料越安全。但是,處理更長的金鑰通常需要更多資源和時間。
  • Feistel 密碼 - Feistel 密碼結構將明文分成兩半,並使用一系列數學運算獨立地對每一半進行混淆。

Blowfish 的工作原理

Blowfish 使用 SP 網路;必須先初始化替換盒 (S-box) 和置換盒 (P-box)。有四個 32 位 S-盒,每個有 256 個條目,以及八個 32 位子金鑰的 P 陣列。

Blowfish Algorithm
  • 步驟 1 - 首先,我們將 64 位明文分成兩個相等的塊 L 和 R,每個包含 32 位。
  • 步驟 2 - 我們在接下來的步驟中開始的 16 個加密迴圈中的每一個都執行以下操作:
    • 現在,將 L 與 P 陣列的第一個成員 (P1) 進行異或運算。
    • 然後將 R 與 F 進行異或運算,其中 F 是 L 的函式,並使用構成 S-盒的四個塊。以下是 F 函式的完整總結。
    • L 和 R 交換後,迴圈的下一個迭代開始。
  • 步驟 3 - 迴圈完成後,再次交換 L 和 R。
  • 步驟 4 - 將 R 與 P17 進行異或運算,將 L 與 P18 進行異或運算,以獲得最終兩個未使用的 P-盒條目 (P17 & P18)。
  • 步驟 5:最後一步將 L 和 R 組合起來得到密文。

Blowfish 加密

Blowfish 是一種對稱金鑰分組密碼,它使用相同的金鑰對資料進行加密和解密。Blowfish 速度快、效率高,主要是因為它比其他密碼方法更簡單。雖然在達到最高級別的資料安全方面存在一些可能的風險,但這些風險不容忽視。

以下是 Blowfish 加密技術的詳細描述:

  • 金鑰擴充套件 - Blowfish 使用的初始元件是秘密金鑰,其長度可以在 32 位到 448 位之間。然後使用 P 陣列和 S-盒預計算生成並擴充套件加密金鑰以生成多個子金鑰。
  • 子金鑰生成 - 定義擴充套件金鑰的 64 位塊被分成兩個 32 位塊。這些元件與一些預定值結合起來,建立一組新的子金鑰。
  • 資料加密 - 這就是令人興奮的部分開始的地方。這兩個 32 位段被加密十六次。每一輪都涉及一組複雜的置換和替換(異或運算、加法和 S-盒查詢)。
  • 處理後 - 經過 16 輪後,重建 32 位亂序位以形成 64 位密文塊。

Blowfish 解密

在 Blowfish 中,解密是透過反轉加密過程來執行的。因此,所有內容都會反轉,直到密文轉換回明文。

這種 Blowfish 加密方法使用您的私鑰來保護您的資料。Blowfish 最好的一點是,如果材料被加密,如果沒有原始金鑰,則很難解密它。但是,這些 90 年代的技術正在逐漸過時,因為更復雜、更安全的加密方法,如 AES 或 Twofish(Blowfish 的替代品),正在取代它們。

示例

假設將單詞“Hi world”使用 Blowfish 加密。所涉及的步驟如下:

  • 輸入“Hi world”最初由 64 位或 8 個位元組組成,包括七個字母和一個空格。
  • 輸入由 32 位組成。“Hi w”的左 32 位與 P1 進行異或運算以產生 P1,即金鑰擴充套件的結果。
  • 之後,P1 將 32 位分成 4 個位元組,並使用轉換函式 F(F In)將它們傳送到四個 S-盒中的每一個。
  • 第三個 S-盒中的第三個值與前兩個 S-盒中的前兩個值的總和進行異或運算。
  • 將此結果新增到第四個 S-盒的輸出時,會產生 32 位輸出。
  • 為了建立輸出 F1',將 F In 的輸出與輸入訊息“orld”的正確 32 位進行異或運算。
  • 然後用 F1' 替換訊息的左半部分,用 P1' 替換右半部分。
  • 對於總共 16 輪,將對每個後續的 P-陣列成員執行相同的過程。
  • 16 輪後,將最終兩個 P-陣列元素 P17 和 P18 與輸出 P16' 和 F16' 進行異或運算。之後,再次將它們組合起來建立輸入訊息的 64 位密文。

Blowfish 的優點

Blowfish 是當前使用的最快分組密碼之一。它使用對稱加密金鑰對資料進行加密以建立密文。Blowfish 在建立三十多年後仍然需求量很大,因為它提供了以下好處:

  • 比DES和IDEA演算法更省時有效。
  • 無需授權,任何人都可以免費使用。
  • 大型微處理器即使在加密前的複雜初始化步驟下,也能高效地處理資料加密過程。
  • 為用Java開發的程式和應用提供高水平的安全保障。
  • 允許安全的使用者身份驗證以進行遠端訪問,併為備份工具提供安全訪問。

Blowfish的缺點

使用Blowfish加密有一些缺點,包括:

  • 更改金鑰會改變速度。
  • 完成主要例程需要很長時間。
  • 由於其64位短塊大小,該技術容易受到生日攻擊(一種蠻力攻擊)的影響。
  • 每個新金鑰的預處理需要4 KB的文字,這會降低其速度,並使其無法用於各種用途。
廣告
© . All rights reserved.