一种隐私字符信息加密查询方法及系统技术领域
本发明属于加密领域,更具体地,涉及一种隐私字符信息加密查询方法及系统。
背景技术
随着互联网技术的迅猛发展,云数据库服务作为一种新型的数据服务形式,由于
其灵活性高、成本低等优势越来越受到人们欢迎,被广泛地应用,如各类企业信息管理系统
中。然而,不同于传统数据库,由于云数据库部署在不可信云端,这对企业信息管理系统的
各类用户隐私信息(如个人电话号码、身份证号等)构成了严重的安全威胁。更重要地是,这
种安全威胁无法通过传统的数据库安全策略(如身份认证、授权访问等)解决,也无法通过
传统的数据加密技术解决(加密后,定义在隐私数据上的查询操作将无法在密文上执行,即
密文查询问题)。因此,如何在不影响数据库查询有效性的前提下,保证存储在不可信云数
据库中各类隐私信息的安全性,是企业信息管理必须解决的问题。
为了确保云数据库中用户隐私数据的安全性,最自然解决方案就是数据加密。然
后,为了解决密文查询问题,可以先对密文解密,再在解密后的明文上查询。然而,这种方案
势必会严重降低数据查询效率,严重制约了其实际可用性。传统的同态加密算法允许部分
查询操作在密文上直接执行,而无需解密数据,但这种技术容易受到统计攻击。此外,研究
者还提出了其它的一些数据加密方法以支持密文查询,但存在安全性差或有效性差(即无
法支持一些常见的字符串查询)等缺点,因而,难以直接运用它们解决云数据库中的隐私数
据加密查询问题。最近,卢成浪等人在《针对网络信息系统的个人隐私保护方案》中提出为
密文数据建立特征索引,然后,在服务器端通过查询索引以过滤掉绝大部分的非目标元组,
较好地解决了查询有效性问题。然而,该工作给出的索引生成方案过于简单,严重降低了方
法的灵活性和安全性。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种隐私字符信息加密查询
方法及系统,其目的在于采用更加灵活的索引数据生成方案,由此在不影响查询高效性的
前提下,极大地提高方法的灵活性和安全性。优选配合相应的查询转换方案。
为实现上述目的,按照本发明的一个方面,提供了一种隐私字符信息加密查询方
法,其包括以下步骤:
(1)数据加密:将可信客户端提交的明文元组转换为密文元组;所述明文元组含有
隐私字段,其值优选为字符串;所述密文元组包括密文数据和索引数据;所述隐私字段被划
分为若干个子字段,其中每个子字段的值域被划分为若干个区域;所述索引数据为由该隐
私字段的值所在的各子字段的值域名称构成;
(2)查询转换:将原始查询条件转换索引查询条件,将其索引数据满足索引查询条
件的步骤(1)中获得的密文元组组成的元组集作为相关密文元组集,使得所述相关密文元
组集为原始查询结果转换为密文元组集的超集;
(3)数据解密:将步骤(2)中获得的相关密文元组集解密,获得明文形式的临时结
果;
(4)数据筛选:将步骤(3)中获得的临时结果进行执行原始查询条件得到目标明文
元组集,即数据筛选结果返回给用户。
优选地,所述隐私字符信息加密查询方法,其索引数据,按照如下方法建立:
对于给定的明文元组的隐私字段Ar,其可能的最大长度为nr;Ar值为ar,ar原始数据
为明文形式,加密后ar映射为索引值ax,记作ar按照如下方法生成:
ax=X(ar)
其中,X(ar)为索引映射函数,按照如下方法构造:
(1-1)构造隐私字段Ar的划分B1,B2,…,Bm(1≤m≤nr),其中nr为隐私字段Ar的最大
长度;
(1-2)构造步骤(1-1)中获得的子字段Bk(i=1,2,…,m)的值域的划分
并使得后一分区中的任意元素值均大于前一分区中的任一元素;
(1-3)对于步骤(1-2)获得的任意一个子字段Bk的各个分区分别
分配一个互不相同的唯一标识字符,记作即:
对于任意给定字段Bk的任一具体值bk,均可被映射为一个标识符其中
即确定了一个映射函数,记作Xk(bk)。
优选地,所述隐私字符信息加密查询方法,其,步骤(2)当查询条件为精确查询时,
将查询条件的常量字符串用步骤(1)中构建的索引映射函数映射为索引值作为索引查询条
件,将所有其索引值为所述索引查询条件的元组组成的元组集作为所述相关密文元组集。
优选地,所述隐私字符信息加密查询方法,步骤(2)当查询条件为模糊查询时,将
查询条件中的含有通配符的字符串按照子字段划分方法划分为变量子字符串和不含通配
符的常量子字符串;然后将所述变量字符串覆盖的子字段映射为相应通配符,将所述常量
字符串映射为所述标识符,将所述通配符和标识符顺序组成索引查询字符串,从而将所述
查询条件转换为索引查询条件。
优选地,所述隐私字符信息加密查询方法,其当所述通配符匹配任意长度字符串,
将查询条件中的含有通配符的字符串划分为靠左或靠右的常量子字符串以及变量子字符
串,将所述常量子字符串映射成的标识符靠左或靠右的与变量字符串映射成的匹配任意长
度字符串的通配符组合为索引查询字符串。
优选地,所述隐私字符信息加密查询方法,其当所述通配符匹配任意字符时,将查
询条件中含有通配符的字符串划分为靠左的常量子字符串和/或靠右的常量字符串以及变
量子字符串,将所述常量子字符串映射成标识符靠左和/或靠右的与变量字符串映射成的
匹配任意字符的通配符组合为索引查询字符串。
优选地,所述隐私字符信息加密查询方法,其当所述通配符匹配列表p里的一个字
符,即为[p]时,将符合所述查询条件的字符串常量集合用步骤(1)中构建的映射函数分别
映射为索引值的或运算作为索引查询字符串集合。
优选地,所述隐私字符信息加密查询方法,其其特征在于,当查询条件为范围查询
时,范围查询的一般形式为R.Ar≥a,其中a表示字符串常量,
将查询条件进行转换,具体如下:
其中b1,b2,…,bn为字符串常量a完整覆盖了n个子字段B1,B2,…,Bn(1≤n≤m)对应
的值,为子字段Bi的最大取值,next(bi)为Bi中大于bi的最小取值。
按照本发明的另一个方面,提供了一种隐私字符信息加密查询系统,其包括数据
加密部件、查询转换部件、数据解密部件、以及数据筛选部件;
所述数据加密部件,用于将可信客户端提交的明文元组转换为密文元组;所述明
文元组含有隐私字段,其值优选为字符串;所述密文元组包括密文数据和索引数据;
所述查询转换部件,用于将原始查询条件转换索引查询条件,将其索引数据满足
索引查询条件的所述密文元组组成的元组集作为相关密文元组集,使得所述相关密文元组
集为原始查询结果转换为密文元组集的超集;
所述数据解密部件,用于将所述查询转换部件得到的相关密文元组集解密,获得
明文形式的临时结果;
所述数据筛选部件,用于将所述临时结果进行执行原始查询条件得到目标明文元
组集,即数据筛选结果返回给用户。
优选地,所述隐私字符信息加密查询系统,其所述查询转换部件,包括精确查询子
部件、模糊查询子部件、以及范围查询子部件;所述精确查询子部件,用于将字符串常量映
射为索引查询条件;所述模糊查询子部件,包括任意长度字符串通配符模块、任意一个字符
通配符模块、以及列表中任意一个字符通配符模块:所述任意长度字符串通配符模块用于
将含有任意长度字符串通配符的字符串转换为索引查询条件;所述列表中任意一个字符通
配符模块用于将含有任意一个字符通配符的字符串转换为索引查询条件;所述列表中任意
一个字符通配符模块用于将含有列表中任意一个字符通配符的字符串转换为索引查询条
件;所述范围查询子部件用于获取范围查询的索引查询条件。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有
益效果:
(1)安全性,即难以根据索引数据获知字符串的敏感信息;(2)有效性,即能够支持
常见的字符串查询条件(包括相似查询和范围查询);(3)高效性,即能在云端过滤掉绝大部
分的非目标元组,极大地提高数据查询效率;(4)灵活性,即能够根据字符串的分布情况,灵
活设置相关参数,协调安全性和高效性。
附图说明
图1是本发明提供的隐私字符信息加密查询方法的流程图;
图2是本发明提供的隐私字符信息加密查询系统的机构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对
本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并
不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要
彼此之间未构成冲突就可以相互组合。
本发明提供的隐私字符信息加密查询方法,如图1所示,包括以下步骤:
(1)数据加密:将可信客户端提交的明文元组转换为密文元组;所述明文元组含有
隐私字段,其值优选为字符串;所述密文元组包括密文数据和索引数据;所述隐私字段被划
分为若干个子字段,其中每个子字段的值域被划分为若干个区域;所述索引数据为由该隐
私字段的值所在的各子字段的值域名称构成;;
所述将可信客户端提交的明文形式的隐私的字符串转换为密文数据,具体为:
对于存储明文形式元组的关系表R(A1,A2,…,Ar,…),其中Ar是明文形式的隐私字
段,存储明文形式元组的隐私字符串;存储加密后的密文元组的加密关系表为
其中RE中新增的密文字段其类型优选为二进制型,用于
存储由R中整个元组加密后得到的密文元组,RE中新增的索引字段用于存储对应隐私字
段Ar的索引数据,优选其类型与隐私字段Ar保持一致;RE中其余字段与R中的原有字段保持
一致,但删除隐私字段Ar。
所述加密采用的加密算法,优选AES(Advanced Encryption Standard)算法。
所述索引数据,按照如下方法建立:
对于给定的明文关系表R的隐私字段Ar,其可能的最大长度为nr;Ar值为ar,ar原始
数据为明文形式,加密后ar映射为索引值ax,记作ar按照如下方法生成:
ax=X(ar)
其中,X(ar)为索引映射函数,按照如下方法构造:
(1-1)构造隐私字段Ar的划分B1,B2,…,Bm(1≤m≤nr),其中nr为隐私字段Ar的最大
长度;
即将最大长度为nr隐私字段Ar划分为m个子字段,记作:B1,B2,…,Bm(1≤m≤nr),并
且使这些子字段满足以下3个条件:
A1、任意子字段不为空集,即任意子字段的长度均不为零,也即:
A2、各个子字段互不相交,即:
A3、各个子字段的并集等于隐私字段Ar,即:
(1-2)构造步骤(1-1)中获得的子字段Bk(i=1,2,…,m)的值域的划分
并使得后一分区中的任意元素值均大于前一分区中的任一元素;
即将子字段Bk(i=1,2,…,m)子字段各个字符单位所有可能取值所构成的集合进
行分区,即:
对于任意子字段Bk,其值域记作domain(Bk),将domain(Bk)分成nk个分区,记作:
是的所述分区满足以下4个条件:
B1、任一分区均不为空集,即:
B2、各个分区互不相交,即:
B3、各个分区的并集等于该子字段Bk的值域,即:
B4、各个分区中任意元素的值均大于其前一分区中所有元素的值,即:
(1-3)对于步骤(1-2)获得的任意一个子字段Bk的各个分区分别
分配一个互不相同的唯一标识字符,记作即:
至此,对于任意给定字段Bk的任一具体值bk(它通常由若干个字符构成),均可被映
射为一个标识符其中即确定了一个映射函数,记
作Xk(bk)。给定定义在隐私字段Ar上的任意值ar,其覆盖了隐私字段Ar的n个子字段B1,
B2,…,Bn(1≤n≤m),各个子字段的取值分别是b1,b2,…,bn,即ar=b1b2…bn,则Ar的索引值
为:
ax=X(ar)=X1(b1)X2(b2)…Xn(bn)。
(2)查询转换:将原始查询条件转换索引查询条件,将其索引数据满足索引查询条
件的步骤(1)中获得的密文元组组成的元组集作为相关密文元组集,使得所述相关密文元
组集为原始查询结果转换为密文元组集的超集;
所述将原始查询条件转换为索引查询条件,优选地对于不同的查询条件,分别按
照以下方法获取:
(2-1)当查询条件为精确查询时,步骤(2)当查询条件为精确查询时,将查询条件
的常量字符串用步骤(1)中构建的索引映射函数映射为索引值作为索引查询条件,将所有
其索引值为所述索引查询条件的元组组成的元组集作为所述相关密文元组集。
具体的,将原始查询条件转换为索引查询条件步骤为:
精确查询R.Ar=a,其中a表示字符串常量,Ar为隐私字段;索引查询条件具体如下:
其中b1,b2,…,bn为常量a覆盖的隐私字段Ar的划分的子字段值,即a=b1b2…bn。
(2-2)当查询条件为模糊查询时,步骤(2)当查询条件为模糊查询时,将查询条件
中的含有通配符的字符串按照子字段划分方法划分为变量子字符串和不含通配符的常量
子字符串;然后将所述变量字符串覆盖的子字段映射为相应通配符,将所述常量字符串映
射为所述标识符,将所述通配符和标识符顺序组成索引查询字符串,从而将所述查询条件
转换为索引查询条件。
具体地,一般形式为R.ArLIKE a,根据通配符的类型,将查询条件进行转换;所述
通配符包括三种:任意长度的字符串,记作“%”;任意一个字符,记作“_”;给定列表中的一
个字符,记作“[p]”,其中p为所述列表。
当所述通配符匹配任意长度字符串,即为“%”时,将查询条件中的含有通配符的
字符串划分为靠左或靠右的常量子字符串以及变量子字符串,将所述常量子字符串映射成
的标识符靠左或靠右的与变量字符串映射成的匹配任意长度字符串的通配符组合为索引
查询字符串。
具体地,将靠左的常量字符串用步骤(1)中构建的索引映射函数映射得到的索引
值与任意长度的通配符组合或任意长度的通配符与将靠右的常量字符串用步骤(1)中构建
的索引映射函数映射得到的索引值的或运算作为索引查询条件;
具体的,将原始查询条件转换为索引查询条件步骤为:
或:
其中,b1,b2,…,bn(1≤n≤m)为常量a靠左完整覆盖了n个子字段B1,B2,…,Bn(1≤n
≤m)的值,bi,bi+1,…,bm(1≤i≤m)为常量a靠右完整覆盖了(n-i+1)个子字段Bi,Bi+1,…,Bm
的值。
当所述通配符匹配任意字符,即为“_”时,将查询条件中含有通配符的字符串划分
为靠左的常量子字符串和/或靠右的常量字符串以及变量子字符串,将所述常量子字符串
映射成标识符靠左和/或靠右的与变量字符串映射成的匹配任意字符的通配符组合为索引
查询字符串;
具体的,将原始查询条件转换为索引查询条件步骤为:
其中:
ax=X1(b1)X2(b2)…Xi-1(bi-1)且bx=Xi+1(bi+1)Xi+2(bi+2)…Xn(bn);字符串a_b完整覆
盖了n个子字段B1,B2,…,Bn(1≤n≤m),其中,Bi(1≤i≤n)为包含通配符“_”的子字段。并假
定a_b对应于子字段B1,B2,…,Bi-1的值分别为b1,b2,…,bi-1,对应于子字段Bi+1,Bi+2,…,Bn的
值分别为bi+1,bi+2,…,bn。
当所述通配符匹配列表p里的一个字符,即为[p]时,当所述通配符匹配列表p里的
一个字符,即为[p]时,将符合所述查询条件的字符串常量集合用步骤(1)中构建的映射函
数分别映射为索引值的或运算作为索引查询字符串集合。
具体的,将原始查询条件转换为索引查询条件步骤为:
其中,p=p1p2…pt,R.Ar=aptb按照精确查询即步骤(2-1)进行转换。
(2-3)当查询条件为范围查询时,范围查询的一般形式为R.Ar≥a,其中a表示字符
串常量,根据所述字符串常量覆盖的子字段,获取每个子字段可能值的列表,从而将所述范
围查询转换为各子字段可能值的列表通配符与任意字符串通配符组成的模糊查询的集合,
模糊查询的转换方法转换为索引查询条件。即查询条件中含有关系运算符(大于或小于关
系运算),将符合所述查询条件转换为模糊查询条件转换的或运算作为索引查询条件。
将查询条件进行转换,具体如下:
其中b1,b2,…,bn为字符串常量a完整覆盖了n个子字段B1,B2,…,Bn(1≤n≤m)对应
的值,为子字段Bi的最大取值,next(bi)为Bi中大于bi的最小取值。对于不小于a的任
意字符串a′=b1′b2′…bz′(1≤z≤m),必然有:(next(b1)≤b1′);或(b1=b1′∧next(b2)≤
b2′);……;或(b1=b1′∧b2=b2′∧…∧bk-1=b′k-1∧next(bk)≤bk′),其中,k=max(n,z)。
(3)数据解密:将步骤(2)中获得的相关密文元组集解密,获得明文形式的临时结
果;
(4)数据筛选:将步骤(3)中获得的临时结果进行执行原始查询条件得到目标明文
元组集,即数据筛选结果返回给用户。
本发明提供的隐私字符信息加密查询系统,如图2所示,包括数据加密部件、查询
转换部件、数据解密部件、以及数据筛选部件;
所述数据加密部件,用于将可信客户端提交的明文元组转换为密文元组;所述明
文元组含有隐私字段,其值优选为字符串;所述密文元组包括密文数据和索引数据;
所述查询转换部件,用于将原始查询条件转换索引查询条件,将其索引数据满足
索引查询条件的所述密文元组组成的元组集作为相关密文元组集,使得所述相关密文元组
集为原始查询结果转换为密文元组集的超集;
所述查询转换部件,包括精确查询子部件、模糊查询子部件、以及范围查询子部
件;所述精确查询子部件,用于将字符串常量映射为索引查询条件;所述模糊查询子部件,
包括任意长度字符串通配符模块、任意一个字符通配符模块、以及列表中任意一个字符通
配符模块:所述任意长度字符串通配符模块用于将含有任意长度字符串通配符的字符串转
换为索引查询条件;所述列表中任意一个字符通配符模块用于将含有任意一个字符通配符
的字符串转换为索引查询条件;所述列表中任意一个字符通配符模块用于将含有列表中任
意一个字符通配符的字符串转换为索引查询条件;所述范围查询子部件用于获取范围查询
的索引查询条件。
所述数据解密部件,用于将所述查询转换部件得到的相关密文元组集解密,获得
明文形式的临时结果;
所述数据筛选部件,用于将所述临时结果进行执行原始查询条件得到目标明文元
组集,即数据筛选结果返回给用户。
本发明提供的隐私字符信息加密查询方法及系统,采用的索引数据生成方法,为
“多对一”映射,即一个索引值对应多个明文值,即使利用攻击方法(如统计攻击、已知明文
攻击等)获知了映射函数,也难以根据索引值获知相应的明文。隐私字段各个子字段的包含
的字符越大(即分区规模越大),则一个索引值对应的明文值就越多,从而索引的安全性也
就越好。因此,可以通过适当提高各子字段的规模,获取更好的安全性。
现有技术虽然难以根据索引值获知具体的明文值,但是攻击者还是可以根据索引
值获取一些明文的相关敏感信息,例如,可以获知明文的长度(索引值与明文值具有相同的
长度)。而本发明由于对隐私字段进行了划分,避免了这个问题,方法更加灵活。相比于现有
技术,攻击者更加难以获知本发明所构建的索引映射函数。例如,对于电话号码的例子,根
据已知明文攻击法,攻击者最少只需要知道5个从明文到索引的二元映射组,就可以获知简
单分区法的映射函数,而对于复合分区法,由于各个子字段独立分区(即分区各不相同),攻
击者需要知道大量的明文及其相应的索引值,才可能获知映射函数。因此,本发明具有更高
的安全性。
相比于现有技术,本发明拥有更好的灵活性,能更好地的满足实际的应用需求。例
如,对于电话号码字段,虽然每个字符单位均拥有相同的值域(均是从0到9),但实际上它们
的取值却并不一致(如第一位字符只能是1)。在复合分区法中,让用户可以根据实际需要先
进行子字段划分,从而使得每个子字段均可拥有相似规模的值域。此外,本发明还可以根据
用户需要,将敏感的子字段划分粗些,以获得更好的数据安全性,将不敏感的子字段划分细
些,以获得更好的查询高效性。
以下为实施例:
实施例1
一种隐私字符信息加密查询方法,包括以下步骤:
(1)数据加密:将可信客户端提交的明文元组转换为密文元组;所述明文元组含有
隐私字段,其值优选为字符串;所述密文元组包括密文数据和索引数据;
所述将可信客户端提交的明文形式的隐私的字符串转换为密文数据,具体为:
对于明文形式的联系方式信息R(A1,A2,…,Ar,…),其中Ar是明文形式的手机号
码,字符串类型,由11位字符构成,其中,前2位只能是13、15、17或18,剩余的9位可以为字符
0至9的任意取值。加密后的密文元组为其中RE中新增的密文
字段其类型优选为二进制型,用于存储由R中整个元组加密后得到的密文数据,RE中新
增的索引字段用于存储对应隐私字段Ar的索引数据,优选其类型与隐私字段Ar保持一
致;RE中其余字段与R中的原有字段保持一致,但删除隐私字段Ar。
所述加密采用的AES加密算法。
所述索引数据,按照如下方法建立:
对于给定的明文元组R的手机号码字段Ar,其可能的最大长度为nr=11;Ar值为ar,
ar原始数据为明文形式,加密后ar映射为索引值ax,记作ar按照如下方法生成:
ax=X(ar)
其中,X(ar)为索引映射函数,按照如下方法构造:
(1-1)构造隐私字段Ar的划分B1,B2,…,Bm(1≤m≤nr),其中nr为隐私字段Ar的最大
长度;
将隐私字段划分成3个子字段(即m=3),且|B1|=3,|B2|=4,|B3|=4;
(1-2)构造步骤(1-1)中获得的子字段Bk(i=1,2,…,m)的值域的划分
并使得后一分区中的任意元素值均大于前一分区中的任一元素;
即将子字段Bk(i=1,2,…,m)子字段各个字符单位所有可能取值所构成的集合进
行分区,即:
对各个子字段进行分区。假定子字段B1被划分2个分区,子字段B2被划分10个分区,
子字段B3被划分20个分区,分别如下:
(1-3)对于步骤(1-2)获得的任意一个子字段Bk的各个分区分别
分配一个互不相同的唯一标识字符,记作即:
分区标识符分别如下:
至此,对于任意给定字段Bk的任一具体值bk(它通常由若干个字符构成),均可被映
射为一个标识符其中即确定了一个映射函数,记
作Xk(bk)。给定定义在隐私字段Ar上的任意值ar,其覆盖了隐私字段Ar的n个子字段B1,
B2,…,Bn(1≤n≤m),各个子字段的取值分别是b1,b2,…,bn,即ar=b1b2…bn,则Ar的索引值
为:
ax=X(ar)=X1(b1)X2(b2)…Xn(bn)。
例如:ar=‘155 6123 4890’,映射得到索引值ax=X(ar)=‘1Gj’。
(2)查询转换:将原始查询条件转换索引查询条件,将其索引数据满足索引查询条
件的步骤(1)中获得的密文元组组成的元组集作为相关密文元组集,使得所述相关密文元
组集为原始查询结果转换为密文元组集的超集;
所述将原始查询条件转换为索引查询条件,优选地对于不同的查询条件,分别按
照以下方法获取:
(2-1)当查询条件为精确查询时,将查询条件的常量字符串用步骤(1)中构建的索
引映射函数映射为索引值作为索引查询条件,将所有其索引值为所述索引查询条件的元组
组成的元组集作为所述相关密文元组集;
具体的,将原始查询条件转换为索引查询条件步骤为:
精确查询R.Ar=a,其中a表示字符串常量,Ar为隐私字段;当a=‘155 6123 4890’,
映射得到索引值a=‘1Gj’
将所有其索引值为‘1Gj’的密文元组作为相关密文元组集。
例如对于精确查询条件:R.Ar=‘155 6123 4890’,我们首选运用索引函数将字符
串常量‘155 6123 4890’映射为索引值‘1Gj’,然后,生成索引查询条件:
(2-2)当查询条件为模糊查询时,即查询条件中含有通配符,一般形式为R.Ar
LIKE a,根据通配符的类型,将查询条件进行转换;所述通配符包括三种:任意长度的字符
串,记作“%”;任意一个字符,记作“_”;给定列表中的一个字符,记作“[p]”,其中p为所述列
表。
例如对于模糊查询条件:R.Ar LIKE‘155 6123 4%’,首先字符串常量′155 6123
4′从左自右共覆盖了两个子字段B1和B2,它们的索引值分别为′1′和′G′。所以,生成索引查
询条件:
例如对于模糊查询条件:R.Ar LIKE‘155 612_4890’,首先字符串常量′155 612_
4890′从左自右共覆盖了三个子字段B1、B2和B3,其中B2包含通配符,′155′和′4890′索引值
分别为′1′和′j′。所以,生成索引查询条件:
匹配列表例如对于模糊查询条件:R.Ar LIKE‘155[06]123 4890’,首先可以将模
糊查询条件改写成:
R.Ar=‘155 0123 4890’OR R.Ar=‘155 6123 4890’
然后运用精确查询条件转换,将R.Ar=‘155 0123 4890’和R.Ar=‘155 6123
4890’分别转换为索引查询条件。所以,生成的最终索引查询条件为:OR
(2-3)当查询条件为范围查询时
例如对于范围查询条件:R.Ar>‘155 6123 8890’。
首先,字符串常量‘155 6123 8890完整覆盖了3个子字段B1,B2,B3,它对应于各个
子字段的值分别为’155’,’6123’,’8890。3个子字段B1,B2,B3的最大取值分别为’189’,’
9999,’9999,子字段B1中大于’155’的最小取值为’156’,子字段B2中大于’6123’的最小取值
为’6124’,子字段B3中大于’8890的最小取值为’8891。
所以,范围查询条件:R.Ar>‘155 6123 8890’等价于:
R.ArLIKE[156-189]%ORR.ArLIKE 155[6124-9999]%OR
R.ArLIKE[8891-9999]%
最后,运用基于通配符“[p]”的模糊查询条件,可生成的最终索引查询条件如下:
OROROR
OROR
OROR
(3)数据解密:将步骤(2)中获得的相关密文元组集解密,获得明文形式的临时结
果;
(4)数据筛选:将步骤(3)中获得的临时结果进行执行原始查询条件得到目标明文
元组集,即数据筛选结果返回给用户。
实施例2
一种隐私字符信息加密查询,包括数据加密部件、查询转换部件、数据解密部件、
以及数据筛选部件;
所述数据加密部件,用于将可信客户端提交的明文元组转换为密文元组;所述明
文元组含有隐私字段,其值优选为字符串;所述密文元组包括密文数据和索引数据;
所述查询转换部件,用于将原始查询条件转换索引查询条件,将其索引数据满足
索引查询条件的所述密文元组组成的元组集作为相关密文元组集,使得所述相关密文元组
集为原始查询结果转换为密文元组集的超集;
所述查询转换部件,包括精确查询子部件、模糊查询子部件、以及范围查询子部
件;所述精确查询子部件,用于按照实施例1步骤(2-1)中的方法将字符串常量映射为索引
查询条件;
所述模糊查询子部件,包括任意长度字符串通配符模块、任意一个字符通配符模
块、以及列表中任意一个字符通配符模块:
所述任意长度字符串通配符模块用于按照实施例1步骤(2-2)中含有匹配任意长
度字符串通配符“%”的查询条件转换方法,将含有任意长度字符串通配符的字符串转换为
索引查询条件;
所述列表中任意一个字符通配符模块用于按照实施例1步骤(2-2)中含有匹配任
意一个字符通配符“_”的查询条件转换方法,将含有任意一个字符通配符的字符串转换为
索引查询条件;
所述列表中任意一个字符通配符模块用于按照实施例1步骤(2-2)中含有匹配列
表中任意一个字符通配符“[p]”的查询条件转换方法,将含有列表中任意一个字符通配符
的字符串转换为索引查询条件;
所述范围查询子部件用于获取范围查询的索引查询条件。
所述数据解密部件,用于将所述查询转换部件得到的相关密文元组集解密,获得
明文形式的临时结果;
所述数据筛选部件,用于将所述临时结果进行执行原始查询条件得到目标明文元
组集,即数据筛选结果返回给用户。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以
限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含
在本发明的保护范围之内。