FFX 模式 - 保留格式的加密技術

在資訊安全的領域中,資料加密是保護敏感資訊的關鍵手段。然而,傳統的加密方法通常會改變資料的原始格式與長度,這在許多既有系統中可能會引發問題,例如資料庫欄位長度不符、或是無法通過格式檢驗。

為了解決這個問題,「保留格式加密」(Format Preserving Encryption, FPE)技術應運而生,而 FFX 模式正是實現 FPE 的一種重要框架。

本文將探討 FFX 模式的核心概念、運作原理,以及其在現代資訊安全中的應用。

什麼是 FFX 模式?

FFX 是一種基於區塊加密(Block Cipher)的加密模式,其核心目標是在加密過程中,讓密文的格式與明文完全相同。舉例來說,如果您的信用卡號是 16 位數字,經過 FFX 加密後的密文,依然會是一串 16 位的數字。這使得加密後的資料能夠無縫整合到既有的系統與應用程式中,無需修改資料庫結構或應用程式的邏輯。

FFX 的運作流程

graph LR
    A[明文資料] --> B(1. 去除檢查碼);
    B --> C(2. 轉換為進位制字串);
    C --> D{3. FFX 加密};
    D --> E(4. 轉換回格式資料);
    E --> F(5. 補上新檢查碼);
    F --> G[加密資料];
graph LR
    H[加密資料] --> I(1. 去除檢查碼);
    I --> J(2. 轉換為進位制字串);
    J --> K{3. FFX 解密};
    K --> L(4. 轉換回格式資料);
    L --> M(5. 補回原檢查碼);
    M --> N[明文資料];

根據文件中的圖示,FFX 的加解密流程包含幾個關鍵的初始化步驟,確保資料在加密前後都能維持其特定格式,尤其是當資料包含檢查碼(Checksum)時,例如信用卡號或身分證字號。

其主要流程如下:

  1. 預處理(明文 -> 加密)
    • 去除檢查碼:首先,將原始明文資料中的檢查碼(例如 Luhn 演算法產生的信用卡末碼)移除。
    • 轉換為進位制字串:接著,將不含檢查碼的資料轉換成一個純粹的數字或字母字串(Numeral String),也就是 $STR_{radix}(x)$。
  2. FFX 核心加密
    • 將處理過的字串輸入 FFX 加密模組,進行加密運算。
  3. 後處理(產生加密資料)
    • FFX 輸出的加密字串,其格式與長度會和輸入時相同。
    • 補上檢查碼:系統會為這個新的加密字串計算並補上一個新的、有效的檢查碼。
    • 轉換回原始格式:最後,將帶有新檢查碼的加密字串轉換回最終的格式化資料。

解密的過程則完全相反,從去除加密資料的檢查碼開始,透過 FFX 解密,最後再將原始檢查碼補回,還原成最初的明文資料。FFX Encryption Process

核心結構:費斯妥網路 (Feistel Network)

FFX 的核心演算法多採用費斯妥網路(Feistel Structure)。這是一種對稱式加密的結構,它將待加密的資料區塊分成左右兩半(A 和 B),並透過多輪(Rounds)的運算來完成加密。

在每一輪中,其中一半的資料會與一個由密鑰(Key)和另一半資料所生成的函數進行運算,其結果再與另一半資料進行互斥或(XOR)運算。經過一輪運算後,左右兩半會互換。這個過程會重複數次。由於這個過程是可逆的,解密時只需將相同的金鑰以相反的順序應用即可。

FFX 的不同變體

NIST(美國國家標準暨技術研究院)在其 SP 800-38G 指南中,定義了幾種 FFX 的演算法變體,文件中提到了 FF1、FF2 及 FF3-1。

  • FF1:是一個被廣泛採用的標準,其演算法較為複雜,涉及多個步驟來生成每一輪加密所需的偽隨機數。
  • FF2 (OFF2):由 VeriFone 公司提出,作為 FF2 的擴展,其結構與 FF1 相似,但使用了不同的參數和函數來進行運算。
  • FF3-1:是 FF3 的修訂版,同樣採用費斯妥網路,但其輪數(8 輪)比 FF1(10 輪)少,並在處理 tweak(用於調整加密的額外參數)和資料反轉(Reversing)上有其獨特的設計。

系統導入注意事項

在考慮導入 FFX 這類 FPE 技術時,有幾點需要特別注意:

  • 格式範圍(Domain Size):需要明確定義資料的可能範圍,例如純數字、英數混合等。
  • 檢查碼:確認資料是否包含檢查碼,以及其生成規則。
  • 搜尋需求:是否需要在加密後的資料庫中進行搜尋?這會影響索引(Indexing)的設計。
  • 金鑰與初始向量(Key & Tweak/IV):確保金鑰和 Tweak(或 IV)具有足夠的隨機性,是保障加密強度的根本。

總結來說,FFX 模式提供了一個強大且實用的解決方案,讓企業能在不更動既有系統架構的前提下,對敏感資料進行高強度的加密,兼顧了安全性與系統相容性的需求。

參考資料

  • NIST SP 800-38G - FFX 模式的官方標準文件。
  • Wikipedia - Format Preserving Encryption - FPE 的概述與歷史背景。

也許你也會想看看