数据的”加密”和”脱敏”两个方案都可用于解决数据安全的问题,但场景不太一样,分别如下:
数据加密多用于数据传输和数据持久化,例如在数据库存储加密后的值,即使DBA有表访问权限,也不能获取到真实数据。加密的主要优点在于它的可逆性,但是解密密钥存储位置、如何存储以及确定谁具有访问权限等工作都会给整个安全工作增加额外的成本、故障点,加剧复杂性。
脱敏技术主要是为了兼顾数据安全与数据使用,采用的是专业的数据脱敏算法;而加密则是通过对数据进行编码来保护数据,检索原始值的唯一方法是使用解密密钥解码数据。脱敏数据通仍然便于使用,但加密数据不是。数据脱敏是从生产环境抽取数据到非安全环境,用于集成测试环境的开发和测试,或其他数据分析,提高数据集的真实性,数据不存在逆向的要求(技术上可以实现可逆)。
关于数据加密:
敏感数据的实际值被转换为“垃圾”值,除非通过解密还原出原始值,否则人类无法理解这些值。
关于数据脱敏:
在一个不可逆转的过程中,敏感数据的真实值被转换成虚构的、但看起来逼真的值,原始值被永久改变且无法恢复。上面两个简图能够帮助我们清晰地了解加密和脱敏的概念区别,当然实际技术还要复杂得多。比如脱敏根据不同的数据类型可能会应用不同的脱敏规则。
综上,我们总结一下数据加密相较于脱敏的不足之处:
1. 数据加密不能完全从技术上保证数据的安全。严格来说,任何有权访问用户数据的人员,如ETL工程师或是数据分析人员等,均有可能导致数据泄漏(数据脱敏能够更好地保证数据隐私性)。
2. 没有访问用户数据权限的人员,也可能存在对该数据进行分析挖掘的需求,数据的访问约束大大限制了充分挖掘数据价值的范围(数据脱敏能保证数据的可用性)。
3. 解密密钥存储位置、如何存储以及确定谁具有访问权限等工作都会给整个安全项目增加额外的成本、故障点,扩大复杂度。
数据脱敏和数据加密在数据层面的不同表现, 通常我们可以在本地将关键字段加密后上传到测试环境,然后在数据处理的过程中使用一致的key解密.
DES加密: update tb_salarysign_staff s set s.staffpwd =encrypt_des(s.staffpwd, ‘test#5&124*!de’);
DES解密:select decrypt_des(s.staffpwd, ‘test#5&124*!de’) from tb_salarysign_staff s
MD5加密: update tb_salarysign_staff s set s.staffpwd = md5(s.staffpwd);
查看解密后的字段状态,判断字段是否已被加密、脱敏
select unpassword(nik, ‘key:78891234’) from ods.O_GENERA_I;
317103******0002—–解密后的脱敏状态
select unpassword(nama, ‘key:78891234’) from ods.O_GENERA_I;
MEYA NIGSSIH——-解密后的未脱敏状态