数据脱敏和数据加密的区别

数据脱敏和数据加密是两种截然不同的技术,适用于不同目的。

脱敏技术主要是为了兼顾数据安全与数据使用,采用的是专业的数据脱敏算法;而加密则是通过对数据进行编码来保护数据,检索原始值的唯一方法是使用解密密钥解码数据。

脱敏数据仍然便于使用,但加密数据不是。

加密的主要优点在于它的可逆性,但是解密密钥存储位置、如何存储以及确定谁具有访问权限等工作都会给整个安全工作增加额外的成本、故障点,加剧复杂性。

数据加密

敏感数据的实际值被转换为“垃圾”值,除非通过解密还原出原始值,否则人类无法理解这些值。

数据脱敏

在一个不可逆转的过程中,敏感数据的真实值被转换成虚构的、但看起来逼真的值,原始值被永久改变且无法恢复。

上面两个简图能够帮助我们清晰地了解加密和脱敏的概念区别,当然实际技术还要复杂得多。比如脱敏根据不同的数据类型可能会应用不同的脱敏规则。

综上,我们总结一下数据加密相较于脱敏的不足之处:

1. 数据加密不能完全从技术上保证数据的安全。严格来说,任何有权访问用户数据的人员,如ETL工程师或是数据分析人员等,均有可能导致数据泄漏(数据脱敏能够更好地保证数据隐私性)。

2. 没有访问用户数据权限的人员,也可能存在对该数据进行分析挖掘的需求,数据的访问约束大大限制了充分挖掘数据价值的范围(数据脱敏能保证数据的可用性)。

3. 解密密钥存储位置、如何存储以及确定谁具有访问权限等工作都会给整个安全项目增加额外的成本、故障点,扩大复杂度。

 

数据脱敏和数据加密在数据层面的不同表现:

脱敏:在此只是对数据如姓名,身份证号码等进行简单粗暴的脱敏,即改变数据
加密:此处将对于两种加密算法进行讲述。
例DES、MD5加密函数。例如:
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-------解密后的未脱敏状态

### Python 中的数据脱敏与加密 #### 数据脱敏方法及其实现 数据脱敏是指通过对原始数据进行转换,使得这些数据在特定环境中无法被直接识别或关联到具体的个体。这有助于防止敏感信息泄露,在测试环境、数据分析场景下尤为重要。 对于姓名、身份证号等个人信息字段,可以采用部分隐藏的方式来进行简单的脱敏处理: ```python def mask_id_card(id_card): """对身份证号码进行脱敏""" masked_part = '*' * (len(id_card) - 4) return f"{id_card[:1]}{masked_part}{id_card[-3:]}" def mask_phone(phone_number): """对手机号码进行脱敏""" return "{}****{}".format(phone_number[:3], phone_number[7:]) ``` 更复杂的脱敏方案可能涉及到使用哈希函数或其他不可逆变换来替代真实值,从而进一步增强安全性[^2]。 #### 加密方法及其实现 为了确保传输过程中的信息安全以及存储状态下的保密性,通常会应用对称/非对称加密算法对重要数据实施保护措施。下面是一个基于 `cryptography` 库的 AES 对称加密例子: 安装依赖库: ```bash pip install cryptography ``` AES 加密解密代码如下所示: ```python from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes from cryptography.hazmat.backends import default_backend import os key = os.urandom(32) # 生成随机秘钥 iv = os.urandom(16) # 初始化向量 cipher = Cipher(algorithms.AES(key), modes.CFB(iv), backend=default_backend()) encryptor = cipher.encryptor() decryptor = cipher.decryptor() plaintext = b'Hello world!' ctext = encryptor.update(plaintext) + encryptor.finalize() # 加密 dtext = decryptor.update(ctext) + decryptor.finalize() # 解密 print(f"Original text: {plaintext.decode('utf-8')}") print(f"Cipher Text: {ctext.hex()}") print(f"Decrypted Text: {dtext.decode('utf-8')}") ``` 上述示例展示了如何创建一个 AES 密码对象并执行基本的加解密操作。需要注意的是实际生产环境下应该妥善保管私钥,并考虑引入额外的安全机制如公钥基础设施(PKI)[^1]。 #### 安全处理与敏感信息保护策略 当涉及敏感信息时,除了采取适当的技术手段外,还需要遵循一系列最佳实践原则以保障整体系统的安全性: - **最小权限访问控制**:仅授予必要的读取修改权限给相关人员; - **定期审查日志记录**:监控异常行为模式及时发现潜在威胁; - **建立应急响应计划**:针对可能发生的信息泄漏事件制定预案以便快速反应; - **教育员工提高意识水平**:加强内部培训减少人为失误造成的风险。 通过综合运用多种技术管理上的防护措施,能够有效提升应用程序服务端口抵御外部攻击的能力,同时也更好地满足法律法规的要求[^3]。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值