发明内容
本发明是为了解决现有网络信息系统中对个人隐私数据保护过程中存在难以支持各类常见文本查询,查询性能差,安全性较差的不足,提供一种能支持各类常见文本查询、查询性能高、安全性好的一种网络信息系统中服务器端的个人隐私数据保护方法。
为了实现上述目的,本发明采用以下技术方案:
一种网络信息系统中服务器端的个人隐私数据保护方法,在网络信息系统的客户端和服务器端之间布置一层中间软件,并且所述中间软件与客户端运行在同一台机单元上;在客户端的中间软件中设有一个“元数据”的内部数据结构单元,用于保存加密索引、查询转换、数据解密等过程中所需要的各类参数信息;
中间软件的数据加密单元包括加密函数E和索引函数X,其中,加密函数E使用传统分组加密算法将用户通过客户端输入的各类隐私数据U转换为密文E(U),而索引函数X负责为隐私数据U建立合适的索引X(U),然后把密文E(U)连同相应的索引X(U)一起存放到服务器端数据库中;
中间软件的查询转换单元将客户端所提交的定义在隐私数据U之上的数据库查询操作Q转化为能在服务器端数据库中相应的索引X(U)上正确执行的新查询QE,使得数据库能通过执行新查询QE来过滤掉数据表中大部分不满足数据库查询操作Q的非目标记录;
中间软件的数据解密单元包括解密函数,数据解密单元负责解密服务器端所返回的密文E(U),并将密文E(U)解密后的隐私数据U存放到临时结果库中,作为数据筛选单元的输入;
由中间软件的数据筛选单元重新执行客户端所提交的定义在隐私数据U上的原始查询Q,让数据库查询操作Q对存放到临时结果库中的隐私数据U重新进行一次筛选,进一步过滤掉不满足数据库查询操作Q的非目标记录,从而得到精确的目标结果M,并把精确的目标结果M返回给客户端的用户。
本方案通过中间软件能支持各类常见文本查询、查询性能高、安全性好,并通过“元数据”的数据结构来保存各类隐私数据在存储、解密转换以及查询过程中的各类信息,使得本方案对常见文本数据的查询性能高、查询准确高效且简单灵活、安全性好。
作为优选,在服务器端的数据库中,除了存储密文E(U)之外还附加存储了隐私数据U的索引X(U),用户在客户端提交的定义在明文隐私数据U上的原始查询Q是无法在密文E(U)上直接执行的,但可将定义在明文隐私数据U上的原始查询Q转换为定义在索引X(U)上的新查询QE,然后再提交给服务器端执行,该过程要求:新查询QE所返回的中间结果不仅包括原始查询Q的精确结果,还尽可能的接近精确结果,所以,如何把密文E(U)和索引X(U)存放到服务器端数据库中、如何为隐私数据U建立对应的密文E(U)和索引X(U)、如何将用户原始查询Q转换为新查询QE,以及如何通过执行新查询获取用户查询的精确结果,它们的解决方案如下:
(1)把密文E(U)和索引X(U)存放到服务器端数据库中的方案为:首先要改造服务器端数据库中的原有关系模式R,以存储密文E(U)和索引X(U),假设在服务器端数据库中存在着一个原有关系模式R为R(A1,A2,...,Ar,...),其中,Ar存储的是隐私数据,因此,Ar是需要进行加密处理的敏感属性,则改造后的加密关系模式RE为其中:加密关系模式RE中的密文属性用于存储原有关系模式R中的敏感属性Ar加密后得到的密文E(U);在加密关系模式RE中新增的索引属性用来存储对应的索引X(U),并且索引属性的类型与敏感属性Ar的类型保持一致,加密关系模式RE中的其余属性与原有关系模式R中对应的原有属性保持一致;
(2)为隐私数据U建立对应的密文E(U)和索引X(U)的方案为:在服务器端数据库中的加密关系模式RE建立完成后,数据加密单元运用加密函数E为隐私数据U建立对应的密文E(U),数据加密单元运用索引函数X为隐私数据U建立对应的索引X(U),并分别将密文E(U)和索引X(U)存储到加密关系模式RE中的密文属性和索引属性中;其中为隐私数据U建立对应的索引X(U)共需三个步骤:
(步骤1)系统管理员预先离线手动设定的参数包括隐私数据U的单位值域和隐私数据U的安全系数μ,
(步骤1.1)为各类隐私数据U设定单位值域的过程为:对于某类给定的隐私数据U,假定该隐私数据U最多包含个字符,则该类隐私数据U最多可以划分为n个字符单位,记作:(P1,P2,...,Pn),系统管理员需要为各个字符单位预先设定所有可能的取值,所有可能的取值即为隐私数据U的单位值域,记作:dom(P1),dom(P2),...,dom(Pn);
(步骤1.2)为各类隐私数据U设定安全系数安全系数值越大,则表示生成的索引X(U)的安全性越好,安全系数的取值范围为:
对于不同类别的隐私数据U需要分别设定单位值域和安全系数μ,并把单位值域和安全系数μ作为“元数据”保存在客户端;
(步骤2)为各类隐私数据U自动构造索引函数X的过程为:首先确定隐私数据U各个字符单位的分区数,然后确定各个字符单位的分区过程,最后为各个字符单位建立对应的分区分配标识,并把分区数、分区过程和分区分配标识的信息作为“元数据”保存在可信任的客户端中;
(步骤2.1)根据为各类隐私数据U预先设定的单位值域和安全系数μ,为隐私数据U的各个字符单位Pi(i=1,2,...,n)自动分配一个分区数num(Pi),该分区数满足三个条件:
一是各个字符单位的分区数必须为正整数,即
二是各个字符单位的分区数必须小于其单位值域的大小,即||dom(Pi)||≥num(Pi);
三是各个字符单位的分区数的连乘与安全系数μ的积,必须小于各个字符单位值域大小的连乘,即
(步骤2.2)根据分区数num(Pi),按照近似等宽策略或近似等深策略的划分过程,将各隐私数据U的单位值域dom(Pi)划分成若干个子集,该子集即为分区,记作:该分区要求满足四个条件:
一是各个分区不能为空,即
二是各个分区互不相交,即
三是所有分区的并集等于单位值域,即
四是分区中任意元素的值大于分区中所有元素的值,即
(步骤2.3)从划分得到的各个分区中分别分配一个字符值作为分区的标识,该标识要求满足两个条件:
一是对于来自同一个单位值域的任意两个分区标识互不相等,即
二是任意单位值域的任意分区的标识值均落在同一个取值范围,且满足:
,其中,θ为随机数;
至此,步骤2实际上构造了n个映射函数:X(1),X(2),...,X(n),这些映射函数均能将任意给定的字符u映射为一个新的字符:
(步骤3)对于用户通过客户端所提交的一条隐私数据U,其形式为:U=u1u2...um(m≤n),按照如下步骤将其映射为索引值;
(步骤3.1)将隐私数据U中的各个字符ui(i=1,2,...,m),按照其在字符单位Pi中所属的分区,将其映射为一个新的字符:X(i)(ui);
(步骤3.2)隐私数据U的索引值为:
X(U)=X(1)(u1)X(2)(u2)...X(m)(um);
(3)将用户原始查询Q转换为新查询QE的方案为:查询转换单元应用查询转换方案对用户原始查询Q进行转换,生成能够在服务器端的索引上正确执行的新查询QE;定义在文本型隐私数据上的原始查询Q的查询形式包括:精确查询、相似查询和范围查询,它们的转换过程如下:
(3.1)精确查询条件转换;精确查询条件的形式一般为:R.Ai=U,其中,U为隐私数据的文本常量,R.Ai是涉及隐私数据U的敏感属性Ar,精确查询条件的转换过程需要使用相应的索引函数X对文本常量做变换,若文本常量是U=u1u2...um(m≤n),则精确查询条件转换为:
其中,trans表示转换函数;
(3.2)基于通配符“_”的相似查询条件转换;其一般形式为:
R.AiLIKE U_V(其中,LIKE表示“相似”,为SQL关键字),若文本常量为:
U=u1u2...um,V=v1v2...vz(m+2≤n-1;0≤z;0≤m),
则相似查询条件转换为:
其中:
(3.3)基于通配符“[]”的相似查询条件转换,其一般形式为:R.AiLIKE U[L]V,若文本常量U=u1u2...um,V=v1v2...vz,字符列表L=l1l2...lt,则相似查询条件转换为:
其中:
(3.4)基于通配符“%”的相似查询条件转换,其一般形式为:R.Ai LIKE U%V,若文本常量U=u1u2...um,V=v1v2...vz,则相似查询条件转换为:
其中:
特殊地,如果(z=0),则相似查询条件可简单地转换为:
特殊地,如果(m=0),则相似查询条件可简单地转换为:
(3.5)范围查询条件转换,范围查询条件的一般形式为:R.Ai≥U,若U=u1u2...um,记字符单位Pi(i=1,2,...,n)中,编码值最大字符为vi,即则范围查询条件转换为:
trans(R.AiLIKE u1[(u2+1)-v2]%)OR,
trans(R.AiLIKE u1u2[(u3+1)-v3]%)OR...OR,
trans(R.AiLIKE u1u2...um-1[um-vm]%):
(4)获取用户查询精确结果的方案通过两阶段数据查询过程实现:首先,在服务器端执行数据查询的粗糙查询,即让服务器端通过在后台数据库上执行查询转换单元所生成的新查询,过滤掉绝大部分的非目标记录,从而获得用户查询的一个粗糙结果集,并把粗糙结果集返回给客户端;然后,数据解密单元基于保存在客户端中的“元数据”,对粗糙结果集进行解密,并将得到的明文记录集写入到临时结果库中;最后,在客户端执行数据查询的精确查询,即让数据筛选单元在临时结果库上再执行一次用户查询,把不符合条件的非目标记录进一步过滤掉,从而得到用户查询的精确结果集,并把精确结果集返回给用户。
本方案通过改造服务器端数据库模式、通过为隐私数据U建立对应的密文E(U)和索引X(U)、通过数据查询转换和两阶段数据查询,使得本方案能够有效地支持各类常见的文本的查询,并且查询准确高效、简单灵活、安全性好。
本发明能达到如下效果:
1、本发明是在网络信息系统的客户端和服务器端之间布置一层中间软件,即隐私数据保护软件。该中间软件与可信的网络信息系统的客户端运行在同一台机单元上,负责实施本发明所提供的个人隐私数据保护实现方法,本发明在网络信息系统中对个人隐私数据保护过程中,能够支持各类常见文本查询,查询性能灵活,安全性好,还能够有效地解决网络信息系统的个人隐私保护问题,无需对原有系统进行二次开发,且基本不影响原有系统的数据查询效率。
2.本发明不同于传统加密算法,索引函数是多对一映射,即不同的隐私数据可被映射为同一索引值。因而,即使攻击者已经成功破解了索引函数,即攻击者成功获取保存在可信客户端中的所有“元数据”信息(实际上,破解索引函数也并不容易),也难以根据索引值恢复出原始的隐私数据,从而保证了索引数据的安全性,能很好地抵抗常见的外部攻击,如统计攻击、已知明文攻击等。因而,相比已有技术,具有更好的安全性。
3.基于本发明所生成的索引,各类定义在隐私数据之上的原始文本查询均能够有效地转换成定义在相应索引上的新查询,从而,使得新查询可以在系统服务器端执行。基于本发明设计的索引方案,常见的文本查询均能正确转换为索引上的新查询,包括精确查询、相似查询和范围查询等。因而,相比已有技术,能够支持更多的文本查询,具有更好的查询有效性。
4.本发明通过执行定义在索引上的新查询,服务单元能够过滤掉数据库中不满足条件的绝大部分非目标记录。根据实验,对于所有的精确查询,99%以上的非目标记录均能在服务器端被过滤掉;对于绝大多数的相似查询和范围查询,90%以上的非目标记录均能在服务器端被过滤掉。因为加密而导致的用户查询执行效率的下降比例,近似地反比于服务器端对非目标记录的过滤比例。因而,本发明具有较好的高效性。
实施例:一种网络信息系统中服务器端的个人隐私数据保护方法。参见图2所示,针对网络信息系统中个人隐私保护问题,本实施例所提供的解决方案为,在网络信息系统的客户端和服务器端之间布置一层中间软件,即个人隐私数据保护软件。该中间软件与可信的网络信息系统的客户端运行在同一台机单元上,负责实施本发明所提供的个人隐私数据保护实现过程,以完成两项功能:
一是将外部用户通过网络信息系统的客户端输入的隐私数据加密成密文后存放到网络信息系统的服务器端的后台数据库中,从而有效防止网络信息系统内部用户窃取后台数据库中的个人隐私数据,确保了个人隐私数据信息的安全性。
二是为各类个人隐私数据建立合适的索引,并连同密文一起存放到服务器端数据库中,以支持各类个人隐私数据的查询。索引不同于密文,后台数据库可以在索引上直接执行各类个人隐私数据的查询,而无需解密密文,从而提高了网络中客户端外部用户对个人隐私数据的查询效率。本实施例中的隐私数据即为个人隐私数据。
图2展示了本发明所提供的网络信息系统个人隐私保护方法的总体框架。它主要由四大功能部件组成,即数据加密单元、查询转换单元、数据解密单元和数据筛选单元。
1.数据加密单元:主要由加密函数E和索引函数X组成,其中,加密函数E使用传统分组加密算法将用户提交的隐私数据U转换为密文E(U),而索引函数X负责为隐私数据U据建立索引X(U)。最后密文E(U)连同相应的索引X(U)一起,存放到网络信息系统的服务器端的后台数据库中,存放到网络信息系统的服务器端的数据库服务器中。
2.查询转换单元:主要负责将网络信息系统的客户端所提交的定义在隐私数据U之上的数据库查询操作Q(它为SQL查询)转化为能在服务器端数据库中相应的索引X(U)上正确执行的新查询QE,使得数据库可以通过执行新查询QE来过滤掉数据表中大部分的非目标记录(即不满足数据库查询操作Q的记录)。
3.数据解密单元:主要由解密函数组成,负责解密网络信息系统的服务器端所返回的密文RE(密文RE由服务器端通过在索引上执行查询转换单元所生成的新查询QE而得到),并将解密后的隐私数据存放到临时结果库中,作为数据筛选单元的输入。
4.数据筛选单元:重新执行客户端所提交的定义在隐私数据上的原始查询Q,对临时结果库中的隐私数据重新进行一次筛选,进一步过滤掉不满足数据库查询操作Q的非目标记录,从而得到精确的目标结果M,返回给网络信息系统的客户端的外部用户。
此外,在系统客户端中,还需要一个“元数据”的内部数据结构,用于保存密文、索引、查询转换、数据解密等过程中所需要的各类参数信息。
从图2可以看出,在网络信息系统的服务器端数据库中,除了存储密文之外,还附加存储了隐私数据的索引。在网络信息系统的服务器端,用户提交的定义在隐私数据之上的数据库查询操作Q是无法在密文上直接执行的,但可以转换为定义在索引之上的新查询QE来执行。为了保证查询有效性和高效性,要求:系统服务器端通过执行新查询QE所返回的中间结果不仅必须蕴含数据库查询操作Q的精确结果(以保证查询有效性),而且还应该尽可能地接近精确结果(以保证查询高效性)。
因此,如何为网络信息系统中的各类隐私数据设计合理有效的加密索引过程,以及如何将定义在隐私数据上的各类查询操作正确转换为定义在索引上的新查询QE(即查询转换过程),以确保隐私数据的安全性和查询的高效性,是本发明的核心关键。本发明的主要内容正是围绕着两者而进行(即图2中的数据加密单元和查询转换单元)。
(1)密文存储过程:
首先,改造网络信息系统的服务器端后台数据库中的原有关系模式,以存储数据加密单元为个人隐私数据所生成的密文和索引。
假设在网络信息系统的服务器端数据库中存在着一个关系模式
R(A1,A2,...,Ar,...),
其中,Ar存储个人隐私数据的密文,因而,是需要进行加密处理的敏感属性。则改造后的加密关系模式为
其中:
1.加密关系模式RE中的密文属性(其类型为变长二进制型-VARBINARY)用于存储由R中的敏感属性Ar加密后得到的密文。
2.加密关系模式RE中新增索引属性用于存储对应的索引(其类型与敏感属性Ar保持一致,一般为变长文本型-VARCHAR)。
3.加密关系模式RE中其余属性与R中的原有属性保持一致。
例子1)假设信息系统服务器端后台数据库中存在一个用户信息表:PERSONS(NO,PHONE,…),其中,属性PHONE涉及个人隐私,因而需要加密。则改造后的用户信息表为:PERSONS_E(NO,PHONE_E,PHONE_X,…),其中,属性PHONE_E存储由敏感属性PHONE加密后得到的密文,而属性PHONE_X则存储相应的索引。具体请见图3所示。
(2)数据加密索引过程:
在网络信息系统后台数据库中的敏感关系模式改造完成后,数据加密单元负责实施个人隐私加密索引过程,运用加密函数E将存储有个人隐私信息的敏感属性Ar加密为密文并运用索引函数X为其建立索引
数据加密单元的工作流程如下:在外部用户通过客户端提交个人隐私数据后,首先,数据加密单元对插入语句(INSERT语句)进行词法分析,提取其中的隐私数据;然后,调用加密函数和索引函数对隐私数据进行加密索引;最后,重新生成新的数据插入语句,提交给系统服务端,从而将密文和索引添加到后台数据库中。
例子2)假定外部用户通过客户端提交了一条定义在用户信息表(PERSONS)上的数据插入语句,如下:
INSERT INTO PERSONS(NO,PHONE,…)VALUES(1,‘13587898721’,…);
则数据加密单元将重新构造生成一条定义在改造后的用户信息表(PERSONS_E)上的新的数据插入语句:
INSERT INTO PERSONS_E(NO,PHONE_E,PHONE_X,…)
VALUES(1,E(‘13587898721’),X(‘13587898721’)…)。
因此,数据加密单元的核心组件是:为各类个人隐私数据,分别提供相应的加密函数和索引函数。加密函数可以直接采用传统的分组加密算法(如AES、DES算法等)。目前分组加密算法已非常成熟,可以很好地保证密文的安全性。
为此,本发明主要着重索引函数的建立过程。为各类个人隐私数据,建立索引函数,需要三个步骤:
步骤1.系统管理员为各类个人隐私数据,预先手动设定参数。
步骤2.基于这些参数,为各类个人隐私数据,系统自动构造其索引函数。
步骤3.对于用户给定的任意隐私数据,系统自动生成其对应的索引数据。
其中,步骤1和步骤2是用户提交个人隐私数据之前,预先离线完成;而步骤3则是用户提交个人隐私数据之后,实时在线完成。以下详细说明这三个步骤。
步骤1)系统管理员预先为各类个人隐私数据,手动设定两类参数:隐私数据单位值域和个人隐私安全系数。
步骤1.1)为各类个人隐私数据,设定单位值域。对于某类给定的个人隐私数据,假定它最多包含个字符,则该类个人隐私数据最多可以划分为n个字符单位,记作:(P1,P2,...,Pn)。系统管理员需要为各个字符单位预先设定所有可能的取值(称作单位值域),记作:dom(P1),dom(P2),...,dom(Pn)。
例子3)手机号码由11个字符构成,因而可划分成11个单位:(P1,P2,...,P11)。由于手机号码的起始两位字符只能是13、15或18,可设定各个字符单位的值域如下:
dom(P1)={1};dom(P2)={3,5,8};
dom(P3)=dom(P4)...=dom(P11)={0,1,2,...,9}。
步骤1.2)为各类个人隐私数据,设定安全系数其值越大,则表示生成的索引的安全性越好。安全系数的取值范围为:
例子4)对于手机号码,按照例子3所设定的单位值域,其隐私安全参数的取值范围为:1×3×109≥μ≥1,因而,可设定:μ=10。
以上的参数设定过程,是在网络信息系统隐私保护过程真正运行之前由系统管理员预先完成,并且对于不同类别的个人隐私数据,需要分别设定单位值域和安全系数(一般互不相同)。为了保证索引函数的正确性,系统管理员需要设定正确的参数。这些参数均作为“元数据”保存在系统客户端。
步骤2)为各类个人隐私数据,自动构造索引函数。首先,确定隐私数据各个字符单位的分区数;然后,确定各单位的分区过程;最后,为各单位的各分区分配标识。
步骤2.1)根据步骤1.1为个人隐私数据所设定的单位值域,以及步骤1.2所设定的安全系数,为隐私数据的各个字符单位Pi(i=1,2,...,n)自动分配一个分区数num(Pi),要求满足如下三个条件:
1.各个字符单位的分区数必须为正整数,即
2.各个字符单位的分区数必须小于其单位值域的大小,即||dom(Pi)||≥num(Pi)。
3.各个字符单位的分区数的连乘与安全系数的积,必须小于各个字符单位值域大小的连乘,即
例子5)对于手机号码,按照例子3的单位值域设定和例子4的安全系数设定,其十一个字符单位的分区数可分别设定如下:
num(P1)=1;num(P2)=3;
num(P3)=num(P4)=num(P5)=num(P6)=5;
num(P7)=num(P8)=num(P9)=num(P10)=num(P11)=10。
隐私数据各个字符单位分区数的设定过程并不是唯一的。本发明使用算法1为个人隐私数据的各个字符单位,自动设定分区数,见表1所示。
表1:个人隐私数据的各个字符单位自动设定的分区数
步骤2.2)根据步骤2.1为字符单位所设定的分区数,按照一定的划分策略(如近似等宽策略或近似等深策略)将各单位值域dom(Pi),划分成若干个子集(称作分区),记作:
要求满足如下四个条件:
1.各个分区不能为空,即
2.各个分区互不相交,即
3.所有分区的并集等于单位值域,即
4.分区中任意元素的值大于分区中所有元素的值,即
例子6)按照例子5所设定的单位分区数,可以采用近似等宽策略将手机号码的十一个单位值域分别划分成一系列的分区,如表2所示。
表2:一种电话号码的单位分区过程和分区标识分配过程
表3:设定个人隐私数据各个单位的分区
步骤2.3)为步骤2.2划分得到的各个分区分别分配一个字符值作为的标识,要求满足如下两个条件:
1.对于来自同一个单位的任意两个分区,标识互不相等,即
2.任意单位的任意分区的标识值均落在同一个取值范围,且满足
,其中,θ为随机数。
例子7)对于手机号码,按照例子6为各个单位值域所确定的分区过程,可以为各个分区分配如表2所示的标识(见表列“标识”)。
表4:设定个人隐私数据各个单位各个分区的标识
个人隐私数据各个字符单位的分区过程以及分区标识的分配过程,均不是唯一的。本发明使用算法2为个人隐私数据的各个字符单位,自动设定分区,使用算法3为各个分区自动分配标识。这些分区信息和标识信息均作为“元数据”保存在系统客户端。
至此,步骤2实际上构造了n个映射函数:X(1),X(2),...,X(n)。它们均可以将任意给定的字符u映射为一个新的字符:
步骤3)对于用户通过客户端所提交的一条隐私数据:U=u1u2...um(m≤n),可以按照如下步骤将其映射为索引值。
步骤3.1)将隐私数据中的各个字符ui(i=1,2,...,m),按照其在字符单位Pi中所属的分区,将其映射为一个新的字符:X(i)(ui)。
步骤3.2)隐私数据的索引值为:
X(U)=X(1)(u1)X(2)(u2)...X(m)(um)。
例子8)对于给定的手机号码:U=13587898721,按照表2所设定的单位分区过程和分区标识分配过程,该手机号码被映射为索引值:
X(13587898721)=X(1)(1)X(2)(3)X(3)(5)...X(11)(1)=90035961222。
(3)数据查询转换过程:
查询转换单元负责应用查询转换方案对用户查询进行转换,生成能够在服务器端的索引上正确执行的新查询。该过程要求:新查询在索引上的执行结果必须是用户查询精确结果的超集(即图2中步骤5所得到的密文记录集,必须包含所有的目标记录)。
查询转换单元的工作流程如下:在外部用户通过客户端提交数据查询后,首先,对用户查询进行语法分析,提取所有基本查询条件;然后,对于各个基本查询条件,若它与敏感属性相关,则应用查询转换方案将它转换为定义在加密关系模式中相应索引属性上的新条件;最后,基于查询语句的语法结构,重新合并各个基本查询条件,生成新查询。
例子9)假定外部用户通过客户端提交了一条定义在用户信息表(PERSONS)上的数据查询语句,如下:
SELECT P.NO,P.PHONE FROM PERSONS P WHERE P.PHONE=‘13587898721’
则查询转换单元重新生成一条新的定义在加密用户信息表上的数据查询语句:
SELECT P.N0,P.PHONE X FROM PERSONS E P
WHERE P.PHONE_X=‘90035961222’。
因此,查询转换单元的核心组件是:一系列针对各种基本查询条件的转换过程。文本型数据(个人隐私数据为文本型)的基本查询形式有:精确查询、相似查询和范围查询,它们的查询转换过程各不相同。但同样要求:对于服务器端数据库中的记录,若其敏感属性值满足原查询条件,则其索引属性值必须满足转换生成的新查询条件,使得新查询的结果是用户查询精确结果的超集。基于此要求,以下分别给出它们的转换过程。
1)精确查询条件转换过程:精确查询条件的形式一般为:R.Ai=U,其中,U为文本常量,R.Ai是涉及个人隐私的敏感属性。精确查询条件的转换过程比较简单,只需要使用相应的索引函数把对文本常量做变换即可。若文本常量U=u1u2...um(m≤n),则精确查询条件转换如下:
例子10)假设存在一个定义在例子1给出的用户信息表上的精确查询条件如下:
PERSONS.PHONE=‘13587898721’。
按照表2所设定的单位分区过程和分区标识分配过程,转换后的新查询条件如下:
PERSONS_E.PHONE_X=‘90035961222’。
基于相似查询条件涉及的SQL通配符主要有三类:
1.“%”(表示匹配任意多个字符)。
2.“_”(表示仅匹配一个字符)。
3.“[CharList]”(表示匹配字符列表CharList中的任何单一字符)。
以下,分别给出基于它们的相似查询条件的转换过程。
2)基于通配符“_”的相似查询条件转换。其一般形式为:R.AiLIKE U_V,若文本常量
U=u1u2...um,V=v1v2...vz(m+z≤n-1;0≤z;0≤m),则查询条件转换如下:
其中:
例子11)假设存在一个定义在例子1给出的用户信息表上的相似查询条件如下:
PERSONS.PHONE LIKE‘1358789_721’。
按照表2设定的子段分区过程和分区标识分配过程,转换后的新查询条件如下:
PERSONS_E.PHONE_X LIKE‘9003596_222’。
3)基于通配符“[]”的相似查询条件转换。其一般形式为:R.AiLIKE U[L]V,若文本常量U=u1u2...um,V=v1v2...vz,字符列表L=l1l2...lt,则查询条件转换如下:
其中:
例子12)假设存在一个定义在例子1给出的用户信息表上的相似查询条件如下:
PERSONS.PHONE LIKE‘13587898[789]21’。
按照表2设定的子段分区过程和分区标识分配过程,则转换后的新查询条件如下:
PERSONS_E.PHONE_X LIKE‘90035961[210]22’
4)基于通配符“%”的相似查询条件转换。其一般形式为:R.AiLIKE U%V,若文本常量U=u1u2...um,V=v1v2...vz,则查询条件转换如下:
其中:
特殊地,如果(z=0),则查询条件可简单地转换如下:
特殊地,如果(m=0),则查询条件可简单地转换如下:
例子13)假设存在三个定义在例子1给出的用户信息表上的相似查询条件如下:
1.PERSONS.PHONE LIKE‘135%’。
2.PERSONS.PHONE LIKE‘%8721’。
3.PERSONS.PHONE LIKE‘135%98721’。
按照表2设定的子段分区过程和分区标识分配过程,则转换后的新查询条件如下:
1.PERSONS_E.PHONE_X LIKE‘900%’。
2.PERSONS_E.PHONE_X LIKE‘%1222’。
3.PERSONS_E.PHONE_X LIKE‘900_89448’OR
PERSONS_E.PHONE_X LIKE‘900__95971’OR
PERSONS_E.PHONE_X LIKE‘900___61222’。
5)范围查询条件转换。范围条件的一般形式为:R.Ai≥U。若U=u1u2...um,记字符单位Pi(i=1,2,...,n)中,编码值最大字符为vi,即则查询条件转换如下:
trans(R.AiLIKE u1[(u2+1)-v2]%)OR
trans(R.AiLIKE u1u2[(u3+1)-v3]%)OR...OR
trans(R.AiLIKE u1u2...um-1[um-vm]%)
例子14)假设存在一个定义在例子1给出的用户信息表上的相似查询条件如下:
PERSONS.PHONE>=‘13587’。
按照表2设定的子段分区过程和分区标识分配过程,则转换后的新查询条件如下:
PERSONS_X.PHONE_X LIKE‘9[79]%’OR
PERSONS_X.PHONE_X LIKE‘90[59]%’0R
PERSONS_X.PHONE_X LIKE‘900[3]%’OR
PERSONS_X.PHONE_X LIKE‘9003[58]%’。
(4)两阶段数据查询过程:
本发明所采用的数据查询过程(针对图2的步骤5和6)比较简单,简要描述如下。
步骤1)系统服务器端通过在后台数据库上,执行查询转换单元所生成的新查询,过滤掉绝大部分的非目标记录,从而获得用户查询的一个粗糙结果集,返回给系统客户端。
步骤2)数据解密单元基于保存在客户端中“元数据”,对粗糙结果集进行解密,并将得到明文记录集写入到临时结果库中。
步骤3)最后,数据筛选单元在临时结果库上再执行一次用户查询,把不符合条件的非目标记录进一步过滤掉,从而得到用户查询的精确结果集,返回给用户。
整个过程共进行了两次查询操作,即在服务器端执行的粗糙查询和在客户端执行的精确查询,称作:两阶段数据查询。
上面结合附图描述了本发明的实施方式,但实现时不受上述实施例限制,本领域普通技术人员可以在所附权利要求的范围内做出各种变化或修改。