CN113255007A - 一种安全隐匿三要素查询方法 - Google Patents
一种安全隐匿三要素查询方法 Download PDFInfo
- Publication number
- CN113255007A CN113255007A CN202110707687.2A CN202110707687A CN113255007A CN 113255007 A CN113255007 A CN 113255007A CN 202110707687 A CN202110707687 A CN 202110707687A CN 113255007 A CN113255007 A CN 113255007A
- Authority
- CN
- China
- Prior art keywords
- data
- party
- character string
- mobile phone
- inquiring
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6227—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6245—Protecting personal data, e.g. for financial or medical purposes
Abstract
本发明公开了一种安全隐匿三要素查询方法。它包括:预处理阶段:被查询方读取存储的三要素数据,将其拆分为三个子数据并进行哈希处理得到三个字符串数据,为每个字符串数据分配一个对应的密钥,计算出每个字符串数据对应的一级加密串,查询方在被查询方的配合下对一级加密串进行加密得到二级加密串;在线处理阶段:查询方读取输入的三要素数据,生成三个查询数据,分别进行哈希处理得到对应的三个查询字符串数据,计算出每个查询字符串数据对应的解密密钥发送到被查询方,被查询方查询后将查询结果发送到查询方。本发明在进行三要素查询时,隐匿查询条件,避免数据泄露,被查询方也无法记录不在其数据库内的查询信息,保护了用户隐私。
Description
技术领域
本发明涉及数据查询技术领域,尤其涉及一种安全隐匿三要素查询方法。
背景技术
在风控场景中,需要使用用户的姓名、身份证号、手机号作为三要素来验证用户的真实身份。一般情况下,被查询方拥有这类数据,查询方需要将三要素发送给被查询方,被查询方验证用户的姓名、身份证号、手机号是否真实正确。现有技术都是通过明文进行三要素查询,查询数据容易泄露,由于被查询方可以获得并记录查询方的查询信息,当查询方的查询信息不在被查询方的数据库内时,这些数据就会泄露给被查询方,从而暴露了用户隐私。
发明内容
本发明为了解决上述技术问题,提供了一种安全隐匿三要素查询方法,其在进行三要素查询时,能够隐匿查询条件,避免数据泄露,被查询方也无法记录不在其数据库内的查询信息,保护了用户隐私。
为了解决上述问题,本发明采用以下技术方案予以实现:
本发明的一种安全隐匿三要素查询方法,包括预处理阶段和在线处理阶段;
所述预处理阶段包括以下步骤:
M1:被查询方读取数据库内的三要素数据,每组三要素数据包括属于同一个人的姓名、身份证号、手机号,被查询方对每组三要素数据进行如下处理:根据每组三要素数据生成对应的三个子数据,三个子数据分别为手机号、(姓名,手机号)、(身份证号,手机号),对这三个子数据分别进行哈希处理得到对应的三个长度为β的字符串数据,将得到的字符串数据进行存储;
M2:被查询方为每个字符串数据分配一个对应唯一的密钥,并将生成的密钥存储,
第i个字符串数据bi对应的密钥为ki,,β表示密钥的长度,同时计算出每个字符
串数据对应的一级加密串,第i个字符串数据bi对应的一级加密串为ui,ui=ki⊕G(bi),G表示
哈希函数,⊕是异或运算符,被查询方对每个字符串数据进行布谷鸟哈希处理得到对应的
两个地址;
M3:查询方在被查询方的配合下对所有一级加密串分别进行加密得到二级加密串,第i个字符串数据bi对应的二级加密串为Qi,查询方将字符串数据对应的两个地址分别与该字符串数据对应的二级加密串建立对应关系并存储,查询方可根据二级加密串计算出查询数据对应的解密密钥,当查询方的查询数据与被查询方的某个子数据一致时,至少存在一个解密密钥与该子数据对应的密钥一致;
在线处理阶段:
N1:查询方读取输入的三要素数据,根据三要素数据生成三个查询数据,三个查询数据分别为手机号、(姓名,手机号)、(身份证号,手机号),对这三个查询数据分别进行哈希处理得到对应的三个长度为β的查询字符串数据,对每个查询字符串数据进行布谷鸟哈希处理得到对应的两个地址,根据这两个地址找到对应的所有二级加密串,根据每个查询字符串数据对应的所有二级加密串计算出对应的所有解密密钥并发送到被查询方;
N2:被查询方每接收到一个查询字符串数据对应的所有解密密钥就进行一次核验,方法如下:
被查询方查询是否有密钥与该查询字符串数据对应的解密密钥一致,如果被查询方存储的密钥中有密钥与该查询字符串数据对应的所有解密密钥中的一个一致,则判断该查询字符串数据对应的查询数据核验成功,如果被查询方存储的密钥中没有密钥与该查询字符串数据对应的所有解密密钥中的任意一个一致,则判断该查询字符串数据对应的查询数据核验失败,被查询方将查询结果发送到查询方。
在本方案中,预处理阶段,查询方配合被查询方对被查询方的数据库进行预处理,之后在线处理阶段,查询方发起查询请求,查询数据被加密隐匿后发送给被查询方,被查询方将查询结果发回给查询方,整个过程没有第三方参与,避免了数据泄露,三要素查询数据被加密隐匿,保护了数据安全,由于整个查询过程中都没有出现明文,所以当查询方的某个查询信息不在被查询方的数据库内时,被查询方也不能记录该查询信息,保护了用户隐私。由于预处理阶段已经完成了大部分的计算和通信,大大提高了查询效率。
作为优选,所述步骤M3包括以下步骤:
M31:被查询方生成一个参数gp并将其发送到查询方,g为整数,p为素数,查询方生
成一个向量S,,将向量S转换成向量L,方法如下:如果向量S的第j位为0,则向
量L的第j位,如果向量S的第j位为1,则向量L的第j位,为向量L的
第j位对应的整数,;
M32:查询方将向量L发送给被查询方,被查询方根据向量L为每个字符串数据生成
对应的中间参数组,第i个字符串数据bi对应的中间参数组为Ci,中间参数组Ci的生成方法
如下:根据向量L的每一位生成对应的两个参数,这些参数的集合构成中间参数组Ci,向量L
的第j位对应的两个参数为C0ij、C1ij,,,其中,r0、r1为整数,kij为ki第j位的值,uij为ui第j位的值;
M33:被查询方将与每个字符串数据对应的中间参数组及两个地址发送给查询方,查询方生成与每个中间参数组对应的二级加密串,将字符串数据对应的两个地址分别与该字符串数据对应的二级加密串建立对应关系并存储,计算中间参数组Ci对应的二级加密串Qi的方法包括以下步骤:
如果向量S的第j位为0,则参数Wi的第j位Wij为
如果向量S的第j位为1,则参数Wi的第j位Wij为
M34:查询方将生成的所有二级加密串及其对应的两个地址存储;
所述步骤N1中根据查询字符串数据对应的所有二级加密串计算出对应的所有解密密钥的方法包括以下步骤:
将每个二级加密串单独代入公式y=G(x)⊕Q得到对应的解密密钥,其中,x表示查询字符串数据,G表示哈希函数,y表示查询字符串数据对应的解密密钥,Q表示二级加密串。
作为优选,所述对手机号、(姓名,手机号)、(身份证号,手机号)三个数据进行哈希处理得到对应的三个长度为β的字符串数据的方法包括以下步骤:
对手机号进行SHA256处理转换成文本数据,然后对该文本数据进行DomainHash转换为长度为β的字符串数据;
将姓名在前手机号在后拼接在一起并进行SHA256处理转换成文本数据,然后对该文本数据进行DomainHash转换为长度为β的字符串数据;
将身份证号在前手机号在后拼接在一起并进行SHA256处理转换成文本数据,然后对该文本数据进行DomainHash转换为长度为β的字符串数据。
SHA256是一种摘要计算方法,可以将二进制数据转成文本数据,又能对原始数据进行脱敏,掩盖真实数据。使用DomainHash将文本数据转换为较短的固定长度的字符串数据, DomainHash可以将不同长度的数据通过哈希操作变成固定长度较短的字符串数据,这样的操作可以节省一半的内存和磁盘存储空间。
作为优选,所述步骤M1中将得到的字符串数据进行存储的方法包括以下步骤:将存储区域分割成128个子存储区,依次编号为1-128,将手机号进行SHA256处理得到的文本数据的最后一个字节做模128运算得到数值D,将含有该手机号的三个子数据对应的字符串数据存储到编号为数值D的子存储区;
所述步骤M2中被查询方将生成的密钥存储在对应字符串数据所在的子存储区;
所述N1还包括以下步骤:查询方将查询数据中的手机号进行SHA256处理得到的文本数据的最后一个字节做模128运算得到数值E,查询方将每个查询字符串数据对应的数值E、对应的所有解密密钥一起发送给被查询方;
所述步骤N2中被查询方查询是否有密钥与查询字符串数据对应的解密密钥一致的方法如下:被查询方将接收到的该查询字符串数据对应的所有解密密钥与编号为数值E的子存储区内的密钥进行比较,判断是否有密钥与所有解密密钥中的任意一个一致。
当被查询方有过亿数据时,数据量太大,会导致查询效率降到很低,分成128个子存储区之后,根据手机号的编码作为区分索引将数据分别存储在128个子存储区,相当于查询会在100000000/128的空间上进行,在保证隐匿性的前提下,极大的提高了查询效率。
作为优选,所述被查询方生成的密钥存储在所在子存储区的布隆过滤器内。
布隆过滤器的假阳性错误率估计为(1-exp(-mn/r))^m,其中m为哈希函数个数,n为集合元素个数,r为布隆过滤器的大小,因此在布隆过滤器初始化时,根据被查询方元素个数以及预期的误判率,生成布隆过滤器的哈希函数个数m,假设被查询方共有1000万条数据,布隆过滤器就会有1000万个元素通过m个哈希计算,之后缓存到磁盘。假设每条数据20个字节,那么经过第一步的DomainHash变成10个字节,而布隆过滤器每次Hash对于这10个字节只用1个Bit位来表示,那么m个Hash函数产生m个Bit位,一般情况下,1000万条数据使用30个左右的Hash函数, 也就是需要4个字节来存储一个20字节的数据的加密串,因此,缓存到磁盘的数据将节省5倍以上的空间。
作为优选,所述步骤N2中被查询方将查询结果发送到查询方的方法如下:
被查询方预先与查询方约定查询结果编码,查询结果编码包括000、110、101、111,000表示手机号不存在,110表示只有姓名和手机号匹配,101表示只有身份证号和手机号匹配,111表示姓名、身份证号、手机号都匹配;
当被查询方没有密钥与手机号查询数据对应的所有解密密钥中的任意一个一致时,被查询方发送000到查询方;
当被查询方有密钥与(姓名,手机号)查询数据对应的所有解密密钥中的任意一个一致且没有密钥与(身份证号,手机号)查询数据对应的所有解密密钥中的任意一个一致时,被查询方发送110到查询方;
当被查询方有密钥与(身份证号,手机号)查询数据对应的所有解密密钥中的任意一个一致且没有密钥与(姓名,手机号)查询数据对应的所有解密密钥中的任意一个一致时,被查询方发送101到查询方;
当被查询方有密钥与(身份证号,手机号)查询数据对应的所有解密密钥中的任意一个一致且有密钥与(姓名,手机号)查询数据对应的所有解密密钥中的任意一个一致时,被查询方发送111到查询方。
查询结果使用决策表来表示(id表示身份证号,pnum表示手机号、name表示姓名),决策表如表一所示:
pnum不存在 | name和pnum匹配 | id和pnum匹配 | 全部匹配 |
000 | 110 | 101 | 111 |
表一
决策表的好处在于使用很少的空间,就能节省查询次数。实际中我们需要知道如果不匹配是具体哪个因素不匹配,所以查询流程如下,如果得到的是110则得出的结论是手机号和姓名匹配但是身份证号和手机号不匹配。使用决策表的编码之后,一次请求就能得到结果,也节省了网络交互的成本。在公网环境中,网络的频繁交互,会导致请求的延迟很高。
本发明的有益效果是:在进行三要素查询时,能够隐匿查询条件,避免数据泄露,被查询方也无法记录不在其数据库内的查询信息,保护了用户隐私,整个过程无第三方参与。
附图说明
图1是实施例1的流程图。
具体实施方式
下面通过实施例,并结合附图,对本发明的技术方案作进一步具体的说明。
实施例1:本实施例的一种安全隐匿三要素查询方法,如图1所示,包括预处理阶段和在线处理阶段;
预处理阶段包括以下步骤:
M1:被查询方读取数据库内的三要素数据,每组三要素数据包括属于同一个人的姓名、身份证号、手机号,被查询方对每组三要素数据进行如下处理:根据每组三要素数据生成对应的三个子数据,三个子数据分别为手机号、(姓名,手机号)、(身份证号,手机号),对这三个子数据分别进行哈希处理得到对应的三个长度为β的字符串数据,将得到的字符串数据进行存储;
对手机号、(姓名,手机号)、(身份证号,手机号)三个数据进行哈希处理得到对应的三个长度为β的字符串数据的方法包括以下步骤:
对手机号进行SHA256处理转换成文本数据,然后对该文本数据进行DomainHash转换为长度为β的字符串数据;
将姓名在前手机号在后拼接在一起并进行SHA256处理转换成文本数据,然后对该文本数据进行DomainHash转换为长度为β的字符串数据;
将身份证号在前手机号在后拼接在一起并进行SHA256处理转换成文本数据,然后对该文本数据进行DomainHash转换为长度为β的字符串数据;
将得到的字符串数据进行存储的方法包括以下步骤:将存储区域分割成128个子存储区,依次编号为1-128,将手机号进行SHA256处理得到的文本数据的最后一个字节做模128运算得到数值D,将含有该手机号的三个子数据对应的字符串数据存储到编号为数值D的子存储区;
M2:被查询方为每个字符串数据分配一个对应唯一的密钥,并将生成的密钥存储
在对应字符串数据所在子存储区的布隆过滤器内,第i个字符串数据bi对应的密钥为ki,,β表示密钥的长度,β大于128,同时计算出每个字符串数据对应的一级加密
串,第i个字符串数据bi对应的一级加密串为ui,ui=ki⊕G(bi),G表示哈希函数,⊕是异或运
算符,被查询方对每个字符串数据进行布谷鸟哈希处理得到对应的两个地址;
M3:查询方在被查询方的配合下对所有一级加密串分别进行加密得到二级加密串,第i个字符串数据bi对应的二级加密串为Qi,查询方将字符串数据对应的两个地址分别与该字符串数据对应的二级加密串建立对应关系并存储,查询方可根据二级加密串计算出查询数据对应的解密密钥,当查询方的查询数据与被查询方的某个子数据一致时,至少存在一个解密密钥与该子数据对应的密钥一致,具体步骤如下:
M31:被查询方生成一个参数gp并将其发送到查询方,g为整数,p为素数,查询方生
成一个向量S,,将向量S转换成向量L,方法如下:如果向量S的第j位为0,则向
量L的第j位,如果向量S的第j位为1,则向量L的第j位,为向量L的
第j位对应的整数,;
M32:查询方将向量L发送给被查询方,被查询方根据向量L为每个字符串数据生成
对应的中间参数组,第i个字符串数据bi对应的中间参数组为Ci,中间参数组Ci的生成方法
如下:根据向量L的每一位生成对应的两个参数,这些参数的集合构成中间参数组Ci,向量L
的第j位对应的两个参数为C0ij、C1ij,,,其中,r0、r1为整数,kij为ki第j位的值,uij为ui第j位的值;
M33:被查询方将与每个字符串数据对应的中间参数组及两个地址发送给查询方,查询方生成与每个中间参数组对应的二级加密串,将字符串数据对应的两个地址分别与该字符串数据对应的二级加密串建立对应关系并存储,计算中间参数组Ci对应的二级加密串Qi的方法包括以下步骤:
如果向量S的第j位为0,则参数Wi的第j位Wij为
如果向量S的第j位为1,则参数Wi的第j位Wij为
M34:查询方将生成的所有二级加密串及其对应的两个地址存储;
在线处理阶段:
N1:查询方读取输入的三要素数据,根据三要素数据生成三个查询数据,三个查询数据分别为手机号、(姓名,手机号)、(身份证号,手机号),对这三个查询数据分别进行哈希处理(与步骤M1中的哈希处理一样)得到对应的三个长度为β的查询字符串数据,对每个查询字符串数据进行布谷鸟哈希处理(与步骤M2中的布谷鸟哈希处理方法一样)得到对应的两个地址,根据这两个地址找到对应的所有二级加密串,根据每个查询字符串数据对应的所有二级加密串计算出对应的所有解密密钥,查询方将查询数据中的手机号进行SHA256处理得到的文本数据的最后一个字节做模128运算得到数值E,查询方将每个查询字符串数据对应的数值E、对应的所有解密密钥一起发送给被查询方;
根据查询字符串数据对应的所有二级加密串计算出对应的所有解密密钥的方法包括以下步骤:
将每个二级加密串单独代入公式y=G(x)⊕Q得到对应的解密密钥,其中,x表示查询字符串数据,G表示哈希函数,y表示查询字符串数据对应的解密密钥,Q表示二级加密串;
N2:被查询方每接收到一个查询字符串数据对应的所有解密密钥就进行一次核验,方法如下:
被查询方将接收到的该查询字符串数据对应的所有解密密钥与编号为数值E的子存储区内的密钥进行比较,判断是否有密钥与所有解密密钥中的任意一个一致,如果被查询方存储的密钥中有密钥与该查询字符串数据对应的所有解密密钥中的任意一个一致,则判断该查询字符串数据对应的查询数据核验成功,如果被查询方存储的密钥中没有密钥与该查询字符串数据对应的所有解密密钥中的任意一个一致,则判断该查询字符串数据对应的查询数据核验失败,被查询方将查询结果发送到查询方。
在本方案中,预处理阶段,查询方配合被查询方对被查询方的数据库进行预处理,之后在线处理阶段,查询方发起查询请求,查询数据被加密隐匿后发送给被查询方,被查询方将查询结果发回给查询方,整个过程没有第三方参与,避免了数据泄露,三要素查询数据被加密隐匿,保护了数据安全,由于整个查询过程中都没有出现明文,所以当查询方的某个查询信息不在被查询方的数据库内时,被查询方也不能记录该查询信息,保护了用户隐私。由于预处理阶段已经完成了大部分的计算和通信,二级加密串存储之后,后续的在线处理阶段只需要读取二级加密串参与计算,就能很快的响应查询中的计算,大大提高了查询效率。
g为查询方与被查询方协商的一个整数,p为大素数,提高安全性。G为查询方与被查询方协商的一个哈希函数。SHA256是一种摘要计算方法,可以将二进制数据转成文本数据,又能对原始数据进行脱敏,掩盖真实数据。之后对手机号的SHA256结果的最后一个字节做模128运算,使用SHA256编码让数据能够顺利进行模128运算,而模128运算是以手机号的编码作为区分索引对数据进行分片存储。使用DomainHash将文本数据转换为较短的固定长度的字符串数据, DomainHash可以将不同长度的数据通过哈希操作变成固定长度较短的字符串数据,这样的操作可以节省一半的内存和磁盘存储空间。
当被查询方有过亿数据时,数据量太大,会导致查询效率降到很低,分成128个子存储区之后,根据手机号的编码作为区分索引将数据分别存储在128个子存储区,相当于查询会在100000000/128的空间上进行,在保证隐匿性的前提下,极大的提高了查询效率。
布隆过滤器的假阳性错误率估计为(1-exp(-mn/r))^m,其中m为哈希函数个数,n为集合元素个数,r为布隆过滤器的大小,因此在布隆过滤器初始化时,根据被查询方元素个数以及预期的误判率,生成布隆过滤器的哈希函数个数m,假设被查询方共有1000万条数据,布隆过滤器就会有1000万个元素通过m个哈希计算,之后缓存到磁盘。假设每条数据20个字节,那么经过第一步的DomainHash变成10个字节,而布隆过滤器每次Hash对于这10个字节只用1个Bit位来表示,那么m个Hash函数产生m个Bit位,一般情况下,1000万条数据使用30个左右的Hash函数, 也就是需要4个字节来存储一个20字节的数据的加密串,因此,缓存到磁盘的数据将节省5倍以上的空间。
步骤N2中被查询方将查询结果发送到查询方的方法如下:
被查询方预先与查询方约定查询结果编码,查询结果编码包括000、110、101、111,000表示手机号不存在,110表示只有姓名和手机号匹配,101表示只有身份证号和手机号匹配,111表示姓名、身份证号、手机号都匹配;
当被查询方没有密钥与手机号查询数据对应的所有解密密钥中的任意一个一致时,被查询方发送000到查询方;
当被查询方有密钥与(姓名,手机号)查询数据对应的所有解密密钥中的任意一个一致且没有密钥与(身份证号,手机号)查询数据对应的所有解密密钥中的任意一个一致时,被查询方发送110到查询方;
当被查询方有密钥与(身份证号,手机号)查询数据对应的所有解密密钥中的任意一个一致且没有密钥与(姓名,手机号)查询数据对应的所有解密密钥中的任意一个一致时,被查询方发送101到查询方;
当被查询方有密钥与(身份证号,手机号)查询数据对应的所有解密密钥中的任意一个一致且有密钥与(姓名,手机号)查询数据对应的所有解密密钥中的任意一个一致时,被查询方发送111到查询方。
查询结果使用决策表来表示(id表示身份证号,pnum表示手机号、name表示姓名),决策表如表一所示:
pnum不存在 | name和pnum匹配 | id和pnum匹配 | 全部匹配 |
000 | 110 | 101 | 111 |
表一
决策表的好处在于使用很少的空间,就能节省查询次数。实际中我们需要知道如果不匹配是具体哪个因素不匹配,所以查询流程如下,如果得到的是110则得出的结论是手机号和姓名匹配但是身份证号和手机号不匹配。使用决策表的编码之后,一次请求就能得到结果,也节省了网络交互的成本。在公网环境中,网络的频繁交互,会导致请求的延迟很高。
由于被查询方的数据被存储在128个子存储区,查询时可在对应存储区查找结果,预处理阶段已经完成了大部分的计算和通信,再加上布隆过滤器和决策表的引入,大大提高了查询效率,上亿级别数据量的三要素查询,网络传输量控制在工业化可接受的范围内,查询效率可控制在200ms以内。
实施例2:本实施例的方法与实施例1基本相同,不同之处在于:
步骤M3包括以下步骤:
M31:被查询方生成一个参数gp并将其发送到查询方,g为整数,p为素数,查询方生
成一个向量S,,将向量S转换成向量L,方法如下:如果向量S的第j位为0,则向
量L的第j位,如果向量S的第j位为1,则向量L的第j位,q为整数,;
M32:查询方将向量L发送给被查询方,被查询方根据向量L为每个字符串数据生成
对应的中间参数组,第i个字符串数据bi对应的中间参数组为Ci,中间参数组Ci的生成方法
如下:根据向量L的每一位生成对应的两个参数,这些参数的集合构成中间参数组Ci,向量L
的第j位对应的两个参数为C0ij、C1ij,,,其中,r0、r1为整数,kij为ki第j位的值,uij为ui第j位的值;
M33:被查询方将与每个字符串数据对应的中间参数组及两个地址发送给查询方,查询方生成与每个中间参数组对应的二级加密串,将字符串数据对应的两个地址分别与该字符串数据对应的二级加密串建立对应关系并存储,计算中间参数组Ci对应的二级加密串为Qi的方法包括以下步骤:
如果向量S的第j位为0,则参数Wi的第j位Wij为
如果向量S的第j位为1,则参数Wi的第j位Wij为
M34:将生成的所有二级加密串及其对应的两个地址存储。
Claims (6)
1.一种安全隐匿三要素查询方法,其特征在于,包括预处理阶段和在线处理阶段;
所述预处理阶段包括以下步骤:
M1:被查询方读取数据库内的三要素数据,每组三要素数据包括属于同一个人的姓名、身份证号、手机号,被查询方对每组三要素数据进行如下处理:根据每组三要素数据生成对应的三个子数据,三个子数据分别为手机号、(姓名,手机号)、(身份证号,手机号),对这三个子数据分别进行哈希处理得到对应的三个长度为β的字符串数据,将得到的字符串数据进行存储;
M2:被查询方为每个字符串数据分配一个对应唯一的密钥,并将生成的密钥存储,第i
个字符串数据bi对应的密钥为ki,,β表示密钥的长度,同时计算出每个字符串
数据对应的一级加密串,第i个字符串数据bi对应的一级加密串为ui,ui=ki⊕G(bi),G表示哈
希函数,⊕是异或运算符,被查询方对每个字符串数据进行布谷鸟哈希处理得到对应的两
个地址;
M3:查询方在被查询方的配合下对所有一级加密串分别进行加密得到二级加密串,第i个字符串数据bi对应的二级加密串为Qi,查询方将字符串数据对应的两个地址分别与该字符串数据对应的二级加密串建立对应关系并存储,查询方可根据二级加密串计算出查询数据对应的解密密钥,当查询方的查询数据与被查询方的某个子数据一致时,至少存在一个解密密钥与该子数据对应的密钥一致;
在线处理阶段:
N1:查询方读取输入的三要素数据,根据三要素数据生成三个查询数据,三个查询数据分别为手机号、(姓名,手机号)、(身份证号,手机号),对这三个查询数据分别进行哈希处理得到对应的三个长度为β的查询字符串数据,对每个查询字符串数据进行布谷鸟哈希处理得到对应的两个地址,根据这两个地址找到对应的所有二级加密串,根据每个查询字符串数据对应的所有二级加密串计算出对应的所有解密密钥并发送到被查询方;
N2:被查询方每接收到一个查询字符串数据对应的所有解密密钥就进行一次核验,方法如下:
被查询方查询是否有密钥与该查询字符串数据对应的解密密钥一致,如果被查询方存储的密钥中有密钥与该查询字符串数据对应的所有解密密钥中的一个一致,则判断该查询字符串数据对应的查询数据核验成功,如果被查询方存储的密钥中没有密钥与该查询字符串数据对应的所有解密密钥中的任意一个一致,则判断该查询字符串数据对应的查询数据核验失败,被查询方将查询结果发送到查询方。
2.根据权利要求1所述的一种安全隐匿三要素查询方法,其特征在于,所述步骤M3包括以下步骤:
M31:被查询方生成一个参数gp并将其发送到查询方,g为整数,p为素数,查询方生成一
个向量S,,将向量S转换成向量L,方法如下:如果向量S的第j位为0,则向量L的
第j位,如果向量S的第j位为1,则向量L的第j位,为向量L的第j位
对应的整数,;
M32:查询方将向量L发送给被查询方,被查询方根据向量L为每个字符串数据生成对应
的中间参数组,第i个字符串数据bi对应的中间参数组为Ci,中间参数组Ci的生成方法如下:
根据向量L的每一位生成对应的两个参数,这些参数的集合构成中间参数组Ci,向量L的第j
位对应的两个参数为C0ij、C1ij,,,其中,r0、r1为整数,kij为ki第j位的值,uij为ui第j位的值;
M33:被查询方将与每个字符串数据对应的中间参数组及两个地址发送给查询方,查询方生成与每个中间参数组对应的二级加密串,将字符串数据对应的两个地址分别与该字符串数据对应的二级加密串建立对应关系并存储,计算中间参数组Ci对应的二级加密串Qi的方法包括以下步骤:
如果向量S的第j位为0,则参数Wi的第j位Wij为
如果向量S的第j位为1,则参数Wi的第j位Wij为
M34:查询方将生成的所有二级加密串及其对应的两个地址存储;
所述步骤N1中根据查询字符串数据对应的所有二级加密串计算出对应的所有解密密钥的方法包括以下步骤:
将每个二级加密串单独代入公式y=G(x)⊕Q得到对应的解密密钥,其中,x表示查询字符串数据,G表示哈希函数,y表示查询字符串数据对应的解密密钥,Q表示二级加密串。
3.根据权利要求1或2所述的一种安全隐匿三要素查询方法,其特征在于,所述对手机号、(姓名,手机号)、(身份证号,手机号)三个数据进行哈希处理得到对应的三个长度为β的字符串数据的方法包括以下步骤:
对手机号进行SHA256处理转换成文本数据,然后对该文本数据进行DomainHash转换为长度为β的字符串数据;
将姓名在前手机号在后拼接在一起并进行SHA256处理转换成文本数据,然后对该文本数据进行DomainHash转换为长度为β的字符串数据;
将身份证号在前手机号在后拼接在一起并进行SHA256处理转换成文本数据,然后对该文本数据进行DomainHash转换为长度为β的字符串数据。
4.根据权利要求3所述的一种安全隐匿三要素查询方法,其特征在于,所述步骤M1中将得到的字符串数据进行存储的方法包括以下步骤:将存储区域分割成128个子存储区,依次编号为1-128,将手机号进行SHA256处理得到的文本数据的最后一个字节做模128运算得到数值D,将含有该手机号的三个子数据对应的字符串数据存储到编号为数值D的子存储区;
所述步骤M2中被查询方将生成的密钥存储在对应字符串数据所在的子存储区;
所述N1还包括以下步骤:查询方将查询数据中的手机号进行SHA256处理得到的文本数据的最后一个字节做模128运算得到数值E,查询方将每个查询字符串数据对应的数值E、对应的所有解密密钥一起发送给被查询方;
所述步骤N2中被查询方查询是否有密钥与查询字符串数据对应的解密密钥一致的方法如下:被查询方将接收到的该查询字符串数据对应的所有解密密钥与编号为数值E的子存储区内的密钥进行比较,判断是否有密钥与所有解密密钥中的任意一个一致。
5.根据权利要求4所述的一种安全隐匿三要素查询方法,其特征在于,所述被查询方生成的密钥存储在所在子存储区的布隆过滤器内。
6.根据权利要求1所述的一种安全隐匿三要素查询方法,其特征在于,所述步骤N2中被查询方将查询结果发送到查询方的方法如下:
被查询方预先与查询方约定查询结果编码,查询结果编码包括000、110、101、111,000表示手机号不存在,110表示只有姓名和手机号匹配,101表示只有身份证号和手机号匹配,111表示姓名、身份证号、手机号都匹配;
当被查询方没有密钥与手机号查询数据对应的所有解密密钥中的任意一个一致时,被查询方发送000到查询方;
当被查询方有密钥与(姓名,手机号)查询数据对应的所有解密密钥中的任意一个一致且没有密钥与(身份证号,手机号)查询数据对应的所有解密密钥中的任意一个一致时,被查询方发送110到查询方;
当被查询方有密钥与(身份证号,手机号)查询数据对应的所有解密密钥中的任意一个一致且没有密钥与(姓名,手机号)查询数据对应的所有解密密钥中的任意一个一致时,被查询方发送101到查询方;
当被查询方有密钥与(身份证号,手机号)查询数据对应的所有解密密钥中的任意一个一致且有密钥与(姓名,手机号)查询数据对应的所有解密密钥中的任意一个一致时,被查询方发送111到查询方。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110707687.2A CN113255007B (zh) | 2021-06-25 | 2021-06-25 | 一种安全隐匿三要素查询方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110707687.2A CN113255007B (zh) | 2021-06-25 | 2021-06-25 | 一种安全隐匿三要素查询方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113255007A true CN113255007A (zh) | 2021-08-13 |
CN113255007B CN113255007B (zh) | 2021-09-21 |
Family
ID=77189691
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110707687.2A Active CN113255007B (zh) | 2021-06-25 | 2021-06-25 | 一种安全隐匿三要素查询方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113255007B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114003938A (zh) * | 2021-11-11 | 2022-02-01 | 蓝象智联(杭州)科技有限公司 | 一种基于多头联盟的安全隐匿数据查询方法 |
CN115361218A (zh) * | 2022-08-23 | 2022-11-18 | 西安电子科技大学 | 一种具有查询隐匿特性的云端数据存在性验证方法 |
CN115906185A (zh) * | 2023-02-14 | 2023-04-04 | 蓝象智联(杭州)科技有限公司 | 一种批量隐匿查询方法、装置及存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110252033A1 (en) * | 2010-04-09 | 2011-10-13 | International Business Machines Corporation | System and method for multithreaded text indexing for next generation multi-core architectures |
CN105704024A (zh) * | 2014-11-28 | 2016-06-22 | 中兴通讯股份有限公司 | 跨域连接建立方法及装置 |
CN107454059A (zh) * | 2017-07-05 | 2017-12-08 | 广东工业大学 | 一种云储存环境下基于序列密码的搜索加密方法 |
CN107622096A (zh) * | 2017-08-31 | 2018-01-23 | 上海保险交易所股份有限公司 | 基于区块链系统的异步多方数据交互方法和存储介质 |
CN107741937A (zh) * | 2016-09-13 | 2018-02-27 | 腾讯科技(深圳)有限公司 | 一种数据查询方法及装置 |
CN107748782A (zh) * | 2017-10-20 | 2018-03-02 | 北京小度信息科技有限公司 | 查询语句处理方法及装置 |
CN111131145A (zh) * | 2019-11-08 | 2020-05-08 | 西安电子科技大学 | 一种隐匿通信关键节点的管理查询系统及方法 |
CN111460329A (zh) * | 2020-03-30 | 2020-07-28 | 鹏城实验室 | 信息查询方法、系统、终端及计算机存储介质 |
US20210004479A1 (en) * | 2018-08-30 | 2021-01-07 | Netskope, Inc. | Methods And Systems For Securing And Retrieving Sensitive Data Using lndexable Databases |
-
2021
- 2021-06-25 CN CN202110707687.2A patent/CN113255007B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110252033A1 (en) * | 2010-04-09 | 2011-10-13 | International Business Machines Corporation | System and method for multithreaded text indexing for next generation multi-core architectures |
CN105704024A (zh) * | 2014-11-28 | 2016-06-22 | 中兴通讯股份有限公司 | 跨域连接建立方法及装置 |
CN107741937A (zh) * | 2016-09-13 | 2018-02-27 | 腾讯科技(深圳)有限公司 | 一种数据查询方法及装置 |
CN107454059A (zh) * | 2017-07-05 | 2017-12-08 | 广东工业大学 | 一种云储存环境下基于序列密码的搜索加密方法 |
CN107622096A (zh) * | 2017-08-31 | 2018-01-23 | 上海保险交易所股份有限公司 | 基于区块链系统的异步多方数据交互方法和存储介质 |
CN107748782A (zh) * | 2017-10-20 | 2018-03-02 | 北京小度信息科技有限公司 | 查询语句处理方法及装置 |
US20210004479A1 (en) * | 2018-08-30 | 2021-01-07 | Netskope, Inc. | Methods And Systems For Securing And Retrieving Sensitive Data Using lndexable Databases |
CN111131145A (zh) * | 2019-11-08 | 2020-05-08 | 西安电子科技大学 | 一种隐匿通信关键节点的管理查询系统及方法 |
CN111460329A (zh) * | 2020-03-30 | 2020-07-28 | 鹏城实验室 | 信息查询方法、系统、终端及计算机存储介质 |
Non-Patent Citations (3)
Title |
---|
YUZHE TANG 等: "LIGHT: A Query-Efficient Yet Low-Maintenance Indexing Scheme over DHTs", 《IEEE TRANSACTIONS ON KNOWLEDGE AND DATA ENGINEERING》 * |
刘明达 等: "区块链在数据安全领域的研究进展", 《计算机学报》 * |
蒲海霞 等: "非结构化文本数据的GIS描述性查询方法", 《计算机应用》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114003938A (zh) * | 2021-11-11 | 2022-02-01 | 蓝象智联(杭州)科技有限公司 | 一种基于多头联盟的安全隐匿数据查询方法 |
CN114003938B (zh) * | 2021-11-11 | 2022-05-31 | 蓝象智联(杭州)科技有限公司 | 一种基于多头联盟的安全隐匿数据查询方法 |
CN115361218A (zh) * | 2022-08-23 | 2022-11-18 | 西安电子科技大学 | 一种具有查询隐匿特性的云端数据存在性验证方法 |
CN115361218B (zh) * | 2022-08-23 | 2024-02-23 | 西安电子科技大学 | 一种具有查询隐匿特性的云端数据存在性验证方法 |
CN115906185A (zh) * | 2023-02-14 | 2023-04-04 | 蓝象智联(杭州)科技有限公司 | 一种批量隐匿查询方法、装置及存储介质 |
CN115906185B (zh) * | 2023-02-14 | 2023-07-28 | 蓝象智联(杭州)科技有限公司 | 一种批量隐匿查询方法、装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113255007B (zh) | 2021-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113255007B (zh) | 一种安全隐匿三要素查询方法 | |
US9977918B2 (en) | Method and system for verifiable searchable symmetric encryption | |
CN112800088A (zh) | 基于双向安全索引的数据库密文检索系统及方法 | |
US10009169B2 (en) | Format-preserving cipher | |
CN102571357B (zh) | 一种签名的实现方法和装置 | |
CN106610995B (zh) | 一种创建密文索引的方法、装置及系统 | |
CN110795762B (zh) | 基于流密码的保留格式加密方法 | |
CN114756895B (zh) | 基于同态加密的匿踪数据核验方法及系统 | |
CN114036565A (zh) | 隐私信息检索系统及隐私信息检索方法 | |
CN113094747A (zh) | 一种图像查找方法、区块链、云服务器及图像查找装置 | |
CN113254955A (zh) | 前向安全的连接关键词对称可搜索加密方法、系统及应用 | |
CN114969128B (zh) | 一种基于安全多方计算技术的隐匿查询方法、系统和存储介质 | |
CN113343255A (zh) | 一种基于隐私保护的数据交互方法 | |
CN113065151A (zh) | 关系型数据库信息安全强化方法、系统、终端及存储介质 | |
CN116107967B (zh) | 基于同态加密和树结构的多关键词密文搜索方法及系统 | |
CN115766136A (zh) | 一种面向能源区块链监管数据的多关键字可搜索加密方法 | |
CN115422579A (zh) | 数据加密存储及存储后查询方法及系统 | |
CN114065169B (zh) | 一种隐私保护生物认证方法和装置、电子设备 | |
CN114710514A (zh) | 一种基于后量子门限签名的区块链共识系统 | |
CN114169888A (zh) | 一种通用型支持多重签名的加密货币保管方法 | |
CN113761229A (zh) | 一种加密邮件的搜索方法、搜索系统及相关组件 | |
Libed et al. | Enhancing MD5 Collision Susceptibility | |
CN116781234B (zh) | 基于伪随机乱序加密的财务数据共享方法及装置 | |
CN115361218B (zh) | 一种具有查询隐匿特性的云端数据存在性验证方法 | |
CN112711767B (zh) | 一种可验证且隐私保护的支持向量机分类方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |