密文数据库检索技术综述摘要关键词1 引言2 相关技术3 研究分类3.1 数值型数据2002年,Hakan等人首次提出了在数据库即服务(Database as a service, DaaS)1模型下,针对加密数据执行SQL查询的方法2。
其核心思想是:提出了一种过滤技术(桶划分技术)缩小解密范围,从而快速查询加密数据。
并基于桶划分技术提出了一种对关系数据库进行加密和存储的模型,在此模型上存储数据时,除了对关系表中的记录采用常规加密外,还给每个属性值增加一个桶号,桶号表示明文数据值位于某段区间内。
在该模型中,数据拥有者(即用户)对数据库进行加密后将数据库密文保存在服务提供商处,只有数据拥有者能够解密。
用户提交查询指令后,服务器端无需对密文解密即可进行粗粒度的查询,得到包含查询结果的一个候选结果集合,然后将该候选结果集合返回给用户,用户解密该候选结果集合并对明文进行计算即可得到最终的查询结果。
该方法返回一个比正确结果集合更大一些的集合,其中可能包含一些并不匹配查询条件的密文元组,因此需要再对这个结果集合进行解密和过滤处理,才能得到最终的查询结果。
此外,该方法仅通过值域分区的方式建立数据库值索引,容易造成数据库信息泄漏。
数据库通常采用哈希技术分区的方式,这种方式的分区数量越多,检索性能越好,但同时会造成更多的数据冗余。
当每个分区中的数据记录较多时,检索效率会受到较大影响。
2003年,Damiani等人提出基于索引的密文检索方法3。
与桶划分方法不同,该方法将数据进行元组级的加密,因此能够进行元组级的检索。
该方法不按数值的顺序分类,增加了安全性。
其缺点是不能实现范围搜索。
Damiani又使用B-tree 编码方式,这种方法可以实现范围检索,但是每次进行检索时需要检索的次数等于B-tree的高度。
2004年,Hakan等人深入研究了采用桶划分技术以实现对加密数据执行聚集查询操作4。
2004年,Hore等人研究了依据数据分布实现最优化桶划分以减小通信代价5。
Hore等人提出了一种改进的数据库分区策略,利用数据库分区的最优算法,在数据库检索过程中最小化传输和解密的工作量,进一步提高了数据库密文检索效率。
同时提出一种可控扩散算法,根据数据所有者的需要自适应地调整数据安全等级,采取牺牲一定密文检索性能的方式,定制更为灵活的数据库密文安全策略。
2010年,Chase等人提出了结构加密算法来解决加密大矩阵和图的查询问题6。
这种算法是基于SSE的。
其不足之处为:只能进行简单的查询例如数值访问和“邻居查询”。
2011年,Cao首次提出并解决了在云中查询加密图结构数据的隐私保护查询(PPGQ)7。
并建立了严格的安全需求来实现云数据利用系统。
并使用了“过滤-验证”的原则。
重新建立了基于特征的索引来提供加密数据图的特征相关信息。
选择了高效的内积作为修剪工具来过滤数据。
为了保证图查询不造成隐私泄漏,提出了内积计算技术,并将其改进后能够在未知背景维系模型下保证安全。
3.2 单关键词检索3.2.1 单关键词密文排序查询加利福利亚大学的Song等人采取了序列加密(stream cipher)方法对文本数据进行加密处理,这样无需解密就可以直接对加密文本搜索关键词8。
其优点是:使用者和数据库需要很少的通信,只需要一轮交互。
(对称密钥)但是其方法有一些问题:第一,它与当前已有的一些文件加密方案不兼容;第二,它在针对加密数据的统计分析攻击下并不安全,尽管提出了一些有启发性的补救方法,但是其安全性证据在理论上是不够健壮的;第三,不能进行连接词检索,且很难扩展。
2003年,Goh等人9基于布隆过滤器对Song的效率进行改进,每个文件都有对应的一些独立的哈希函数和Bloom Filter 数据结构。
在文件加密之前,需要对文件中的关键字使用私钥加密,再使用哈希函数映射到filter之上并记录,最后,将映射后的filter和文件的密文上传到服务器中。
当用户需要进行密文搜索时,需要将关键字的密文发送给云端服务器,再由云端服务器使用每个文件的哈希函数进行关键字到filter的映射。
如果映射到的位置之前都有记录的痕迹,则说明这个关键字有很大的概率是在该文件中。
最后,云端服务器将得到的匹配文件发给用户。
结果:能够利用哈希函数计算快速的特点,快速地查找关键字所在的密文文件。
不足:它也继承了Bloom Filter存在错误率的特点,有可能导致一些文件本来并不包含关键字,最后却能够通过哈希函数的检测,而被云端作为结果返回给用户,给用户带来一些额外的带宽开销和计算开销。
2004年,D.Boneh等人提出了真正意义上的可搜索公钥加密方案10(简称:PEKS方案),为此业界把2004年定义为可搜索公钥加密的元年。
在论文中他们提出了一种基于双线性对函数的单关键可搜索公钥加密方案,该方案指出,第三方服务器根据单关键字的密文信息在整个服务器数据库中检索相关的文章,保证对检索的信息一无所知。
这项新技术的提出开启了可搜索公钥加密技术的新时代。
优点:支持数据接收者对多个发送者所加密的密文中进行搜索的应用场景,而且由于随机数的作用,系统的加密效果为非确定性加密,导致了服务器端无法通过密文是否相同来判断索引表(或搜索凭证)中是否具有相同的关键字。
缺点:计算开销因为双线性对的引进而加大,特别是对操作(pairing operation)的计算开销较大,使得该方法在海量数据处理场景中的应用性受到一定的限制;另外,PEKS的安全性是在随机语言机模型(random oracle model)下成立,并不适合现实应用。
2005年,Abdalla等人提出一种使用临时性关键字可检索的公钥加密方案(简称:PETKS方案)11。
在该方案的验证阶段,用户一旦需要验证就要进行必须的、相关的解密操作,这样无形中就增大了服务器的开销。
2005年,J.Baek等人提出了一种不需要使用安全信道来传输数据的基于关键字的公钥加密可搜索方案(简称:SCF-PEKS方案)12,这种方案保证信息在客户端和服务器端的传送过程中,不会受到攻击或发生泄漏等问题,保证了搜索信息、加密数据的安全性。
2005年,Wang等人13提出一种基于对偶编码的特征值提取方法,将字符型明文数据拆分为多个字符对偶,根据这些字符对偶提取字符型数据的特征值,存储到一个新的字段中,在数据库密文检索时,根据这个辅助字段将不符合关键词字符特征的数据库记录过滤掉,再对剩余的数据库记录做解密处理,得到明文的解密结果,最后在解密结果中进行明文检索,获得最终检索结果。
2006年,Curtmola等人14在Song的基础上给出更严格的安全性定义和更高效的对称密钥可检索加密方法构造,利用加密Hash表存储关键词和密文文件标识的映射关系实现密文数据查询。
2007年,Zhu等人提出一种基于字符特征矩阵的数据库加密策略15。
这种加密策略也将数据库的密文检索分为过滤和解密两个阶段,字符特征矩阵记录了每个字符型数据中包含的字符,同时也记录了每个字符与哪些字符相邻,这种加密策略可以检索任意长度的字符关键词,解决了基于对偶编码的数据库加密策略不能检索单个字符的问题,第一阶段的过滤效率较高,但字符特征矩阵中存储了大量特征数据,产生了较多的数据冗余,因此,在这种数据库加密策略中采取A.Tan提出的矩阵压缩方法存储特征索引,降低了索引存储的占用空间,在安全性和密文检索效率间取得了较好的平衡.2007年,Zhang等人基于数值型数据的数据库分区方法,提出一种字符型数据密文的分区索引16。
这种索引通过将字符信息转换为数值型来记录字符间的关系特征,利用索引过滤掉部分不符合检索条件的数据库记录,再对剩余一记录解密,进行二次检索后返回检索结果。
2008年,Zhang等人提出了一种数据库密文索引策略17,将字符数据映射为索引值,通过SQL语句翻译器将SQL检索语句转换为对索引的快速匹配,为了保证密文索引的安全性,策略采用了哈希技术和数字扰乱的方法,这样不同记录中的相同字符将会对应不同的索引值,索引值不再具有统计特征,从而避免基于频率统计的数据库攻击。
2009年,Zerr等人18发现即使列表元素(倒序包含每个关键词的文档ID)被加密,仍然可以根据发布列表的词频分布来重新确认关键词。
所以他们改变了相关性分数,使每个关键词的词频相等。
在此基础上,提出了在加密数据中进行安全的排序搜索的方法。
这个方案在统计意义上满足安全定义,被称之为R-机密性(r-confidentiality)。
不足之处为:它需要大量的预处理,而且不能简单地处理动态分数,所以安全级别很低。
3.2.2 模糊匹配查询2009年,Liu等人提出一种基于Bloom Filter的数据库索引方法19。
Bloom Filter能够支持数据库模糊检索,根据数据库索引的匹配可将部分不符合检索条件的数据库记录排除。
2010年,Li等人针对关键词精确匹配的不足,提出云计算环境下基于编辑距离的加密字符串模糊检索方案20。
它使用编辑距离来量化字符串的相似度,并为每个字符串附加一个基于通配符的模糊字符串组,用多个精确匹配来实现模糊检索。
其不足为:该方法需要语义库的支持,且仅仅针对“all-or-nothing”的查询方式,并返回给用户完全无区分性的查询结果。
对于Li等人提出的基于编辑距离d的加密字符串模糊检索方案,他们解决的是d=1的情况,当d>1时,Wang等人提出了方案21来扩展它。
当d很大时,他们所用的通用抑制技术就节省了很多空间。
他们使用单词查找树(一种数据结构)来保存序列跟编码,把检索的复杂度从O(N)降到了O(1)。
这两者的缺点都是返回给用户的查询结果不可区分,并且因为都使用了SSE框架,因此均没有实现查询的不可连接性。
(王伟,单关键词or多关键词)3.2.3 分级检索(Ranked Search)2010年,Wang等人22考虑关键词词频信息,提出基于对称密钥保序加密技术OPSE23的单关键词分级密文排序查询方法(RSSE),采取了OPSE方案来提高实际性能,采用此方案后,明文的数值顺序在加密后将被维持原状。
具体来说,在查询过程中,每个文档的相关性顺序(用OPSE加密过的相关性分数)将被告知服务器。
通过这个方式,相关性分数的排序将会像在明文中一样高效。
然而,因为原始的OPSE算法是确定性的加密方案,这仍然会泄漏很多信息。
如果服务器上的数据集中包含很多此类背景信息,例如每个明文关键词的相关性分数的分布,那么就能反向推导出关键词。
为了打破这种确定性,作者提出了一对多保序映射(OPM),它把相同的相关性分数映射到不同的加密数值上。
因此,相同的明文不再是确定的加密成确定的密文。
他们更进一步对不同的列表使用了不同的密钥来加密相关性分数,这使得OPM更加可靠。