有做过等保定级的朋友吗,要求敏感信息要加密存储,但是业务中需要模糊检索,实在没有好的方案
1
masterclock 2022-08-12 12:58:51 +08:00
同态加密
|
2
mywaiting 2022-08-12 13:01:55 +08:00
布隆过滤?把布隆出来的数据存起来,单独用于检索~ 不懂等保,盲猜的方法~
|
3
kwokky 2022-08-12 13:12:52 +08:00
同问
|
4
codeklaus 2022-08-12 13:16:58 +08:00
目前没什么办法,同态加密很大程度上就是为了解决这个问题。
等保的话不会要求在业务层全加密,不然业务都没法做了。 看看数据库自带的 透明加解密 应该就能满足等保的要求,数据落盘自动加密,读到内存自动解密,对业务完全透明,保证落在磁盘的数据都是加密的。 |
5
codeklaus 2022-08-12 13:19:28 +08:00
|
6
Huelse 2022-08-12 13:26:07 +08:00
同态加密效率很低成本很高,上联邦学习成本更高
|
7
xupefei 2022-08-12 16:02:46 +08:00 via iPhone
这技术叫 oblivious database ,目前还在研究阶段。目前支持的查询方式还很有限,模糊搜索还做不到。
|
8
IvanLi127 2022-08-12 16:10:16 +08:00
如果在另一个地方明文存储这列字段作为索引用于模糊查询,匹配到完整内容再加密后去原数据库检索,这样能过等保嘛?这样数据和数据所有者在磁盘上应该是没关联的?
|
9
a353440815 2022-08-12 17:14:51 +08:00
有朋友做这个的,楼主给个联系方式?
|
10
lysS 2022-08-12 17:17:08 +08:00
同态加密加密现在还处于 paper 阶段,而且限制挺大的
|
11
curran12 2022-08-12 17:27:46 +08:00
@codeklaus 我们这里做的 3 级等保,要求敏感数据(比如:身份证 /手机号字段)本身是被加密的,透明加密说过不了
|
12
V2Axiu 2022-08-12 17:29:41 +08:00
加密的数据如果是可以模糊查询的就不存在安全了- -
|
13
jhdxr 2022-08-12 17:31:33 +08:00
HE 的确可以,但 HE (假定讨论的是 FHE )因为理论上想要支持的是所有运算,效率也的确低。
LZ 说的这个其实是 SSE ( Searchable symmetric encryption )和 ASE ( Asymmetric Searchable Encryption )在解决的问题。我们之前做过 SSE 的 POC ,还是可以落地的。 上面还有人提到 FL ( Federated Learning ),这个就不是一回事了。这儿做的是 IR 而不是 ML 。 |
14
jhdxr 2022-08-12 17:39:07 +08:00
|
15
liuidetmks 2022-08-12 17:45:12 +08:00
简单搞的话,可以采用流加密代替分组加密 例如 salsa20 之类的
明文 ABCDEF 变成 123456 想搜 like %CDE% 就从秘文中搜 %345% 当然,密文可能要 base64 一下,base64 之后的搜索,记得 v 站有帖子 |
16
liuidetmks 2022-08-12 17:58:24 +08:00
@liuidetmks 好吧,有问题,不同位置的 cde 映射不一样
|
17
hxndg 2022-08-12 18:26:43 +08:00
Nmmmm ,敏感数据模糊检索什么?属性,能不能针对这种做类似加 label 或者属性的检索呢?
|
18
oneisall8955 2022-08-12 19:00:15 +08:00 via Android
看了楼上回复,把需求砍掉,只允许精准匹配,🐶
|
19
lookStupiToForce 2022-08-12 19:11:54 +08:00
砍掉需求+1
另外是不算办法的办法: 模糊匹配需求分段,行业通行惯例至少能让手机和身份证保留前后几位,那么就只让“模糊搜索”搜索保留的前后几位,中间*掉的部分如果也要搜索,就只能中间整块丢 hash 后再搜索,也就是说把这几块搜索全部变成精确匹配 进一步,你们可以按照上面的思想实现你们自己的加解密算法,反正只要能过等保的人就行,他们只不让存储明文,但没有说不让存储明文分段 hash 后的词组,搜索的时候用这个词组作倒排索引搜 |
20
sleepm 2022-08-12 19:21:55 +08:00 1
和 #19 一样
京东云鼎的做法是,手机号中间 4 位换成*,然后加个密文字段,拿着密文和订单号去获取真实手机号 所以模糊搜索也就只能后 4 位,前 3 位 |
21
aqqwiyth 2022-08-12 19:29:07 +08:00
电商的做法是做信息摘要实现查询
比如明文: v2ex.com 通过算法进行文本 摘要加密(v2) + 摘要加密(2e) + 摘要加密(x.)+....摘要加密(om) 两两结合成字符串进行查询. 得出一堆很长无意义的字符串 再对明文进行一次 完整的对称加密(如果有解密需要的话) 最终可以实现 类似 SQL 中 like %xx% 任意字符串的查询. 缺点是对低于 2 位以下的支持. |
22
itemqq 2022-08-12 22:53:48 +08:00
数据不特别多的话,放到 SGX Enclave 里就行
|
23
kenvix 2022-08-13 00:36:29 +08:00 via Android
不一定要砍掉需求,能不能简化问题,把**任意**模糊搜索改成**分块局部**精确匹配?
|
24
netnr 2022-08-13 05:53:16 +08:00 via Android
MySQL 有 AES 加密解密函数,我们打算用这个来做,而且性能还蛮高的
|
25
wangritian 2022-08-13 07:37:31 +08:00
我的解决办法是 where aes_decrypt(from_base64(name), '自定义密码') like '张%'
为了单条查询也使用索引,在业务代码使用和 mysql 相同的加密算法,=查询时直接提交密文 |
26
unco020511 2022-08-13 15:19:08 +08:00
身份证和手机号可以把中间脱敏,匹配前面+后面就可以模糊搜索了呀
|
27
flyingghost 2022-08-15 01:59:11 +08:00 1
目前可行的方案:
1 ,脱敏后模糊搜索。138****1234 ,脱敏后存明文。 2 ,砍需求,只支持全文匹配,库里存全文的 hash 。搜索时按输入 hash 去匹配。 3 ,原文求前缀子串 /任意子串后 hash 入库存储。搜索时按输入 hash 去匹配。 |
28
777777 2022-11-16 11:45:31 +08:00
simhash
|