这两年国家越来越重要个人敏感信息的存储、传输与交换。在获取敏感个人信息时,例如,手机号、身份证,都需要主体的主动授权。
0x01:敏感信息泄露有哪些途径
明文存储,比如直接把手机号、身份证存储到数据库。如果数据的用户和密码被一些不应该的人员看到,获取;就很容易造成泄漏
明文传输,比如没有对敏感信息进行RSA或者AES加密,就在网络中进行传输
集团子公司或者与第三方系统进行系统对接时,交换敏感数据。就是把我方系统的一些敏感信息,没经授权就发生给了第三方公司
0x02:解决敏感信息泄漏的最佳途径
明文存储
对数据敏感信息加密后,再进行存储。有这样一个场景:有个用户表除了其他字段外,还有手机号 mobile_no 和身份证 identity_card ,这两个敏感信息存储字段。如果直接储存mobile_no和identity_card明文,就很容易泄漏。
可以对这两个字段进行对称加密或者非对称加密存储,分别定义两个加密字段 mobile_no_encrypted 和 identity_card_encrypted。但是进行加密存储到数据库必然导致以下两个问题:
如何进行精准查询匹配
如何进行模糊查询匹配
如何进行精准查询匹配?
为了解决这个问题,还得多加一个字段,对于手机号添加 mobile_no_sha 字段,身份证添加 identity_card_sha 字段。这两个字段分别存储手机号和身份证的SHA-1的散列码(也可以使用md5算法)。这样的话,如果精准查询就直接比对SHA-1散列码就行。
select * from t_user where mobile_no_sha = sha-1(mobile_no) 如何进行模糊查