数据库加密与密文查询技术研究
2010-07-09吴兴惠
吴兴惠
(海南师范大学 信息科学技术学院 ,海口 571158)
0 引言
随着信息技术的飞速发展,数据信息的安全已成为当前信息社会非常关注的突出问题。而数据库系统作为计算机信息系统的核心部件,其安全问题是信息系统安全的一个重要方面。数据库系统信息的安全性依赖于两个层次:一是操作系统提供的安全保障;二是数据库自己提供的安全措施。对一些重要或敏感数据,用户希望以密文的形式存储和传输,并且可以对数据库信息进行操作而又不泄漏其中的内容。这就需要研究两个重要技术:数据库加密技术和对密文的查询技术。本文在分析了各种数据库加密技术方案的基础上,讨论了对密文进行查询的两个主流技术:秘密同态技术和密文索引技术,实现了对密文直接进行操作的方法。
1 数据库加密技术
运行在网络环境下的数据库系统的一个显著特点是数据的共享性,数据库加密技术的作用主要是在不影响数据共享的前提下保证数据库信息的真实性和完整性。对数据库数据的加密可以选用以文件、记录、字段作为加密基本单位的方案[1]。加密单位越小,适用范围越广,但实现难度就越大。根据应用时具体要求的不同,实现时应采用不同的方法。
1.1 基于文件的数据库加密技术
该技术的基本思想是把数据库文件作为整体,用加密密钥和加密算法对整个数据库文件加密。利用这种方法,数据的共享是通过用户用解密密钥对整个数据库文件进行解密来实现的。但多方面的缺点极大地限制了这一方法的实际应用。如果用户只是需要查看某一条记录,也必须将整个数据库文件解密,这样无法实现对文件中不需要让用户知道的信息的控制。因此,这种方法只适用于能回避这些限制的应用环境。
1.2 基于记录的数据库加密技术
由于数据库系统中每条记录所包含的信息具有一定的封闭性,因此,基于记录的加密技术是最常用的数据库信息加密手段。记录加密实现的是对一个完整的实体进行加密,却无法实现对一个记录中特定字段解密;在选择某个字段的某些记录时,如果不对含有这个字段的所有记录进行解密就无法进行选择,严重影响了系统效率。
1.3 子密钥加密技术
为了解决基于记录的数据库加密技术存在的问题,G.I.David等人提出了子密钥数据库加密技术。子密钥加密算法的核心思想是根据数据库中数据组织的特点,在加密时以记录为单位进行加密,而在解密时以字段为单位对单项数据进行解密操作。两者所用的密钥是不同的,加密所用的密钥是针对整个记录的密钥,而解密所用的密钥是针对单个数据项的子密钥。该算法的理论依据是著名的中国剩余定理[2]。
中国剩余定理:假设m1,m2,…,mn
是n个两两互素的正整数,那么,对于任意整数A1,A2,…,An,同余方程组X≡Ai(mod mi)(1≤i≤n)必有解,并且任意两个解在模m1,m2,…,mn下同余。
加密算法:假设一个待加密的记录有n个明文字段F1,F2,…,Fn,选取n个不同的两两互素的正整数m1,m2, …,mn,令
选取Yi满足MiYi≡1(mod mi),其中1≤i≤n。令Ki=MiYi(1≤i≤n),以(K1,K2,…,Kn)作为记录的加密密钥,C表示记录的密文,则加密运算为:
解密算法:mi为字段Fi的解密子密钥,根据中国剩余定理,解密运算为:
Fi≡C(mod mi)(1≤i≤n)
子密钥加密技术的优点在于理论上原理简单,并可以对单个数据项解密,克服了单纯的记录加密所存在的问题。缺点是实际应用时必须对每个记录生成加密密钥,并对每个数据项生成解秘密钥,对于大型的数据库文件,密钥管理是非常困难的。
1.4 基于字段的数据库加密技术
基于字段的数据库加密,就是以不同记录的不同字段为基本加密单元进行加密。该方法可以对数据库中单个数据元素进行加密。其优点在于具有最小的加密粒度,具有更好的灵活性和适应性。其缺点是:加解密效率低;若用数据库密钥对单个数据元素重复加密,对于密文搜索攻击是脆弱的;若各字段的数据元素分别用不同的密钥加密,则密钥个数=记录个数×字段个数,其量是非常惊人的,实际上根本无法管理。
1.5 生成子密钥的字段加密技术
为了解决上述问题,介绍一种可行的字段加密方案,该方案中主密钥只有一个,但各数据元素所用的密钥是不同的。加密第i个记录的第j个字段所用的密钥为Kij=g(Ri,Cj,K)。其中g是子密钥生成函数,为单向函数,K是原始的数据库密钥(即主密钥),Ri是记录i的唯一标识符,Cj是字段j是唯一标识符。
子密钥生成函数g应该满足如下的安全条件:不同数据项的密钥相同的概率很小;即使已知数据项xij的一些信息,也不可能由密文获得明文xij的其他信息;由某一个数据项密钥难于求得其他数据项密钥。这样所得的Kij是关于主密钥K的函数值,但由Kij计算K在计算上是不可行的,即密码体制是安全的。
2 密文数据查询
目前对于数据库加密的研究主要集中于高效数据库加/脱密引擎的寻找,以及基于此的快速查询、插入、删除方法上。而提高密文数据库查询速度的根本途径是设法省去查询前的脱密处理,即能够实现在不脱密情况下按密文方式进行查询。根据此发展方向,人们提出了几种密文查询技术:
2.1 秘密同态技术
秘密同态是由Rivest等人于1978年在文献[3]提出的,是允许直接对密文进行操作的加密变换。但是由于其对已知明文攻击是不安全的,后来由Domingo在文献[4]做了进一步的改进。秘密同态技术最早是用于对统计数据进行加密的,由算法的同态性,保证了用户可以对敏感数据进行操作但又不泄露数据信息。秘密同态技术是建立在代数理论之上的,其基本思想如下:
假设EK1、DK2分别代表加密、解密函数,明文数据空间中的元素是有限集合{M1, M2,…,Mn},代表运算,若
α(EK1(M1),EK1(M2),….. EK1(Mn))= EK1(β(M1,M2,…,Mn))成立,且
DK2(α(EK1(M1),EK1(M2),….. EK1(Mn)))=β(M1,M2,…,Mn)成立,则称函数族(EK1, DK2,α,β)为一个秘密同态。
秘密同态技术能够对未经解密的密文数据进行查询,大大提高了密文数据库的查询效率。但是,因为该方法对加密算法提出了一定的约束条件,使得满足密文同态的加密算法的应用不具有普遍性[5],因此该加密技术仅适用于属性段级加密粒度。
2.2 密文索引查询技术
提高密文数据库查询效率的另一种主要方法是密文索引技术。在明文数据库中,索引树中的每个结点主要存放数据和指针二类信息,可将每个结点中的数据用其对应的密文代替,便产生了一棵密文数据库的密文索引树,检索中先将根结点脱密并与查询条件进行比较来决定下一个检索的结点,直至找到满足查询条件的所有结点,由此方法的脱密次数为索引树的深度,查询时只需将其调入内存,减少了内外存交换时间,因此与全表或全段脱密相比,其速度要快得多。但对于此方法也有安全隐患,虽然密文索引树中数据是加密过的,但指针类信息却是以明文存在的,就有泄露可能。因此文献[5]提出了对指针信息也加密的方法,切断了密文索引树中和结点的联系。假设敌手只拥有密文数据及其对应的索引,也找不出密文与索引的对应关系,清除了安全隐患。另外还有顺序索引技术、数组索引技术和矩阵索引技术等也都针对不同问题被先后提出。目前,大多数的密文索引技术都是针对于外部攻击的,虽然也有一些针对于内部攻击的密文索引技术,但是在安全性和易用性上还存在一定问题。
3 结束语
数据库安全问题是当前信息技术研究的一大热点。本文讨论了各种数据库加密技术各自的优缺点,实用于不同安全要求和应用环境。利用秘密同态技术和密文索引技术对数据库数据能够实现在不脱密情况下按密文方式进行查询,能够提高密文数据库查询效率。基于密文索引的加密机制,对于字串查询和多条件查询也有不足之处。目前,要在Internet上实现共享数据库的加密,还有一定的困难性和复杂度。另外,数据库加密还存在一定的局限性,如密文膨胀问题、数据可靠性问题、密钥管理问题、数据加密算法的固有局限性等等。
[1] 卢开澄.计算机系统安全[M].重庆:重庆出版社,1999:78-80.
[2] 潘承洞,潘承彪.初等数论[M].北京:北京大学出版社,1991,11.
[3] R L Rivest,L Adleman,M L.Dertouios,On data banks and privary homomorphism[C].in:R A DeMiuo Eds.Foundations of secure Computation, New Youk:Academic press,1978:169-179.
[4] J Domingo-Ferrer.A New privacy homomorphism and applications[J].Information Proessing Letters,1996:60(5):277-282.
[5] 杨勇,方勇,周安民.秘密同态技术研究及其算法实现[J].计算机工程,2005,31(2):157-159.
[6] 余祥宣,刘伟.数据库的密文索引机制[J].华中科技大学学报,2002,30(3):16-18.
[7] 王晓锋,王尚平.秘密同态技术在数据库安全中的应用[J].计算机工程与应用,2003.14:194-196.