分组密码算法-FPE格式保留加密简介

PassionWalker微信公众号
康乐
格式保留加密常用于数据脱密领域,可以对敏感数据(如手机号码,银行卡号等)进行加密存储,可以有效降低黑客入侵导致敏感信息泄露。另外,由于FPE可以保持加密后数据的格式不变,在一定程度上可以替代传统基于掩码的数据遮蔽方案。

2345截图20211028093243.png

前面介绍了分组密码算法的ECB,CBC,CFB,OFB,CTR,BC,OFBNLF,XTS-AES,GCM,CMAC和KW模式。本节介绍最后一种工作模式FPE。

1 FPE工作模式介绍

FPE定义

FPE,Format-Preserving Encryption,格式保留加密,也称为保形加密。是一种特殊的对称加密算法。FPE可以保证加密后的密文格式与加密前的明文格式完全相同。

2345截图20211028093243.png

如上图使用FPE和AES加密后的消息对比,FPE加密前后格式完全相同,而直接使用AES的其他模式达不到此种效果。

FPE应用

格式保留加密常用于数据脱密领域,可以对敏感数据(如手机号码,银行卡号等)进行加密存储,可以有效降低黑客入侵导致敏感信息泄露。另外,由于FPE可以保持加密后数据的格式不变,在一定程度上可以替代传统基于掩码的数据遮蔽方案。

备注:数据脱敏,是指对数据中包含的秘密或隐私信息(如个人身份信息,商业机密数据等)进行数据变形处理,使得恶意攻击者无法从经过脱敏的数据中直接获取敏感信息,从而实现对隐私和机密的保护。

FPE特征

数据不能被扩充。如当加密N为数字时,必须输出另外一个N位数字;

数据类型不能被改变。如一段只包含数据的内容加密后也只能是数据;

数据必须能被确定加密。如对数据库中作为索引值字段的数据加密,加密后保留其所在列索引值的特性。

对于短明文数据,安全性不会降低。

加密过程可逆,加密后的数据可以通过密钥解密还原原始数据。

FPE种类

NIST SP800-38G中定义了的FPE模式包括FF1,FF3,FF2 3种模式。

FF2模式仍在审批中。

FF3算法存在安全漏洞已于2019年2月更新为FF3-1,见SP800-38G Rev1。

FF1和FF3-1算法均以128bit AES为底层算法,在AES算法的基础上实现线性变换,FF1经过10轮迭代,FF3经过8轮迭代。因此FF3的性能高于FF1,但FF1的安全性更高。

2 FF1算法简介

备注:首字母F表示两种模式都是基于Feistel网络的FPE方法。

FF1和FF3算法定义的部分函数如下表,

2345截图20211028093243.png

通过字符到数字和数字到字符的映射函数的使用,一个明文可以被转换成一个无符号数存储。

3加解密原理

-FF1加密

如下是FF1算法的加密函数,加密函数的输入是一个长度为n的字符串X和一个长度为t的tweak,经过10轮迭代输出是一个长度为n的字符串。

2345截图20211028093243.png

要理解FF1加密和解密计算,关键是要理解表格中描述的相关函数,部分没有列举参考SP800-38G。

4附录

Algorithm3

2345截图20211028093243.png

举例和文字描述如下:

2345截图20211028093243.png

Algorithm6

2345截图20211028093243.png

此函数的作用是用长度是128位和加密密钥K的数倍的输入来产生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

THEEND

最新评论(评论仅代表用户观点)

更多
暂无评论