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)時,例如信用卡號或身分證字號。
其主要流程如下:
- 預處理(明文 -> 加密):
- 去除檢查碼:首先,將原始明文資料中的檢查碼(例如 Luhn 演算法產生的信用卡末碼)移除。
- 轉換為進位制字串:接著,將不含檢查碼的資料轉換成一個純粹的數字或字母字串(Numeral String),也就是 $STR_{radix}(x)$。
- FFX 核心加密:
- 將處理過的字串輸入 FFX 加密模組,進行加密運算。
- 後處理(產生加密資料):
- FFX 輸出的加密字串,其格式與長度會和輸入時相同。
- 補上檢查碼:系統會為這個新的加密字串計算並補上一個新的、有效的檢查碼。
- 轉換回原始格式:最後,將帶有新檢查碼的加密字串轉換回最終的格式化資料。
解密的過程則完全相反,從去除加密資料的檢查碼開始,透過 FFX 解密,最後再將原始檢查碼補回,還原成最初的明文資料。
核心結構:費斯妥網路 (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 的概述與歷史背景。