敏感数据加密,却要实现模糊查询,有解决方案吗???

2019-03-29 10:19:30 +08:00
 zjscxgh

得到一个需求,觉得做不了: 敏感数据(如身份证号)存在 mysql 中,要求加密存储。但是业务上要根据这段数据的全部或部分进行模糊查询???加密了就没法查了呀。。

有这种实现方案吗??想破脑袋没想出办法来。。。。跪。。。

6132 次点击
所在节点    问与答
15 条回复
paradoxs
2019-03-29 10:30:08 +08:00
为啥加密就没法查了?
密钥去哪了?
honeycomb
2019-03-29 10:32:06 +08:00
MySQL 表空间加密? binlog/redo log 的加密应该也有类似手段。

如果是字段本身就得是加密的话比较麻烦
yokiam
2019-03-29 10:32:50 +08:00
密钥没了?那存储的意义是啥
0ZXYDDu796nVCFxq
2019-03-29 10:34:34 +08:00
@paradoxs 楼主说的是模糊查询,通俗来讲就是搜索

建议:如果搜索条件能固定,比如生日,比如省市区等
可以把这些部分提取用其他字段存储或者加密存储
zjscxgh
2019-03-29 10:36:37 +08:00
@paradoxs 加密是可以查,但是要先把加密的数据全部解密再查询匹配,对于存有大量数据的表,效率会非常低。
tt67wq
2019-03-29 10:39:20 +08:00
把明文放进 es ?
zjscxgh
2019-03-29 10:39:45 +08:00
@honeycomb 现在的需求是字段加密,实在不行后面要考虑别的方法了
earendil1412
2019-03-29 10:41:03 +08:00
可以考虑把要搜索的部分解密出来加一列存进去。再做搜索
zjscxgh
2019-03-29 10:44:02 +08:00
@gstqc 您说的我没太看懂,“部分提取用其他字段存储或者加密存储”,可以详细说说嘛,谢谢!
murmur
2019-03-29 10:44:22 +08:00
除非是按字符一对一加密
mooncakejs
2019-03-29 10:46:29 +08:00
身份证号有什么好加密的,要加密加密后 4 位就够了,前面的基本是公开的。
如果是通用的,参考表达式索引, 加一两个索引列,把能索引的部分抽出来。
prolic
2019-03-29 11:13:32 +08:00
抽 tag 建明文字段呗
0ZXYDDu796nVCFxq
2019-03-29 11:40:22 +08:00
@zjscxgh #9 比如要按省份搜索
那就把前两位提取,加个省份字段存进去
其他部分同理
binux
2019-03-29 11:58:41 +08:00
Searchable encryption
Homomorphic encryption
听说过,能想像怎么做,没实践过
mrdemonson
2019-03-29 12:11:23 +08:00
做个能按单个字符加密的算法,模糊查询先对查询条件加密,再进数据库查询

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/549804

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX