本篇是关于格式保留加密的涉猎文章
前言
最近一个网友和我聊关于【格式保留加密】。科普一下这个概念。
格式保留加密常用于数据脱密领域,可以对敏感数据(如手机号码,银行卡号等)进行加密存储,可以有效降低黑客入侵导致敏感信息泄露。另外,由于FPE可以保持加密后数据的格式不变,在一定程度上可以替代传统基于掩码的数据遮蔽方案。
定义
FPE,Format-Preserving Encryption,格式保留加密,也称为保形加密。是一种特殊的对称加密算法。FPE可以保证加密后的密文格式与加密前的明文格式完全相同。
例如这样:
image
如上图使用FPE和AES加密后的消息对比,FPE加密前后格式完全相同,而直接使用AES的其他模式达不到此种效果。
https://www.infoobs.com/article/20211222/51689.html
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的安全性更高。
FF1算法简介
备注:首字母F表示两种模式都是基于Feistel网络的FPE方法。
FF1和FF3算法定义的部分函数如下表,
image
通过字符到数字和数字到字符的映射函数的使用,一个明文可以被转换成一个无符号数存储。
具体实现细节参考文末
拓展
法定需要脱敏的数据
依据《GB/T 35273-2020 信息安全技术 个人信息安全规范》标准中对个人敏感信息判定参考如下:
个人敏感信息是指一旦泄露、非法提供或滥用可能危害人身和财产安全,极易导致个人名誉、身心健康受到损害或歧视性待遇等的个人信息。通常情况下,14岁以下(含) 儿童的个人信息和涉及自然人隐私的信息属于个人敏感信息。
- 个人财产信息:银行账户、鉴别信息口令 、存款信息(包括资金数量、支付收款记录等)、房产信息、信贷记录、征信信息、交易和消费记录、流水记录等,以及虚拟货币、虚拟交易、
- 游戏类兑换码等虚拟财产信息
- 个人健康生理信息:个人因生病医治等产生的相关记录,如病症、住院志、医嘱单、检验报告、手术及麻醉记录、护理记录、用药记录、药物食物过敏信息、生育信息、以往病史、
- 诊治情况、家族病史、现病史、传染病史等
- 个人生物识别信息:个人基因、指纹、声纹、掌纹、耳廓、虹膜、面部识别特征等
- 个人身份信息:身份证、军官证、护照、驾驶证、工作证、社保卡、居住证等
- 其他信息:性取向、婚史、宗教信仰、未公开的违法犯罪记录、通信记录和内容、通讯录、好友列表、群组列表、行踪轨迹、网页浏览记录、住宿信息、精准定位信息等
参考
提供篇参考文章
- https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-38G.pdf
- https://github.com/capitalone/fpe
- https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-38Gr1-draft.pdf
- https://csrc.nist.gov/CSRC/media/Projects/Cryptographic-Standards-and-Guidelines/documents/examples/FF1samples.pdf