
1) 【一句话结论】采用字段级加密(敏感字段单独加密,如身份证、电话用AES-256,密钥用RSA非对称加密存储)+传输加密(TLS 1.3保障传输安全),配合动态数据脱敏(身份证号脱敏为“XXXX XXXX XXXX 123”,电话号脱敏为“138-XXXX-XXXX”),确保符合《个人信息保护法》及海事行业数据安全要求。
2) 【原理/概念讲解】
老师解释:
3) 【对比与适用场景】
| 加密类型 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| 字段级加密 | 仅对敏感字段加密 | 保留非敏感字段明文,查询效率高 | 简历中身份证、电话等敏感字段 | 需管理密钥,确保密钥安全 |
| 整库加密 | 整条记录加密 | 所有字段加密,查询效率低 | 敏感数据全加密(如全隐私场景) | 适用于数据完全敏感,但业务复杂度低 |
| 传输加密(TLS) | 数据传输时加密 | 确保传输过程安全 | 客户端与服务器通信 | 需证书管理,确保握手安全 |
4) 【示例】
以身份证号字段为例(伪代码):
# 上传简历时加密身份证号
def encrypt_id_card(id_card, key_manager):
# 生成AES密钥(假设由KMS提供)
aes_key = key_manager.get_aes_key()
# AES-256-CBC加密
encrypted = encrypt_aes(id_card, aes_key)
# 用RSA公钥加密AES密钥(存储密钥)
encrypted_key = encrypt_rsa(aes_key, key_manager.get_rsa_public_key())
# 存储加密后的身份证号和加密密钥
db.save(id_card_field, encrypted)
db.save(key_field, encrypted_key)
# 查询时解密(需用户授权)
def decrypt_id_card(encrypted_id, encrypted_key, key_manager):
# 用RSA私钥解密AES密钥
aes_key = decrypt_rsa(encrypted_key, key_manager.get_rsa_private_key())
# AES解密身份证号
return decrypt_aes(encrypted_id, aes_key)
传输加密示例(HTTPs请求):
客户端用TLS 1.3与服务器通信,请求头和体均加密,服务器通过证书验证客户端身份。
5) 【面试口播版答案】
面试官您好,针对简历数据加密存储,我设计的方案是:
首先采用字段级加密,对身份证、电话等敏感字段单独加密,比如用AES-256对称加密,密钥通过RSA非对称加密后存储,这样既保证安全又提升查询效率;其次,数据传输时采用TLS 1.3加密,确保客户端和服务器间通信安全;对于数据脱敏,比如身份证号处理为“XXXX XXXX XXXX 123”,电话号码为“138-XXXX-XXXX”,通过正则替换或脱敏规则引擎实现,符合《个人信息保护法》的匿名化要求。具体来说,字段级加密时,身份证号加密后存储,查询时根据用户权限解密;传输用HTTPS,防止中间人攻击;脱敏规则根据业务需求动态配置,比如不同岗位对敏感信息可见性不同。
6) 【追问清单】
7) 【常见坑/雷区】