
需要在数据库存用户身份证号码和手机号码。 最简单的方式,配置或者代码里一个固定的的密钥,每次对称加解密,数据库存密文。问题是密钥泄露风险。
1 K1W1 Dec 27, 2022 密钥不要放在代码里,放在配置中心,远程拉取。没有配置中心,放在启动参数里。光密钥泄露没事,数据库泄露也没事,代码泄露也没事。要三者同时泄露才会出问题。 |
3 teli OP @K1W1 我设想过 每个数据再生成一个随机 key ,随机 key 和密文一起存,全局密钥加这个随机 key ,组成加解密钥。这个是否有必要? |
5 Mogugugugu Dec 27, 2022 不建议存储加密 /明文身份证号,如果不是业务强要求,建议使用 hash 之后存储,可以存储一份脱敏的数据,例如只有后三位,满足部分搜索的需求。 手机号可以做成加密存储,秘钥不要存在数据库里面,尽量避免数据库泄露全盘皆输的可能。 另外不知道你们是什么机构,对于信息存储是否有一定的要求,如果是面向国内的特殊单位,参考 GB/T 35273-2020 的要求,该分开分开,不要听着产品经理的一股脑的都存进去,有些东西不是技术能解决的。 |
6 Mogugugugu Dec 27, 2022 哦对、如果确实有明文存储需求的,可以看看硬件加密机。 |
7 teli OP @Mogugugugu 因为还要取出来使用。 比方说,收货地址里的手机号码,就得存吧? |
8 billgong Dec 27, 2022 或者你可以为对应的数据加 salt ,甚至系统中设置多个 salt ,基本上就能做到楼上上说的必须泄漏三者才会出问题: - 主密钥( env ) - 应用配置 secret 或 salt ( code ) - 主密钥、应用的 salt 和记录 /用户的 salt 参与数据库中数据加密( db ) 对称加密可能还会用到 IV 和 nonce ,但 nonce 一般不需要记录(也不应该被复用),IV 保存在密文的开头或结尾是基本操作,在这个问题中不适用。 |
9 Mogugugugu Dec 27, 2022 @teli 手机号这个确实无解,使用太广泛了,单纯的为了手机号上一套加密设备也没必要。但是还是参考楼上 1L 的回复,把秘钥和数据分开存储,降低风险,同时不要存储身份证号明文 /密文。 |
10 realpg PRO 明文存就够了 代码都是自己写的 个人知道自己代码质量 书写注意 无漏洞无 bug 就不用搞那些没用的保险 |
11 billgong Dec 27, 2022 补充一点,如果使用了应用的 secret 那么这个 secret 丢失的话数据库里的数据可能就无法解密了(但可以备份这个 secret )。这种 secret 用来加密 volatile 数据更合适(比如 session key 之类需要加密但丢了也无妨的数据) |
12 danieladu Dec 27, 2022 key 肯定不在 code 里面,需要专业的 keyvault 去处理这种事情,各大云服务都有类似的服务。 这些 key 都有过期时间,会定时 rotation ,具体的策略取决于业务需求 |
13 crd57 Dec 27, 2022 拼多多应该是通过地址+手机号前三位+后四位进行存储的,因为我的手机号和我老婆的除了中间四位的不一致,别的都一直,地址也一致,我俩的物流信息老是串的(个人猜测是这样) |
14 kenberkeley Dec 27, 2022 via iPhone AWS KMS |
15 dr1q65MfKFKHnJr6 Dec 27, 2022 加密做成单独的服务,独立出来, 除非 服务代码 + 秘钥 + 数据库 同时泄露, 单独一个、两个泄露 都不怕 |
16 himarrin Dec 27, 2022 手机号不存第一位 身份证号不存第七位 |
17 28Sv0ngQfIE7Yloe Dec 27, 2022 |
18 wu67 Dec 27, 2022 手机号还行, 身份证和真实姓名还是得加密, 至少不应该明文存. 另外真的很想给#10 点踩. 足球还有守门员呢, 照样能进球, 还代码质量无 bug, 是个人写的代码就会出 bug 的可能, 是个框架就有漏洞风险, 除非你写的系统不联网, 纯线下设备使用, 但就算如此, 硬件淘汰、更新换代时和人员管理不过关时, 纯线下设备一样有泄露数据的风险 |
19 solitude2 Dec 27, 2022 信封加密 没有绝对安全,只能提高攻击者破解成本 可以了解下密码学相关的 |
21 mengzhuo Dec 27, 2022 这是都没有学习过隐私保护么?这玩意 2021.11.1 都立法了…… 身份证和手机号能不存就不存,哈希算是假名化,还是个人数据,需要加密处理(根密钥需要单独配置在配置中心、每个用户可以通过根密钥省成对应工作密钥),而且最好是单独找个库来放。 注:敏感数据哈希要用 pbkdf2 ,而不是简单的盐和算法。 |
22 realrojeralone Dec 27, 2022 #10 是小白吗?没有任何安全意识,可能根本没有关注过漏洞报告,不知道啥叫 0day |
24 28Sv0ngQfIE7Yloe Dec 27, 2022 |