数据安全之安全存储策略

数据安全之安全存储策略1.背景为了保障企业数据安全,信通院最近出台了数据安全管理认证,其中有一个审核条目是安全存储,要求将敏感字段在数据库加密存储,但是加密存储会引发一个问题:如何查询,如何被第三方使用?2.分析我们可以一起分析一下具体的场景,我个人总结出如下几个:1)某些字段,只加密,不做检索。2)某些字段

大家好,欢迎来到IT知识分享网。数据安全之安全存储策略"

1.背景

为了保障企业数据安全,信通院最近出台了数据安全管理认证,其中有一个审核条目是安全存储,要求将敏感字段在数据库加密存储,但是加密存储

会引发一个问题:如何查询,如何被第三方使用?

 

2.分析

我们可以一起分析一下具体的场景,我个人总结出如下几个:

1)某些字段,只加密,不做检索。

2)某些字段,加密后需要检索,但是只支持精准检索,不支持模糊检索。

3)某些字段,加密后需要检索,需要支持模糊检索,尽量保证性能。

3.实现策略

基于以上的场景,我从网上整理了以下策略:

1)场景1

如果只是加密,不做检索,这样的场景处理比较简单,如果业务需要明文,那么使用可逆加密算法;如果业务不需要明文,比如密码,那么使用不可逆加密算法即可。

2)场景2

场景2中,可以有两种处理方式,一个放在数据库,在插入的时候将字段加密;查询的时候,在sql对字段解密处理

INSERT INTO t_passwd VALUES (AES_ENCRYPT('明文1', 'key'), AES_ENCRYPT('text2', 'key'), AES_ENCRYPT('明文_text3', 'key'));
select * from t_user where AES_DECRYPT(UNHEX(mobile_no),'key') = '13312345678';

现在mysql8.0+版本支持函数索引,也可以具有高的查询性能。

当然,也可以使用数据库的加解密函数进行模糊查询,

3)场景3

场景3是我们面临最多的,也是最麻烦的,目前网上提供了一个思想:使用OPE加密算法,也就是保序加密算法,可以只是自定义的Base64做一个demo

首先,将加密的字段使用custom-base64加密,比如13312345678,产生一个index=MTMzMTIzNDU2Nzg=

然后,现在使用133作为模糊查询,可以再次使用算法custom-base64加密133,生成MTMz进行模糊匹配查询

对于OPE算法,目前我在网上只是找到实验版,生产的组件还未查询到。

java版本:https://github.com/ssavvides/jope

py版本:https://github.com/tonyo/pyope

另外一种方式可以采用分组加密方式,就是把原文进行拆分进行加密,在业务上进行分组进行模糊查询,其实是变种的场景2而已

例如手机号模糊查询,数据库中包含手机号字段与手机检索串字段两个,
  • 如果商家输入 手机号18967038927查询

  • 检索服务收到此请求,截取手机后八位 “67038927”

  • 然后使用加密算法获取检索串 $ 7AnwZJ1e6BZc$

  • 根据$ 7AnwZJ1e6BZc$ 到数据库表order_info中做一次查询即可,SQL 如下: Select * from order_info where 手机检索串 = ‘$ 7AnwZJ1e6BZc$’

 

参考文章:

1.https://open.taobao.com/docV3.htm?docId=106213&docType=1

2.https://www.jiamisoft.com/blog/6542-zifushujumohupipeijiamifangfa.html

3.http://blog.itpub.net/29773961/viewspace-2142305/

4.https://juejin.cn/post/6844903736792317960

5.https://blog.csdn.net/u012516914/article/details/114422156

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/32732.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信