前面介紹了分組密碼算法的ECB,CBC,CFB,OFB,CTR,BC,OFBNLF,XTS-AES,GCM,CMAC和KW模式。本節(jié)介紹最后一種工作模式FPE。
1 FPE工作模式介紹
FPE定義
FPE,F(xiàn)ormat-Preserving Encryption,格式保留加密,也稱為保形加密。是一種特殊的對(duì)稱加密算法。FPE可以保證加密后的密文格式與加密前的明文格式完全相同。
如上圖使用FPE和AES加密后的消息對(duì)比,F(xiàn)PE加密前后格式完全相同,而直接使用AES的其他模式達(dá)不到此種效果。
FPE應(yīng)用
格式保留加密常用于數(shù)據(jù)脫密領(lǐng)域,可以對(duì)敏感數(shù)據(jù)(如手機(jī)號(hào)碼,銀行卡號(hào)等)進(jìn)行加密存儲(chǔ),可以有效降低黑客入侵導(dǎo)致敏感信息泄露。另外,由于FPE可以保持加密后數(shù)據(jù)的格式不變,在一定程度上可以替代傳統(tǒng)基于掩碼的數(shù)據(jù)遮蔽方案。
備注:數(shù)據(jù)脫敏,是指對(duì)數(shù)據(jù)中包含的秘密或隱私信息(如個(gè)人身份信息,商業(yè)機(jī)密數(shù)據(jù)等)進(jìn)行數(shù)據(jù)變形處理,使得惡意攻擊者無(wú)法從經(jīng)過(guò)脫敏的數(shù)據(jù)中直接獲取敏感信息,從而實(shí)現(xiàn)對(duì)隱私和機(jī)密的保護(hù)。
FPE特征
數(shù)據(jù)不能被擴(kuò)充。如當(dāng)加密N為數(shù)字時(shí),必須輸出另外一個(gè)N位數(shù)字;
數(shù)據(jù)類型不能被改變。如一段只包含數(shù)據(jù)的內(nèi)容加密后也只能是數(shù)據(jù);
數(shù)據(jù)必須能被確定加密。如對(duì)數(shù)據(jù)庫(kù)中作為索引值字段的數(shù)據(jù)加密,加密后保留其所在列索引值的特性。
對(duì)于短明文數(shù)據(jù),安全性不會(huì)降低。
加密過(guò)程可逆,加密后的數(shù)據(jù)可以通過(guò)密鑰解密還原原始數(shù)據(jù)。
FPE種類
NIST SP800-38G中定義了的FPE模式包括FF1,FF3,FF2 3種模式。
FF2模式仍在審批中。
FF3算法存在安全漏洞已于2019年2月更新為FF3-1,見(jiàn)SP800-38G Rev1。
FF1和FF3-1算法均以128bit AES為底層算法,在AES算法的基礎(chǔ)上實(shí)現(xiàn)線性變換,F(xiàn)F1經(jīng)過(guò)10輪迭代,F(xiàn)F3經(jīng)過(guò)8輪迭代。因此FF3的性能高于FF1,但FF1的安全性更高。
2 FF1算法簡(jiǎn)介
備注:首字母F表示兩種模式都是基于Feistel網(wǎng)絡(luò)的FPE方法。
FF1和FF3算法定義的部分函數(shù)如下表,
通過(guò)字符到數(shù)字和數(shù)字到字符的映射函數(shù)的使用,一個(gè)明文可以被轉(zhuǎn)換成一個(gè)無(wú)符號(hào)數(shù)存儲(chǔ)。
3加解密原理
-FF1加密
如下是FF1算法的加密函數(shù),加密函數(shù)的輸入是一個(gè)長(zhǎng)度為n的字符串X和一個(gè)長(zhǎng)度為t的tweak,經(jīng)過(guò)10輪迭代輸出是一個(gè)長(zhǎng)度為n的字符串。
要理解FF1加密和解密計(jì)算,關(guān)鍵是要理解表格中描述的相關(guān)函數(shù),部分沒(méi)有列舉參考SP800-38G。
4附錄
Algorithm3
舉例和文字描述如下:
Algorithm6
此函數(shù)的作用是用長(zhǎng)度是128位和加密密鑰K的數(shù)倍的輸入來(lái)產(chǎn)生128位輸出。
5參考資料
[1]https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-38Gr1-draft.pdf
[2]https://csrc.nist.gov/CSRC/media/Projects/Cryptographic-Standards-and-Guidelines/documents/examples/FF1samples.pdf