场景:
最近公司出了一个信息泄露的故障,用户的电话信息被大量泄露。公司高度重视这次故障,打算给原来的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里面,这样只要接口不变,依赖的应用就不用升级。
相关推荐
此外,本研究还对隐私信息加密前处理技术进行了探讨。链路加密和节点加密作为隐私信息加密的前处理技术,它们能够为后续的信息加密提供额外的安全保障。链路加密通过对传输路径上的数据进行加密,保障了信息传输过程...
在给出的文档中提到了“模糊金库(Fuzzy Vault)”这一加密框架,这是研究者们针对生物特征的固有不准确性和模糊性开发出的一种加密技术。Fuzzy Vault框架能够在保持用户身份密钥的安全性的同时,容许一定程度的生物...
本文将围绕“易飞用户加密解密”这一主题,深入探讨其原理、应用及操作流程,帮助读者更好地理解和运用这一技术。 一、加密与解密基础 1. 加密:加密是将明文信息转化为密文的过程,通过特定的加密算法,使得原始...
首先,要探讨信息加密技术在计算机网络安全中的作用,我们得了解计算机网络面临的各种安全威胁。这些威胁通常可以分为两大类:主动攻击和被动攻击。被动攻击包括窃听和流量分析,攻击者试图监视传输的数据流而不干扰...
传统的加密方法往往注重于数据的直接加密,而忽略了对敏感属性的检测,这导致了加密过程中存在多个问题,如分解精度不足、加密质量较差、以及加密漏洞的频发。为了应对这些挑战,本研究提出了一种新型的分布式互联网...
网易云音乐登录信息加密算法详解 网易云音乐登录信息加密算法是网易云音乐平台上的一种加密算法,用于保护用户登录信息...本文对网易云音乐登录信息加密算法的详细解析,对于加密算法的研究和应用具有重要的参考价值。
基于Python+Django混沌系统敏感文本信息加密算法研究 摘要: 随着互联网的快速发展,信息安全问题变得越来越重要。为了确保互联网中的信息真实有效,实现了实名制上网政策,导致大量的个人隐私信息在线。如果这些...
数据库加密是信息安全领域的一项核心技术,主要目的是...随着信息技术的快速发展,数据库加密技术也在不断进步,新的算法和技术不断涌现,研究者需要不断跟踪最新的研究成果,以确保数据库加密技术的持续发展和应用。
基于区块链的加密信息备份系统研究与设计
据统计,信息安全问题直接影响到95%的企业运营,其中5%的影响尤为显著,涉及企业声誉、财务损失及客户信任度下降。 #### 加密技术 加密是信息安全的重要组成部分,通过将明文转化为密文,确保数据在传输和存储过程...
用户拥有一个公开的加密密钥和私有的解密密钥,加密和解密过程分别使用这两者。 第八章 散列函数:散列函数是一种将任意大小的输入映射为固定长度输出的函数,通常用于数据完整性检查和数字签名。常见的散列函数有...
本文将深入探讨聊天信息加密的重要性和实现原理。 首先,我们来理解为什么聊天信息加密如此关键。在互联网上,信息传播迅速,但也容易被截取和滥用。聊天记录可能包含敏感信息,如个人信息、商业机密或私人对话,...
在本文中,我们将深入探讨如何使用C#编程语言来实现这样的加密机制。 【描述】: C#是微软开发的一种面向对象的编程语言,广泛应用于Windows应用程序、Web服务以及游戏开发等。由于其丰富的类库和强大的功能,C#也常...
信息加密技术在网络时代起着至关重要的作用,它旨在保护数据的隐私和安全性,防止未经授权的访问、篡改或窃取。随着互联网的普及,网络安全隐患日益凸显,包括病毒、黑客攻击在内的诸多威胁使得数据加密成为了确保...
本文将深入探讨数据加密技术的相关概念、分类及其在网络环境中的应用。 数据安全加密技术源于对信息数据安全性和保密性的需求,其目标是防止非法访问和窃取,确保数据的完整性和私密性。这一技术通过特定的算法将...
随着信息社会的不断发展,计算机网络通信安全数据加密技术研究将继续推动社会的发展进步和方便用户的日常生活。 关键词:数据加密技术、计算机网络通信、安全问题、对称加密、非对称加密、链路加密。 计算机网络...