• 身份证、手机号加密存储的一些思路


    这两年国家越来越重要个人敏感信息的存储、传输与交换。在获取敏感个人信息时,例如,手机号、身份证,都需要主体的主动授权。

    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)
    如何进行模糊查询匹配?

    对应模糊查询就有点麻烦了!!!

    通常数据库自带有加解密函数,如MySQL的PASSWORD ,MD5,AES_ENCRYPT等等。对于密码等信息可以采用单向加密,验证的时候用同样的方式加密匹配即可。而对于需要比对原内容的模糊查询,则需要使用双向加密,也即可以解密,在MySQL可以使用自带的AES加密。完成存储加密,读取解密后,就可以实现模糊搜索了:

    select * 
    from t_user 
    where AES_DECRYPT(UNHEX(mobile_no_sha ),'key') 
    like 'xxx%';
    

    使用函数还原原始内容然后使用like关键字匹配即可实现模糊搜索。

    MySQL使用AES_ENCRYPT()/AES_DECRYPT()加解密的正确姿势

    http://blog.itpub.net/29773961/viewspace-2142305/
    
    • 明文传输

    对于明文传输,首先的摒弃http传输协议,采用https传输协议。如果还想加强安全级别的话,就自己在定义一种加密方式,对敏感信息进行额外加密。比如采用对称加密AES或者非对称加密RSA进行自定义加密。

    • 集团子公司或者与第三方系统进行系统对接时,交换敏感数据

    这种情况比较比较麻烦,分为集团内部子公司数据交换与第三方公司之间数据交换

    集团内部子公司数据交换

    集团公司之间是利益共同体,比如存在这样的场景,A集团公司有一个保险公司和一个To C的商城系统,那是不是存在这样的可能呢?保险公司需要收集大量个人的信息,然后大数据分析这些个人的情况看看哪个人的钱比较多,然后给他合理的推送保险,刚好商城做得好不错,挺多人注册,通过商城就能拿到很多个人的手机号之类的。

    第三方公司之间数据交换

    对于第三方公司系统之间,进行数据交换。也有可能存在接口调用时,传输敏感的信息。记得前两年,顺丰物流和菜鸟物流发生过这样的事,就是菜鸟物流要求顺丰物流必须上传所有物流信息,后来顺丰直接断了这两个系统的交互。

    对于这两种情况,我认为都需要在明显的地方,给出相关的用户协议,当主体同意授权时,才能进行数据交换。但是这两种情况,几乎还没有任何公司按照这种渠道来做的,都是偷偷的就把数据进行了交换。

  • 相关阅读:
    哈夫曼树
    顺序栈和链栈
    线性表(二) 单链表的增删改查及源码 (修改)
    线性表(二):单链表的增删改查及源码
    线性表(一):顺序表的增删改查及源码
    从头学数据结构--跟随浙大陈越姥姥的步伐
    Java学习笔记--scanner获取键盘输入
    关于方法、变量、类等命名规范
    Java学习笔记--类型自动转换、强制类型转换、溢出
    java学习笔记--重载
  • 原文地址:https://www.cnblogs.com/happyhuangjinjin/p/14278344.html
Copyright © 2020-2023  润新知