`

给用户信息加密的问题探讨

 
阅读更多

 

场景:

     最近公司出了一个信息泄露的故障,用户的电话信息被大量泄露。公司高度重视这次故障,打算给原来的Account信息做加密。那么我们该如何设计这个加密流程呢?

 

YY的流程:

     可以确定原来的表里面存储了phone字段,如果要加密必须要使用phone_enc,然后删除phone字段。

     1.假设做了db表变更,增加了phone_enc注意这个字段可以解密,那么下一步肯定是fix data, 预发上写段代码半夜将phone加密给phone_enc字段。假设这一步数据fix了。

     2. 代码变更,那么用户更换手机号的时候,你的phone_enc肯定要伴随phone字段做同步。update SQL的时候要做变更。

     3. 代码变更,获取手机getPhone()的时候,使用phone_enc字段进行解密。

     4. 上线

   

     这样问题基本已经解决了,问题来了根据电话号码模糊匹配和全电话查询的时候怎么办呢?  模糊匹配的话任何加密应该都做不到吧,主要考虑全电话查询的情况。全文匹配的话,其实很简单,直接把要搜索的电话加密查询就可以了。

 

     可是如果你的加密算法被泄露了,你怎么办呢?

     还是YY一下能够想到的思路,第一想法更改加密算法,那么所有的加密算法的代码都要改,你代码上线的前提是数据已经fix了,如果你还使用原来的字段的话,但是加密的算法变了,所以老的代码就不兼容了。这时候你肯定只能重新做一次db变更了,再重新整一个字段来存储新的加密算法了。这样搜索的逻辑也要随着加密的算法同步修改,因为你搜索的是加密串。

 

正式的加密流程:

     目前主要是分为三个阶段,我认为还是很合理的,很多类似的操作都可以借鉴下。

  第一阶段:

     表变更:

        a) 增加phone_enc字段,phone_md5_hc字段同时建立索引

    代码变更:

        a) 双写,写入phone的时候,同时写入phone_enc

        b) getPhone 判断phone_enc是否为null,不为null的话则直接从phone_enc解密获得

        c) setPhone的时候记得将phone_enc 设置进去

 

  第二阶段:

        fix data 将所有电话的phone_enc和phone_md5_hc 设置进去

 

  第三阶段:

     表变更:

        a) 去掉表里面phone字段

     代码变更:

        a) 对象里面的字段可以保留,但是SQL里面关于phone的字段要去掉

        b) setPhone的时候将phone_md5_hc 字段设置进去,查询的时候用phone_md5_hc 字段查询。

 

总结几点好处:

     1) 兼容性,可以兼容老的程序,平滑升级

     2) 支持加密算法的切换phone_enc = aes+version+ encrypt,升级加密算法的时候,代码基本不用修改

     3) 加密算法的升级不影响phone的搜索功能

 

总结几点:

     1) 所有依赖Account-API的模块必须升级,setPhone的时候设置phone_enc到达双写的目的,getPhone要对phone_enc进行解密。 

    

     2) 如何避免依赖Account-api的应用全部升级? 可以把setPhone和getPhone对加密的相关的操作都挪到service里面,这样只要接口不变,依赖的应用就不用升级。

   

  

  

 

 

分享到:
评论

相关推荐

    基于区块链的加密信息备份系统研究与设计

    基于区块链的加密信息备份系统研究与设计

    深度学习中数据模型加密存储的研究与应用.pdf

    本研究对深度学习中数据模型加密存储的研究与应用进行了探讨,旨在解决个人信息和数据泄露风险的问题。 在本研究中,我们首先分析了 SM4 算法和 PBKDF2_SHA256 算法的安全性,然后设计了一套混合加密方法。首先采用...

    (基于python的毕业设计)基于混沌系统敏感文本信息加密算法研究(django)(源码+说明+演示视频).zip

    (基于python的毕业设计)基于混沌系统敏感文本信息加密算法研究(django)(源码+说明+演示视频),本科毕业设计高分项目。 【项目技术】 python+Django+mysql 【实现功能】 本次就是利用了Python技术来搭建一款敏感信息...

    python项目基于混沌系统敏感文本信息加密算法研究(django).zip

    该项目是一个使用Python语言和Django框架开发的基于混沌系统的敏感文本信息加密算法研究平台。 1. **系统设计**:项目的主要目的是研究和实现一种基于混沌理论的文本加密方法,以提高敏感信息的安全性。 2. **技术...

    论文研究-两个公钥加密方案的安全性分析.pdf

    广播加密和基于属性加密是两种重要的公钥加密方案,可将加密内容同时传送给多个用户,在付费电视、数字版权管理和资源访问控制等领域有重要应用。对一个基于身份广播加密方案进行了分析,表明攻击者只要得到某个用户...

    论文研究-云存储环境下属性基加密综述.pdf

    根据不同的功能扩展,针对隐藏访问结构、多授权机构、复杂计算安全外包、可搜索加密机制、属性撤销、叛徒追踪等重点难点问题进行了深入探讨研究。最后总结了现有研究工作的不足,并指出了未来的研究方向。

    论文研究-一种基于身份的认证加密方案的改进.pdf

    通过分析现有的基于身份的认证加密方案,针对其中存在的用户不能防止自身假冒其他用户发送消息给自己,即不能认证信息主体的真实性的安全隐患,结合双线性映射的特性,提出了改进方案。新方案的安全性是基于双线性...

    【基于Python+Django的毕业设计】基于混沌系统敏感文本信息加密算法研究(源码+录像演示+说明).zip

    【基于Python+Django的毕业设计】基于混沌系统敏感文本信息加密算法研究(源码+录像演示+说明).zip 【项目技术】 python+Django+mysql 【实现功能】 本次就是利用了Python技术来搭建一款敏感信息加密系统,通过以混沌...

    论文研究-支持文件动态更新的基于属性可搜索加密方案.pdf

    可以非常灵活地表示访问控制策略,大大降低了数据共享细粒度访问控制所带来的网络带宽和发送节点的处理开销,可以实现文件只加密一次就可被多个用户私钥搜索,避免了针对不同用户需要多次加密的问题。但是现有的基于...

    python项目信息加密解密网站.zip

    该项目是一个使用Python语言开发的信息加密解密网站。 1. **系统设计**:项目旨在提供一个用户...总的来说,这个信息加密解密网站项目不仅提供了实用的工具和资源,也为网络信息安全教育和研究提供了有价值的参考。

    png加密解密工具:保护个人隐私,加密传输

    2. 适用于需要在不引起注意的情况下传递信息的人,例如侦探、记者、研究人员等。也适用于想要保护个人隐私的普通用户,他们可以使用这种方法将个人信息隐藏在普通看起来无害的文件中。 3. 对文件进行加密也可以防止...

    MD5加密技术

    本java工程用于研究MD5加密技术。 本工程编码方式:UTF-8 说明:采用Java自带的加密技术(MD5)对字符串进行加密,这种加密是不可逆的,也就是说只有对字符串的加密过程,没有解密过程,可能有人会在网上找到所谓...

    论文研究-一种短密钥高效全同态加密方案.pdf

    针对Van Dijk等人在2010年欧密会上提出的基于整数的全同态加密方案进行了研究,此方案的主要优势在于概念上的简单性,将原来的基于理想格的同态加密体制替换为一个非常简单的整数描述的同态加密体制,但是它的公钥...

    基于python+django的混沌系统敏感文本信息加密算法研究的实现.zip

    基于python+django的混沌系统敏感文本信息加密算法研究的实现.zip python mysql开发 管理员: 管理员管理 用户管理 加密文件管理 加密信息数量统计 用户: 个人资料管理 登录后上传txt文本或者在文本框里加密...

    数据库加密关键技术研究

    在分析数据库加密关键技术的基础上,由于在数据库加密时难以采用直接分发密钥给用户的方式,所以提出一种将密钥管理与智能卡和指纹识别技术相结合的方法,对于提高关系数据库安全具有一定作用。

    密码学与信息加密.ppt

    如果不合法的用户试图从密文中分析得到机密信息,那么,要么这种分析过程根本是不可能的,要么代价过于巨大,以至于无法进行。 密码体制的分类有多种,可以根据密钥分类为对称密钥密码体制和非对称密钥密码体制,也...

    论文研究-一种用于云存储的可撤销的属性加密方案.pdf

    由于云存储用户数量大,成分复杂,云存储中数据的安全防护问题成为其发展的一大制约,近年来,基于属性加密技术解决云存储中数据安全存储问题成为研究热点,但传统的属性加密方案存在密文长度相对较大且属性撤销复杂...

    用户角色的XML动态加密方法研究

    在阐述了XML加密控制策略的基础上,结合煤矿安全综合监控系统的实际应用需求,针对不同工作人员对不同数据的访问请求,提出了按照用户角色划分,在不重构XML数据文档的基础上,对不同用户请求的XML数据实现动态加密。...

Global site tag (gtag.js) - Google Analytics