专利名称:一种密文数据库隐私保护查询方法
技术领域:
本发明涉及数据库以及信息安全技术,尤其涉及一种密文数据库的查询方法。
背景技术:
随着信息技术的不断发展,数据库系统的应用日益普及,利用数据库系统实 现数据共享,可以使人们的日常生活和工作更加方便、快捷,但同时也给非正 当地获取数据库的数据信息提供了更多的机会,数据库系统中的敏感数据保护 问题日趋严重。
在诸多针对敏感数据的保护方法中,对数据库中的数据信息进行加密是一 种非常有效的方案。但是另一方面,数据库中的数据经过加密后,原来相同的 关键字可能变成了不同的密文信息,关键字之间的序关系也被破坏,从而使基 于这些关键字进行查询的算法无法正常工作,如何在不对密文数据进行解密的 条件下,针对密文数据进行查询是一项富有挑战性的工作。近几年,国内外学 者围绕该问题进行了一系列的研究工作,并取得了一些成果,其中主要包括 基于对称密码的隐私保护数据査询方法;基于公钥密码的隐私保护数据査询方 法;基于同态加密理论,对有序数据进行保序加密的数据査询方法。
隐私保护数据査询方法可应用于涉及政府、企业和个人的敏感数据的信息 系统中,实现对不同部门、不同类型和不同涉密级别的分类管理,使不同的用 户在査询同一个数据库,甚至是同一张数据表中的信息时,可使用的信息量各 不相同。例如,在医院的电子病历管理系统中,通过使用本方案可以使患者的电子病历只可由患者本人、该患者的主治医牛、该主治医生所在科室的主管医 生,以及分管医疗的院长查看,包括数据库管理员在内的其他人均无法査看该 患者的病历信息。最理想的情况下,可以实现该患者不同病症的主治医生和该 主治医生所在科室的主管医生只能查看其负责诊治的病症对应的病历,该患者 的其他病症的病历记录无法查看。
参考文献 1 ( Zhiqiang Yang, Sheng Zhong, Rebecca N.Wright : "Privacy-Preserving Queries on Encrypted Data" , In ESORICS, 2006)描述以隐 私保护査询概念和最小信息暴露的理论为基础,以非可信服务器平台的攻击与 信任模型为假设环境,设计的基于对称加密算法的隐私保护数据查询方案。
在该方案中,使用随机产生的密钥对明文表中每个元素进行加密处理。加 密后对应每一个元素的密文数据都包含两部分,第一部分是使用分组加密算法 对元素进行加密得到的结果;第二部分为检查值,是使用相同的加密算法对第 一部分进行加密的结果,加密过程中采用的加密密钥是一个函数;该检査值能 够使数据库判断其对应的元素是否符合査询的条件,因此在使用中又称该检査 值为索引值。在存储的密文数据表中,密文数据的两个部分满足一个与用户输 入的査询值相关联的检验等式,当把数据库中的元素导入这个与査询值相关联 的检验等式时,通过把密文数据的两部分放入检验等式中就能够检验出该密文 单元是否满足查询要求。在本发明中,该方案简称为"Y&R方案"。
该方案中构造的检验等式的特点是将用户输入的査询值加密后,以密钥的 形式带入检验等式中,使存储在数据库中的数据与查询信息有效的关联在一起。 当用户使用查询值进行査询时,客户端发送用户查询值加密后的数据给数据库 服务器。该方案中,由于检验等式的使用,数据库服务器端进行数据检索过程 中使用的数据均为密文数据;同时,服务器端不具备解密数据的能力。
但是,参考文献l设计的方案中存在以下不足之处1. 运算速度较慢在建立密文数据表时,针对每一条记录的每一个属性值 分别采用两次分组加密算法,其计算的复杂度较大,从而造成密文数据表产生 时的速度受到制约;而在进行查询时,如可能获得的查询结果较多时,由于同 样的原因,会在查询时产生处理时间较长的问题,从而其方案在效率上有待提 高。
2. 査询方式单一在建立密文数据表时,并未将序关系以某种方式存储在 索引值中,从而使产生的密文数据表并未保持相同属性不同属性值之间的序关 系。使得参考文献1中的方案只能处理精确査询一种査询方式。而在实际使用 中,查询方式一般为精确查询与模糊査询两种方式。因此参考文献1设计的方 案在实际使用中存在比较大的局限性。
3. 安全性有限在参考文献1设计的方案中,索引值以及检验等式中使用 的密钥值的加密算法均使用分组加密算法。分组加密算法加解密过程使用同一 个密钥,分组加密算法的安全性依赖于密钥。这样在一定程度上影响了安全性。
发明内容
为了克服上面归纳的技术问题,提出了本发明的数据存储结构和査询方案, 本发明的目的是有效地提高数据表产生和査询过程的运算速度,并基于这种数 据结构设计适用于密文数据区间査询的查询方案。本发明改进了参考文献l设计 的基于分组密码的密文数据库存储与查询方案的显著缺点,设计了一种基于对 称密码与安全散列函数的隐私保护数据査询方案,该方案在实现效率上明显优 于现有的基于对称密码的隐私保护数据查询方案,并提供区间査询方式,满足 不等式査询条件。
本发明的技术方案是在加密表T'上存储了由保序列Aj的元素IYj生成的二 元组T'i,i(T'i,j〈l〉,T'i,j〈2》,其中T'i,j〈l〉是采用分组加密算法,使用随机产生的加密密钥S,处理Ti,j得到的密文值,通过解密过程Ds,(T'i,j〈l〉)可以得到Tj,j;
T'i,j〈2〉是元素Ti,j的索引值,在进行密文查询过程中,通过验证检验等式
T,j〈2〉=H(Tu〈l〉, H(v))是否成立,判断是否返回该检验等式中对应的 T'i,j<l>,其中v为用户输入的查询值明文,H为加密运算函数。通过上面对于 Y&R方案中未利用的技术特点的分析,本发明利用了散列函数计算方法H("改 进Y&R方案中索引值生成算法,以及査询等式中保持密码隐私性的f运算,并 借鉴单项散列函数中MAC的思想,构造了基于安全散列函数SHA—1算法的检 验等式,改进的等式在不降低Y&R方案安全性的前提下,提高了数据处理速度, 并充分利用了索引值使用时的特点。安全散列函数特点在于能够对于任意的x, 得到H(x)的处理速度快;对于任意给定h,要发现满足H(x)二h的x在计算上是 不可行的;能够处理任意长度的输入;以及原始数据与生成的消息摘要一一对 应,即使原始数据的变化很小,也可以引起消息摘要的很大变化。这些特点满 足检査等式的构造条件,并且满足本发明的设计要求。
本发明中使用的检验等式T',,」< 2 〉= H(T、 < 1 〉 , H(v))在应用现有技术中检验等 式设计思想的基础上,通过改造等式中使用的函数和数据结构,使原来f(v)计算 的密钥值转化为类似于MAC密钥的查询值密钥H(v)。
在新构成的检验等式中,通过对用户査询值v进行散列运算,得到用户査询 值v的摘要信息,并将该摘要信息H(v)作为査询密钥发送给数据库服务器。数 据库服务器通过使用査询密钥和数据库中存储的元素密文值T'i,j〈1〉,得到与索 引值进行比对的査询值。通过判断是否满足检验等式,判断这个元素对应的密 文值T'i,j〈l〉是否符合查询条件。通过新构造的等式进行查询,客户端与数据库 服务器之间通信的内容为敏感信息的摘要值,且安全散列函数运算中不包含解密密钥,所有相关信息均作为输入,从而保证了本发明的安全性。
査询过程中,将满足检验等式的密文值TVj〈l〉所在行中对应的返回属性的密 文值提取至内存中,按照一定的格式封装后返回给用户。用户使用预先存储的 加密密钥Sj军密得到的返回值,得到用户需要的明文信息。
区间索引值的构造基于定值索引值的结构,构造一个双射关系,通过对定值 索引值进行处理产生区间索引值。密文数据表产生过程中,首先在明文数据表T
中对保序列A」的元素Ti,j进行排序,得到Aj列的元素序关系P(PXPj,其中 l^i〈j^N},然后对P中的元素Pi (1SU)进行映射,将Pi映射到区间[l, N]中, 最后把映射值的二进制值放大,得到变换后的序关系值Si。将Si存储在定值索引 值中,使原本无序的定值索引值呈现有序的状态。
因此,本发明提供一种密文数据库隐私保护查询方法,其特征在于,该 方法包括以下步骤
A、 向第一査询单元输入明文查询;
B、 第一査询单元对所述明文查询进行加密处理,将处理后的密文值查 询发送给第二査询单元;
C、 第二查询单元处理所述通过第一查询单元得到的密文值查询,将加 密结果返回给第一查询单元;
D、 第一查询单元利用预先存储在第一查询单元的第一密钥,对所述加 密结果进行解密,得到解密结果a;
E、 第一查询单元将解密结果a输出。
根据本发明的一个方面,在上述歩骤A之前,还存在根据明文数据表生 成第一密钥、第二密钥并将所述第一密钥、第二密钥预先存储在第一查询 单元中的步骤。
根据本发明的 一个方面,在上述步骤C中具体包括以下步骤-d、使用第一算法生成密文数据; C2、使用第二算法生成索引值数据;
c3、在第二查询单元中存储所述密文数据和所述索引值数据,其中所 述索引值数据包含使用第二算法生成的查询使用散列值数据;
C4、第二查询单元根据检验公式,利用所述密文数据和所述索引值数 据得到所述加密结果。
根据本发明的一个方面,所述第一算法是对称密码算法,第二算法是安 全散列函数。
根据本发明的一个方面,第二查询单元通过第二密钥和所述密文数据得 到与所述索弓I值数据进行比对的查询值。
根据本发明的一个方面,所述第一查询单元是查询客户端,所述第二査 询单元是数据库服务器,所述第一密钥是加密密钥,所述第二密钥是査询 密钥。
本发明的有益效果是,在实现效率上明显优于现有的基于对称密码的隐私保 护数据査询方案,并提供区间査询方式。本发明通过使用检验等式进行査询处 理,从而使数据库服务器端进行用户査询请求处理时使用的数据均为密文数据, 且服务器端不具备解密能力,也无需得到于明文内容关联的信息。
为了进一步说明本发明的原理及特性,以下结合附图和具体实施方式
对本发 明进行详细说明。
图1是按照本发明一个实施方式的密文数据库查询系统的示意图。 图2是按照本发明一个实施方式的原始数据加密处理单元获得密文值和索 引值的数据处理流程图。图3是按照本发明一个实施方式的密文数据库査询系统的系统结构示意图。 图4是按照本发明一个实施方式的数据库存储信息的实例。 图5是按照本发明一个实施方式的密文数据库查询方法的循环处理数据过 程的消耗时间统计图。
图6是按照本发明一个实施方式的密文数据库査询系统从接收到Q (v)开始,
到提取加密结果的消耗时间统计图。
具体实施例方式
下面结合附图详细描述本发明的具体实施方式
。
图l是按照本发明一个实施方式的密文数据库査询系统的示意图。其中原始 数据加密处理单元、査询客户端以及数据库服务器通过网络相互连接。所述网 络包括但不限于局域网、广域网、因特网。
图2是按照本发明一个实施方式的原始数据加密处理单元获得密文值和索 引值的数据处理流程图。众所周知,在数据库査询系统中,最为关键的是数据 库中存储数据的数据结构,以及如何利用存储的数据结构进行査询的査询协议。
在按照本发明一个实施方式的密文数据库査询系统中设定的存储数据的数
据结构如下
1^<1>数据结构使用分组加密算法E()处理后得到的密文值,其密钥空间, 明文空间与密文空间为{0,1}、使用符号Es(lV^ II M2)表示使用分组加密算法加密 信息Mt与M2的拼接值,其中加密密钥为S, Mi、 M2分别是一个ki、 k2位串, 满足k一 k2= k。。使用符号H(]V^ II M2II S)表示使用安全散列函数SHA— 1计算 M,与M2拼接值的信息摘要,其中S为査询密钥,密钥空间为{0,1卢,Mh M2 位数不限。
为在数据库中建立加密表T',首先从(0,1^空间中随机选取加密密钥S,、査询密钥S2,并由使用者保管。从(0,u、中为每个元素Ti,j随机选择ri,j,其中iYj是 k2bit的随机字符串,即随机产生的k2个0或者l。 ri,j的使用可以避免两个明文值相
等的元素通过加密计算后,得到的密文值相等。然后,使用分组加密算法计算
密文值T'i,j〈1〉,将产生的査询密钥S2与元素Ti,j、 j (j为元素Ti,j所在列的列号,为 了避免不同属性列中的元素有相同的査询值f(v),在进行f运算之前,追加j给 f(v)作为输入值的一部分。)按(Tj,jllJII S2)的格式存储,并且在加密表T'中按如 下数据格式进行保存
r',乂口 (r',j <i>,r',,7 <2〉)
=(a, (、. ii c),, c ii 。,气ii y ii &)))
在这个数据结构中,TVj〈l〉为明文数据表T中元素的密文值,TVj〈2〉为该密 文值的索引值,二元组两个元素之间满足新的检验等式T'i,jOH(T'i,j〈1〉, H(Ti,jllJH S2))。
按照本发明一个实施方式的区间査询方法,需要进行区间査询的属性列的
数据结构如下
r',》口(r',,/i〉,:r'w.〈2〉)
=II II, (、 II 。 II
在这个数据结构中,索引值T'i/2〉是在定值索引值的数据结构基础上,在 高位拼接其进行简单变换后的序关系值Sj。这种保序的方法可以使数据表在不 暴露元素值的条件下,实现密文保序存储。在此过程中附加暴露信息仅为暴露 的元素序关系P。
在按照本发明一个实施方式的密文数据库査询系统中设定的查询协议如 下用Aj表示明文数据表T的第j个属性列。假设使用査询命令"select A. ,...,A.from T where Aj。=v "进行査洵,通过计算q=H (v||j0||S2),并把运算结果q 与jo、 (j,,...,Je)按照Q(v)的格式打包发送给数据库服务器。其中jo是查询值v所
在的属性列,j,,...,je是需要返回的属性列。Q(V)的格式如下
<formula>formula see original document page 12</formula>
其中第一部分为转化后的摘要信息,其长度为20字节;第二部分为查询列A 的列号,长度为1字节;最后一部分是区间查询的标志位,如发送的为定值查 询值则为空,如为最小査询值则为O,最人查询值为l,并位于整个数据包的最 后,长度为1字节。
服务器接收到查询请求值Q(V)后遍历査询值所在jQ列的元素,测试 i;」。"^H(、〈Uq)是否成立,其中r,」/2〉为jo列元素对应的索引值。对于第 io行的元素,如上等式成立,服务器端受理程序会把T'u,〈l>,...,T'^<i〉返回 给用户。用户使用加密密钥S,解密收到的元素组Ds,(T',,j。 <1>),.. . ,D"T'^ <1>), 得到TH与ri.」的拼接值,随后删除k2字节的&得到T,.j。
假设查询命令为"select Aj,..,AjfromTbetween Aj。 = viand A。=v2"进行查 询,为实现该查询,计算q产H (v!IIJ。IIS2)和q2 = H (v2||j0||S2)并把得到的 散列值q!,q2与jo、(h,…,je)以Q(V,)、Q(V2)的方式发送到数据库服务器。其中Q(v)、 Q(V2)按Q(V)的格式。JQ是所查询的属性列,j,,…丄是需要返回的属性列。
数据库服务器接收到査询后遍历j。列的元素,提取jQ列元素对应的索弓1 值丁",<2>,去掉索引值T',j,〈2〉中高位存储的序号Si后,测试是否与 、OH(;0,q,)或者H(、〈l〉,q》)相等;对于第i,行的元素,如测试成立, 则记录该元素的索引值T^。〈2〉(或者T"〈2〉);遍历索引值列元素T,j。〈2〉,
测试不等式T.. 〈2XT.. <2)<r. ■ 〈2〉是否成立;对于第i。行的元素,如上不等式成立,数据库会把T,, 〈l〉,...,Tu 〈1〉返回给用户。
用加密密钥S,解密收到的元素组DSi(TiJQ 〈1〉),... ,DSi(Ti4 〈1〉),得到Tj,i与 n,i的拼接值,随后删除k2字节的ri,j得到Ti,j。
图3是按照本发明一个实施方式的密文数据库查询系统的系统结构示意图。 该系统包括两大部分组成, 一部分是查询客户端,另一部分是数据库服务器。 査询客户端包括查询转换器l、结果解密器6和密钥单元7。数据库服务器包 括査询分析器2、查询处理器3、密文提取单元4和带辅助数据结构的加密表 5。
该系统的工作流程如下
向查询客户端输入明文査询;
査询客户端中的査询转化器l接收该明文査询,然后对其进行转化,得到 转化结果查询,然后将转化结果查询发送到查询分析器2;这种转化包括但不限 于加密处理,所述转换结果査询包括但不限于密文值査询(优选地,转化结果 查询包括密文值査询、査询列的列号、返回列的列号集合);
查询分析器2将接收到的转化结果查询进行分析,并将分析结果发送到査 询处理器3;
查询处理器3根据接收到的分析结果,按照本发明一个实施方式的上述査
询协议,査询带辅助数据结构的加密表5,并将查询结果发送到密文提取单元4,
其中带辅助数据结构的加密表5中存有加密数据表;
密文提取单元4根据接收到的査询结果,从带辅助数据结构的加密表5中
获取对应的密文值,然后将加密结果发送给査询客户端;
查询客户端接收到返回的加密结果之后,将其发送到结果解密器6;
结果加密器6从密钥单元7中取得预先存储在密钥单元7中的对应密钥, 然后对接收到的加密结果进行解密并去除随机串,得到解密后的结果;査询客户端将解密后的结果返回给用户。
图4是按照本发明一个实施方式的数据库存储信息的实例。下面结合图l-4,
说明按照本发明 一个实施方式的查询过程。
1. 明文数据处理过程
首先需要调用原始数据加密处理单元进行数据转化过程。例如第一行第二
列的明文数据usual经过转化后处理为密文值CF, FE, 5A, A3, A3, A3, CF, 88,...(共20个字节);以及索引值02, FB, E2, CE, Cl, 60, 04, 27, B9,...(共
20个字节)。同时随机产生加密密钥Si、査询密钥S2,并将变化后的密文数据 表存储在图3中数据库服务器端的带辅助数据结构的加密表5中,将加密密钥 S,、查询密钥S2保存在图3中査询客户端的密钥单元7中。到此为止,不再使 用明文数据表。
2. 密文数据査询过程
图3中的查询客户端接受到査询命令"select Name, Parents, Has—nurs, Form from T where Children=l"时,查询转化器1计算Children二l对应的査 询值q,并发送由Q、 "Children列的列号)以及(l、 2、 3)(返回列的列号)组成 的Q(v),即,将图3中的转化结果査询发送给数据库服务器。
数据库服务器接到查询请求后,首先通过査询分析器2进行分析,判断列 号4是否对应区间査询结构,发现不是区间查询列,则将査询值q、查询列列号 4、以及返回列列号l、 2、 3送入査询处理器3中,进行按照本发明一个实施方 式的査询协议中所述的査询处理,将查询结果发送给密文提取模块4,密文提取 模块4提取相应的密文值并发送给查询客户端程序。
3. 解密过程
査询客户端收到返回的加密结果后,将加密结果送入结果解密器6中进行 解密和去除随机串的操作,解密时使用预存在密钥模块7中的S,。解密后的结果返回给用户。
本发明提高了参考文献1整个方案的运行速度,因此下面给出按照本发明 一个实施方式与参考文献l中的方案的性能对比数据。为方便描述,按照本发 明一个实施方式简称为L&Y系统,参考文献1中的方案简称为Y&R系统。
图5是按照本发明一个实施方式的密文数据库查询方法的循环处理数据过 程的消耗时间统计图。图5中的横轴表示数据表容量,纵轴表示消耗时间,单
位为毫秒。
对记录数量不同的原始明文数据表进行10次加密操作,每张数据表的处理 时间取平均值,分别记录L&Y系统和Y&R系统从发送第一个数据到原始数据加 密处理单元开始,到最后一个数据通过该单元变为密文数据库中存储的二元组 的时间,其消耗时间如图5所示。
图6是按照本发明一个实施方式的密文数据库查询系统从接收到Q (v)开始, 到提取加密结果的消耗时间统计图。图6中的横轴表示并发访问用户数,纵轴 表示消耗时间,单位为毫秒。
对L&Y系统和Y&R系统中数据库服务器从接收到Q(v)开始,到提取加密结 果的时间进行10次记录,记录了数据库服务器根据检验等式循环处理过程所消 耗的时间的多次平均值,并记录了多用户同时访问时,数据库服务器处理全部 请求消耗的时间,其消耗时间如图6所示。
从图5、 6中可以看出,L&Y系统消耗的时间与Y&R系统消耗的时间比近似 为1:3。
虽然以上描述了本发明的多个具体实施方式
,但是本领域的技术人员应当理 解,这些具体实施方式
仅是举例说明,本领域的技术人员在不脱离本发明的原 理和实质的情况下,可以对上述方法和系统的细节进行各种省略、替换和改变。例如,合并上述模块单元和/或方法步骤,从而按照实质相同的方法执行实质相 同的功能以实现实质相同的结果则属于本发明的范围。因此,本发明的范围仅 由所附权利要求书限定。
权利要求
1. 一种密文数据库隐私保护查询方法,其特征在于,该方法包括以下步骤A、向第一查询单元输入明文查询;B、第一查询单元对所述明文查询进行加密处理,将处理后的密文值查询发送给第二查询单元;C、第二查询单元处理所述通过第一查询单元得到的密文值查询,将加密结果返回给第一查询单元;D、第一查询单元利用预先存储在第一查询单元的第一密钥,对所述加密结果进行解密,得到解密结果;E、第一查询单元将解密结果输出。
2. 根据权利要求1所述的方法,其特征在于在上述步骤A之前,还存在根据明文数据表生成第一密钥、第二密钥并将 所述第一密钥、第二密钥预先存储在第一査询单元中的步骤。
3. 根据权利要求l所述的方法,其特征在于在上述步骤C中具体包括以 下步骤Cl、使用第一算法生成密文数据; C2、使用第二算法生成索引值数据;C3、在第二查询单元中存储所述密文数据和所述索引值数据,其中 所述索引值数据包含使用第二算法生成的查询使用散列值数据;C4、第二查询单元根据检验公式,利用所述密文数据和所述索引值数 据得到所述加密结果。
4. 根据权利要求3所述的方法,其特征在于所述第一算法是对称密码算 法,第二算法是安全散列函数。
5. 根据权利要求3所述的方法,其特征在于第二査询单元通过第二密钥和所述密文数据得到与所述索引值数据进行比对的查询值。
6. 根据权利要求卜5之一的方法,其特征在于,所述第一查询单元是査询 客户端,所述第二查询单元是数据库服务器,所述第一密钥是加密密钥,所述 第二密钥是査询密钥。
全文摘要
本发明在不改变数据库管理系统内部运行机制的前提下,利用结构化的附加数据结构实现密文数据库表单查询,它包括含有索引查询结构的密文数据生成方法、以及全密文查询处理过程。数据库服务器首先判断用户持有的一定等级的密钥可检索的信息范围,之后在这个信息范围中进行快速信息检索,从而保护了数据库中信息的隐私性。
文档编号G06F17/30GK101436208SQ20081023941
公开日2009年5月20日 申请日期2008年12月9日 优先权日2008年12月9日
发明者刘吉强, 光 杨, 臻 韩 申请人:北京交通大学