CN106934030A - 一种面向数据库加密的密文索引方法和库内加密系统 - Google Patents

一种面向数据库加密的密文索引方法和库内加密系统 Download PDF

Info

Publication number
CN106934030A
CN106934030A CN201710149817.9A CN201710149817A CN106934030A CN 106934030 A CN106934030 A CN 106934030A CN 201710149817 A CN201710149817 A CN 201710149817A CN 106934030 A CN106934030 A CN 106934030A
Authority
CN
China
Prior art keywords
index
encrypted
field
encryption
ciphertext
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201710149817.9A
Other languages
English (en)
Other versions
CN106934030B (zh
Inventor
戴林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Publication of CN106934030A publication Critical patent/CN106934030A/zh
Application granted granted Critical
Publication of CN106934030B publication Critical patent/CN106934030B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24561Intermediate data storage techniques for performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6227Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries

Abstract

本发明涉及一种面向数据库加密字段的密文索引方法和库内加密系统,属于信息安全技术领域。本发明首先基于加密字段P1数标识ID映射到加密ID,并将(加密ID,哈希值)存入T2(ID2,P2),最后,基建立密文索引表T2,记加密字段P1所在表为T1,T2表中包括密文索引字段P2以及T2中记录与T1中记录一一对应关系的字段ID2;然后,基于保序哈希函将待加密字段内容映射到哈希值,基于加密函数将待加密字段内容所在记录的所于映射后的哈希值,实现对加密字段的等值查询和范围查询,并根据查询结果在记录的ID2解密获得T1表中记录集合并返回。对比现有技术,本发明可靠性好,通用性强,同时既有很高的安全性,又能保证极高的检索和存储效率。

Description

一种面向数据库加密的密文索引方法和库内加密系统
技术领域
本发明涉及一种面向数据库加密字段的密文索引方法和库内加密系统,属于信息安全以及数据库加密技术领域。
背景技术
数据库安全日益重要,对数据库中的敏感字段进行加密是有效的安全手段。但是对字段内容进行加密后,会导致原来的索引失效,从而使得数据检索的性能大幅降低,影响到数据库的可用性。为解决加密字段的检索问题,业界进行了一定的研究。
专利CN101504668B实现的密文索引技术通过使用SQL语句建立二叉树、B树等索引结构实现密文索引,但是维护索引的代价较高,性能较低。而像CRYPTDB中,直接使用保序加密算法,在表中建立保序加密列,虽然可以保证较高的性能,但是会泄漏数据的偏序关系,从而安全性较低。且CRYPTDB为网关型加密系统,不能支持所有类型的SQL语句。
本发明的目的是致力于解决上述密文索引不能均衡运行效率、安全性和通用性方面的技术缺陷,提出一种面向数据库加密字段的密文索引方法,以及基于这种方法实现的库内数据库加密系统。
发明内容
本发明的目的是针对现有数据库加密索引技术存在的安全性较低、运行效率低的技术缺陷,提出了一种面向数据库加密字段的密文索引方法。
本发明的原理是使用保序索引作为密文索引,同时密文与密文索引分开存放,在不泄漏明文信息及其偏序关系的前提下,降低加密对性能的影响。
本发明的目的是通过以下技术方案实现的:
一种面向数据库加密字段的密文索引方法,具体步骤如下:首先,基于加密字段P1建立密文索引表T2,记加密字段P1所在表为T1,T2表中包括但不限于密文索引字段P2以及密文索引表T2中记录与T1中记录一一对应关系的字段ID2;然后,基于保序哈希函数将待加密字段内容映射到哈希值,基于加密函数将待加密字段内容所在记录的标识ID映射到加密ID,并将二元组(加密ID,哈希值)存入T2(ID2,P2),此时,映射后的哈希值偏序关系体现了待加密字段内容的偏序关系,加密ID体现了索引值与被索引值的对应关系;最后,基于映射后的哈希值,实现对加密字段的等值查询和范围查询,并根据查询结果所在记录的ID2解密获得T1表中记录集合并返回。
根据上述方法构建的一种库内透明数据库加密系统,该系统基于被加密原表生成加密表ET1,并且包含密文索引表INDEX_T1、与被加密原表同名同字段的视图T1、安全触发器、索引调用接口、保密索引函数包以及加解密函数包;
加密表ET1用于保存被加密字段C的内容;其中包含被加密原表中除C以外的所有字段以及加密字段EC,其中除C以外的所有字段用于存储被加密原表中除字段C以外的所有字段内容,EC用于存储字段C的密文;
与被加密原表同名同字段的视图T1用于代替被加密原表,接管所有的对被加密原表的访问,使得外部用户和应用感觉不到数据被加密和解密的变化,从而实现透明加密;
密文索引表INDEX_T1用于保存被加密字段C的索引,以保证透明加密的同时不影响检索效率;其中包含字段EROWID和密文索引INDEX_C,EROWID字段用于存储被加密记录的ROWID被加密后的内容,以防止泄漏密文索引值和原记录的对应关系,INDEX_C字段用于存储被加密字段C的索引值,此处的ROWID为被加密原表中记录的唯一性标识;
保密索引函数包包括1个以上的保密索引函数,用于使用保序哈希算法,将被加密字段内容映射到索引值,此时索引值的偏序关系能够反映被加密字段真实内容的偏序关系,从而可以基于密文索引实现等值和范围查询;
作为优选,所述保密索引函数为带随机偏置的保序哈希算法,该算法使得同样的明文对应不同的索引值,避免了原文的统计信息被泄漏。
加解密函数包包括1个以上的加解密函数,用于使用加密函数,将被加密字段内容映射到加密值,此时如果不知道解密算法和密钥,从加密值不能够反推出被加密字段的真实内容,当需要解密时,对加密值使用对应的解密函数和密钥解密出被加密内容;
索引调用接口用于将对T1的SELECT、UPDATE、DELETE请求中的WHERE条件中的与被加密字段C相关的查询条件使用所述保密索引函数做同样的保序哈希计算,得到哈希值,然后在密文索引表INDEX_T1中使用该哈希值执行与查询条件对应的查找操作,得到命中的记录集,再使用加解密函数包中对应于加密函数的解密函数解密这些命中记录集中的EROWID字段,得到ET1中的ROWID集合,此时该ROWID集合就是ET1中满足查询条件的ROWID集合,即记录集;视图T1的填充函数对这些记录集中有关字段C的内容使用所述加解密函数包中的解密函数进行对应的解密计算得到所需字段C的明文,从而满足SELECT请求;或者通过T1上的安全触发器对这些记录集执行对应的UPDATE、DELETE请求;
安全触发器用于将对T1增加、修改、删除等请求进行不同的索引维护操作,具体为:
其中,当增加INSERT请求、修改UPDATE请求、删除DELETE请求中包括被加密字段C内容时,分别进行下述处理:
(1)对于INSERT请求,安全触发器调用所述加密函数,计算插入记录中的被加密字段C的密文值,将其连同其它所有字段的值一同插入密文表ET1中,并对该新记录的ROWID调用所述加密函数做加密计算,得到加密后的EROWID,调用所述保密索引函数,计算插入记录中的被加密字段C的哈希值,得到密文索引值;从而得到新增的密文索引记录,进而将该密文索引记录插入到密文索引表INDEX_T1中;
(2)对于UPDATAE请求,安全触发器调用所述加密函数,计算更新记录中的被加密字段C的新值的密文值,以该密文值更新ET1中对应记录的加密字段EC;调用所述保密索引函数,计算被更新记录中的被加密字段C的新值的哈希值,得到新的密文索引值,并对更新记录的ROWID做加密计算,得到加密后的EROWID,然后根据该EROWID在密文索引表中更新对应记录的密文索引值;
(3)对于DELETE请求,安全触发器删除ET1中对应记录,并对被删除记录的ROWID做加密计算,得到加密后的EROWID,然后根据该EROWID在密文索引表INDEX_T1中删除对应的密文索引记录;
连接关系:
与被加密原表同名同字段的视图T1分别与加密表ET1、索引调用接口和安全触发器相连;安全触发器分别与密文索引表INDEX_T1、保密索引函数包、加解密函数包相连;索引调用接口分别与保密索引函数包、密文索引表、加解密函数包相连。
根据上述方法构建的一种库内透明数据库加密系统,基于被加密原表生成加密表ET1,与被加密原表同名同字段的视图T1、安全触发器、索引调用接口、保密索引函数包以及加解密函数包;
T1用于代替被加密原表,接管所有的对被加密原表的访问,使得外部用户和应用感觉不到数据被加密和解密的变化,从而实现透明加密;
ET1用于保存被加密字段C的内容及其索引,以保证透明加密的同时不影响检索效率;其中包含被加密原表中除C以外的所有字段、加密字段EC以及加密索引字段INDEX_C,其中除C以外的所有字段用于存储被加密原表中除字段C以外的所有字段内容,EC用于存储字段C的密文,INDEX_C用于存储字段C的索引值;
保密索引函数包包括1个以上的保密索引函数,用于使用保序哈希算法,将字段C内容映射到索引值,此时索引值的偏序关系能够反映字段C真实内容的偏序关系,从而可以基于索引值实现等值和范围查询;
加解密函数包包括1个以上的加解密函数,用于使用加密函数,将字段C内容映射到加密值,此时如果不知道解密算法和密钥,从加密值不能够反推出字段C的真实内容,当需要解密时,对加密值使用对应的解密函数和密钥解密出字段C的真实内容;
索引调用接口用于对T1的SELECT、UPDATE、DELETE请求中的WHERE条件中的与字段C相关的查询条件使用所述保密索引函数做同样的保序哈希计算,得到哈希值,然后在ET1中使用该哈希值对字段INDEX_C执行与查询条件对应的查找操作,得到命中的记录集。视图T1的填充函数对这些记录集中有关字段C的内容使用所述加解密函数包中的解密函数进行对应的解密计算得到所需字段C的明文,从而满足SELECT请求;或者通过T1上的安全触发器对这些记录集执行对应的UPDATE、DELETE请求;
安全触发器用于将对T1增加、修改等请求进行不同的索引维护操作,具体为:
其中,当增加INSERT请求、修改UPDATE、删除DELETE请求中包括字段C内容时,分别进行下述处理:
(1)对于INSERT请求,安全触发器调用所述保密索引函数,计算插入记录中的字段C的哈希值,得到密文索引值,并对字段C使用所述加密函数做加密计算,得到字段C的密文,从而得到新增的密文记录,进而将该密文记录插入到密文表ET1中;
(2)对于UPDATAE请求,安全触发器调用所述保密索引函数,计算被更新记录中有关字段C的新值的哈希值,得到新的密文索引值,并对字段C使用所述加密函数做加密计算,得到字段C的密文,然后根据该密文和密文索引值在ET1中更新对应记录的字段EC和INDEX_C内容;
(3)对于删除DELETE,安全触发器删除ET1中对应的记录;
连接关系:
T1分别与ET1、索引调用接口和安全触发器相连;安全触发器分别与ET1、保密索引函数包、加解密函数包相连;索引调用接口分别与保密索引函数包、ET1、加解密函数包相连。
有益效果
一种面向数据库加密字段的密文索引方法及库内加密系统,与现有的密文索引方法和数据库加密系统相比,具有如下增益效果:
(1)基于数据库本身的数据表、索引、以及触发器、以及用户自定义函数实现密文索引,具有很高的可靠性;
(2)采用保序哈希函数作为密文索引,由于哈希函数非常高效,所以可以实现很高的检索性能;
(3)将密文索引和加密数据使用不同的表独立保存,并通过加密二者之间的关联字段以屏蔽他们之间的连接,可以避免通过索引还原原文的内容和偏序关系,从而保证加密数据的安全性;
(4)通过使用视图替代原表,能够实现对SQL语句类型的完全支持,使得系统具有通用性。
附图说明
图1是本发明一种面向数据库加密字段的密文索引方法的流程示意图;
图2是本发明一种数据库库内透明加密系统密文索引与密文分开存放时的组成结构示意图;
图3是本发明一种数据库库内透明加密系统密文索引与密文存放在同一表中时的组成结构示意图。
具体实施方式
下面结合附图和实施例对本发明做进一步说明和详细描述。
实施例1
如图1所示,本实施例详细阐述了本发明一种面向数据库加密的密文索引方法在ORACLE数据库中的实现。
如表1所示是本实施例中原有加密前的数据表T1。其中包括两个字段C1和C2。字段ROWID为ORACLE系统提供的伪列,其值表示每个记录的物理位置,也是被加密记录的唯一性标识。C1为字符型字段,为非敏感字段,不需要对其进行加密。C2为数值型字段,为待加密字段。
表1:T1
ROWID C1 C2
1 Apple 1
2 Bee 2
3 Cat 3
4 Dog 4
首先,基于加密字段C2建立密文索引表IND_T1,IND_T1表中包括密文索引字段INDEX_C2以及与每个索引记录原表T1中记录的一一对应关系的字段EROWID。
表2:IND_T1
EROWID INDEX_C2
AES(1) 112
AES(2) 125
AES(3) 139
AES(4) 144
然后,基于保序哈希函数将待加密字段内容映射到哈希值。本实例中,使用保序哈希函数,如Y=AX+B+R,分别将1、2、3、4映射为索引值112、123、139、144。这种映射是单向的,不能根据索引值推算出原值。索引值体现被索引内容的偏序关系,但是跟被索引值具有不同的统计特征,不能根据索引值推断出被索引内容的统计特征。从而增强索引系统的安全。
接下来,基于加密函数将待加密字段内容所在记录的标识ID,也就是ROWID映射到加密索引表IND_T1中的EROWID。本实施例中,采用加密算法,如AES算法,将ROWID的值1、2、3、4加密成AES(1)、AES(2)、AES(3)、AES(4)。此时,EROWID解密后能够体现索引值与被索引值的对应关系,但是不能直接体现这种对应关系。从而防止从索引泄漏被加密内容的偏序关系,从而保证了索引系统的安全。
最后,基于映射后的哈希值,实现对加密字段的等值查询和范围查询,并根据查询结果所在记录的ID2解密获得T1表中记录集合并返回。比如,对于查询:查找C2的值大于等于3的所有记录。首先将3,通过上述同样的保序哈希函数映射为130。然后在索引表IND_T1查找INDEX_C2大于等于130的所有记录。在本实施例中,命中的记录的EROWID集合为{AES(3),AES(4)}。将此集合的EROWID采用与上述加密函数对应的解密函数进行解密,得到ROWID的集合{3,4}。这就是表T1中满足查询条件的记录的ROWID。根据该ROWID集合,就可以找到满足查询条件“C2的值大于等于3”的所有记录。
实施例2
本实施例详细阐述了本发明一种数据库库内透明加密系统在ORACLE数据库下具体实施时的具体实例。
如图2所示,针对实施例一中的表1,一种数据库库内透明加密系统,基于被加密原表生成加密表ET1,包括密文索引表IND_T1、与被加密原表同名视图T1、安全触发器、索引调用接口、保密索引函数包以及加解密函数包;其中,T1分别与ET1、索引调用接口和安全触发器相连;安全触发器分别与密文索引表IND_T1、保密索引函数包、加解密函数包相连;索引调用接口与保密索引函数包、密文索引表、加解密函数包相连。
首先将原加密字段C2所在表T1(C1,C2)重命名为加密表ET1,并且将字段C2重命名为EC2,EC2中保存原C2明文加密后的密文。
然后建立如下表所示视图T1,该视图与被加密原表T1同名且具有相同的同字段C1和C2,其中C2为从表ET1中的字段EC2解密而来。
与被加密原表同名同字段的视图T1:
C1 C2
T1的定义为:
CREATE VIEW T1AS SELECT C1,DECYPT(EC2)AS C2FROM ET1;
其中DECRYPT()为解密函数。当用户使用SQL语句访问数据库中原来的表T1时,实际作用于T1视图。对于查询操作,T1视图通过从ET1中读取字段C1,以及解密字段EC2,填充视图,从而反馈给用户。而用户根本感觉不到实际加密和解密的存在。并且,通过视图替代原被加密原表,能够实现对SQL语句类型的完全支持,使得系统具有很高的通用性。
接下来建立如下表所示密文索引表IND_T1。
密文索引表IND_T1:
EROWID INDEX_C2
E(1) 112
E(2) 125
E(3) 139
E(4) 144
该索引表包括两个字段,EROWID和INDEX_C2。其中EROWID为加密后的ROWID,INDEX_C2为C2字段的密文索引值。ROWID被加密成EROWID后,不能直接和加密表ET1进行连接。但是通过对EROWID正确解密后,能够还原出该索引值对应的ET1的记录。通过此手段,既能实现表间连接,又使得攻击者即使获得数据库内容也无法获得相应的明文数据以及加密字段内容的偏序关系,从而使得系统具有很高的安全性。
接下来建立安全触发器:
对索引的维护包含对插入、删除、更新操作时候对索引的维护,下面分别描述如下:
(1)INSTEAD OF TRIGGER FOR INSERT ON T1,为建立在视图T1上的,针对INSERT操作的INSTEAD OF类型的触发器。当向视图T1上插入数据时,该触发器被触发执行。该触发器将针对插入到T1上的每一行数据,将字段C2加密,生成新的记录C1和EC2,将该记录插入到加密表ET1中;然后使用C2的值作为参数调用保密索引函数包中的保密索引函数生成密文索引字段INDEX_C2的值,使用刚插入到ET1中记录的ROWID值作为参数调用加解密函数包中的加密函数生成密文字段EROWID的值,从而生成密文索引表中的一个记录EROWID和INDEX_C2,并将该记录插入到密文索引表IND_T1中。
(2)INSTEAD OF TRIGGER FOR DELETE ON T1,为建立在视图T1上的,针对DELETE操作的INSTEAD OF类型的触发器。当从视图T1上删除数据时,该触发器被触发执行。该触发器将针对从T1上删除的每一行数据,根据其ROWID从密文索引表IND_T1以及加密表ET1中删除对应记录;
(3)INSTEAD OF TRIGGER FOR UPDATE ON T1,为建立在视图T1上的,针对UPDATE操作的INSTEAD OF类型的触发器。当向视图T1上更新数据时,该触发器被触发执行。该触发器将针对在T1上更新的每一行数据,如果被更新的数据涉及到C2,则使用C2字段的新值调用保密索引函数,生成新密文索引值,根据其ROWID从密文索引表中IND_T1更新对应记录中的密文索引值,同时调用加密函数将字段C2加密得到其密文值,以该值更新ET1表中的加密字段EC2。
通过如上触发器,实现对数据修改、插入、删除的透明性,进一步增加了系统的通用性。而这些触发器都是数据库自身的机制,使得系统具有很高的可靠性。
接下来实现索引调用接口,通过实现ORACLE数据库系统提供的扩展索引接口实现。实现的索引调用接口包括如下:
(1)ODCIIndexStart()函数将对T1的SELECT、UPDATE、DELETE请求中的WHERE条件中的与被加密字段C2相关的查询条件使用所述保密索引函数做同样的保序哈希计算,得到哈希值,然后在密文索引表INDEX_T1中对索引字段INDEX_C2使用该哈希值执行与查询条件对应的查找操作,得到命中的记录集,再使用加解密函数包中对应于加密函数的解密函数解密这些命中记录集中的EROWID字段,得到ET1中的ROWID集合,即ET1中满足查询条件的记录集;
(2)ODCIIndexFetch()函数返回指定行数的,在步骤(1)生成的满足查询条件的加密表中ROWID的集合;
(3)ODCIIndexClose()结束索引调用。
而这些接口,以及实现的语言PLSQL都是Oracle数据库自己的机制,使得系统具有很高的可靠性。
接下来实现如下表所示的保密索引函数包:
保密索引函数包:
OPI();
实现保序哈希函数OPI(),该函数接受被加密字段的原值,返回密文索引值。该函数使用ORACLE的系统开发语言PL/SQL自定义函数机制实现,使得系统具有很高的可靠性。
最后,实现如下表所示的加密函数包:
加解密函数包:
该函数包提供加密和解密函数,在本实施例中实现对ROWID、加密字段的加密和解密。该函数包通过调用ORACLE自身提供的函数包实现,使得系统具有很高的可靠性。
通过对以上系统组成各部分的实现,即可实现对ORACLE等数据库系统的透明加密及索引,不但保证很高的增、删、改、查效率,还对有关敏感数据进行了加密存储。
实施例3
本实施例详细阐述了本发明一种面向数据库加密字段的库内透明加密系统在ORACLE数据库下具体实施时的另一种具体实例。区别于实施例2,本实施例不使用单独的密文索引表,可以得到比实施例2更高的效率,但是会部分泄漏记录间的偏序关系。
具体作法是:如图3所示,针对于上述实施例1中的表T1,无需建立密文索引表IND_T1,直接将T1重命名为加密表ET1,并且将字段C2重命名为EC2,EC2中保存原C2明文加密后的密文,在ET1中增加密文索引字段INDEX_C2,INDEX_C2中保存原C2明文的密文索引值,如下表所示:
加密表ET1:
ROWID C1 EC2 INDEX_C2
1 Apple E(100) 112
2 Bee E(200) 125
3 Cat E(300) 139
4 Dog E(400) 144
本实施方式中,加密表中由于索引字段和加密字段在同一个记录中,自动实现了关联。相比于实施例一中通过解密加密字段EROWID后再进行关联的方式,这种关联方式更加高效。但是会泄漏索引值和被加密字段之间的关联关系,从而部分的泄漏被加密字段内容的偏序关系。
与实施例2不同之处还在于,安全触发器中包含的对插入、删除、更新操作时候对索引的维护的实现,分别描述如下:
(1)INSTEAD OF TRIGGER FOR INSERT ON T1,为建立在视图T1上的,针对INSERT操作的INSTEAD OF类型的触发器。当向视图T1上插入数据时,该触发器被触发执行。该触发器将针对插入到T1上的每一行数据,使用C2字段的值调用保密索引函数,生成密文索引值,使用C2字段的值调用加密函数,生成密文值,和其它字段一起,插入到密文表中ET1中。
(2)INSTEAD OF TRIGGER FOR DELETE ON T1,为建立在视图T1上的,针对DELETE操作的INSTEAD OF类型的触发器。当从视图T1上删除数据时,该触发器被触发执行。该触发器直接从ET1表中删除对应记录。
(3)INSTEAD OF TRIGGER FOR UPDATE ON T1,为建立在视图T1上的,针对UPDATE操作的INSTEAD OF类型的触发器。当向视图T1上更新数据时,该触发器被触发执行。该触发器将针对在T1上更新的每一行数据,如果被更新的数据涉及到C2,则使用C2字段的新值调用保密索引函数,生成新密文索引值,调用加密函数生成密文值,和其它被字段一起,更新到密文表中ET1中。
与实施例2不同之处还在于,索引调用接口中包含的对查询相关接口的实现,分别描述如下:
(1)ODCIIndexStart()函数将对T1的SELECT、UPDATE、DELETE请求中的WHERE条件中的与被加密字段C2相关的查询条件使用所述保密索引函数做同样的保序哈希计算,得到哈希值,然后在加密表ET1中对索引字段INDEX_C2使用该哈希值执行与查询条件对应的查找操作,得到ET1中满足查询条件的记录集;
(2)ODCIIndexFetch()函数返回指定行数的,在步骤(1)中生成的满足查询条件的表ET1中ROWID的集合;
(3)ODCIIndexClose()结束索引调用。
如上触发器的内容,相比于实施例一中同时更新两个表的方式,更加高效,将会具有更高的性能。
实施例4
本实施例阐述了本实施例中保密索引函数的实现,本领域技术人员都知道,本发明内容所述的保密索引函数包中的保密索引函数可以使用任何满足能够反映新值与原值偏序关系的函数即可,本实施例采用带随机偏置的保序哈希方法,如下公式所示:
Y=AX+B+R;
其中X为待索引的明文,Y为索引值,A为缩放系数,B为偏移。其中R为随机偏置,用于调整Y值。对于同样的明文X,索引值Y不同,从而防止泄漏统计信息。
例如,设A=10,B=100,R∈[1,9],则对于被索引值1,2,3,3,4,分别被映射成索引值112,125,139,131,144。
对于查询,则对查询条件做对应的映射。比如要查询大于等于3的被索引值,在保密索引中,查询条件变为查询大于等于130的索引值。
通过该保序哈希算法,将被加密字段内容映射到索引值,此时索引值的偏序关系在已知映射函数的情况下能够反映被加密字段真实内容的偏序关系,从而可以基于密文索引实现等值和范围查询;同时,随机偏置R使得同样的明文对应不同的索引值,避免了原文的统计信息被泄漏。在未知映射函数的情况下,则无法推导出被索引的内容以及被索引内容的统计信息。
使用的这种保序哈希函数计算公式非常简单,相比于二叉树和B树等数据结构,具有很高的性能;并且随机偏置的引入,更加增加了系统的安全性。
本领域的专业人员,完全可以利用更加复杂更加安全的替换的保序索引方法,来实现保序索引函数。
为了说明本发明的内容及实施方式,本说明书给出了四个具体实施例。在实施例中引入细节的目的不是限制权利要求书的范围,而是帮助理解本发明所述方法。本领域的技术人员应理解:在不脱离本发明及其所附权利要求的精神和范围内,对最佳实施例步骤的各种修改、变化或替换都是可能的。因此,本发明不应局限于最佳实施例及附图所公开的内容。

Claims (5)

1.一种面向数据库加密字段的密文索引方法,其特征在于:
首先,基于加密字段P1建立密文索引表T2,记加密字段P1所在表为T1,T2表中包括但不限于密文索引字段P2以及密文索引表T2中记录与T1中记录一一对应关系的字段ID2;
然后,基于保序哈希函数将待加密字段内容映射到哈希值,基于加密函数将待加密字段内容所在记录的标识ID映射到加密ID,并将二元组(加密ID,哈希值)存入T2(ID2,P2),此时,映射后的哈希值偏序关系体现了待加密字段内容的偏序关系,加密ID体现了索引值与被索引值的对应关系;
最后,基于映射后的哈希值,实现对加密字段的等值查询和范围查询,并根据查询结果所在记录的ID2解密获得T1表中满足查询条件的记录集合并返回。
2.一种库内透明数据库加密系统,其特征在于:基于被加密原表生成加密表ET1,并且包含密文索引表INDEX_T1、与被加密原表同名同字段的视图T1、索引维护触发器、索引调用接口、保密索引函数包以及加解密函数包;
加密表ET1用于保存被加密字段C的内容;其中包含被加密原表中除C以外的所有字段以及加密字段EC,其中除C以外的所有字段用于存储被加密原表中除字段C以外的所有字段内容,EC用于存储字段C的密文;
与被加密原表同名同字段的视图T1用于代替被加密原表,接管所有的对被加密原表的访问,使得外部用户和应用感觉不到数据被加密和解密的变化,从而实现透明加密;
密文索引表INDEX_T1用于保存被加密字段C的索引,以保证透明加密的同时不影响检索效率;其中包含字段EROWID和密文索引INDEX_C,EROWID字段用于存储被加密记录的ROWID被加密后的内容,以防止泄漏密文索引值和原记录的对应关系,INDEX_C字段用于存储被加密字段C的索引值,此处的ROWID为被加密原表中记录的唯一性标识;
保密索引函数包包括1个以上的保密索引函数,用于使用保序哈希算法,将被加密字段内容映射到索引值,此时索引值的偏序关系能够反映被加密字段真实内容的偏序关系,从而可以基于密文索引实现等值和范围查询;
加解密函数包包括1个以上的加解密函数,用于使用加密函数,将被加密字段内容映射到加密值,此时如果不知道解密算法和密钥,从加密值不能够反推出被加密字段的真实内容,当需要解密时,对加密值使用对应的解密函数和密钥解密出被加密内容;
索引调用接口用于将对T1的SELECT、UPDATE、DELETE请求中的WHERE条件中的与被加密字段C相关的查询条件使用所述保密索引函数做同样的保序哈希计算,得到哈希值,然后在密文索引表INDEX_T1中使用该哈希值执行与查询条件对应的查找操作,得到命中的记录集,再使用加解密函数包中对应于加密函数的解密函数解密这些命中记录集中的EROWID字段,得到ET1中的ROWID集合,此时该ROWID集合就是所述被加密原表中满足查询条件的ROWID集合,即记录集;视图T1的填充函数对这些记录集中有关字段C的内容使用所述加解密函数包中的解密函数进行对应的解密计算得到所需字段C的明文,从而满足SELECT请求;或者通过T1上的安全触发器对这些记录集执行对应的UPDATE、DELETE请求;
索引维护触发器用于将对T1增加、修改、删除等请求进行不同的索引维护操作,具体为:
其中,当增加INSERT请求、修改UPDATE请求、删除DELETE请求中包括被加密字段C内容时,分别进行下述处理:
(1)对于INSERT请求,索引维护触发器调用所述加密函数,计算插入记录中的被加密字段C的密文值,将其连同其它所有字段的值一同插入密文表ET1中,并对该新记录的ROWID调用所述加密函数做加密计算,得到加密后的EROWID,调用所述保密索引函数,计算插入记录中的被加密字段C的哈希值,得到密文索引值;从而得到新增的密文索引记录,进而将该密文索引记录插入到密文索引表INDEX_T1中;
(2)对于UPDATAE请求,索引维护触发器调用所述加密函数,计算更新记录中的被加密字段C的新值的密文值,以该密文值更新ET1中对应记录的加密字段EC;调用所述保密索引函数,计算被更新记录中的被加密字段C的新值的哈希值,得到新的密文索引值,并对更新记录的ROWID做加密计算,得到加密后的EROWID,然后根据该EROWID在密文索引表中更新对应记录的密文索引值;
(3)对于DELETE请求,索引维护触发器删除ET1中对应记录,并对被删除记录的ROWID做加密计算,得到加密后的EROWID,然后根据该EROWID在密文索引表INDEX_T1中删除对应的密文索引记录;
连接关系:
与被加密原表同名同字段的视图T1分别与加密表ET1、索引调用接口和索引维护触发器相连;索引维护触发器分别与密文索引表INDEX_T1、保密索引函数包、加解密函数包相连;索引调用接口分别与保密索引函数包、密文索引表、加解密函数包相连。
3.根据权利要求2所述的一种库内透明数据库加密系统,其特征在于:所述保密索引函数为带随机偏置的保序哈希算法,该算法使得同样的明文对应不同的索引值,避免了原文的统计信息被泄漏。
4.一种库内透明数据库加密系统,其特征在于:基于被加密原表生成加密表ET1,与被加密原表同名同字段的视图T1、安全触发器、索引调用接口、保密索引函数包以及加解密函数包;
T1用于代替被加密原表,接管所有的对被加密原表的访问,使得外部用户和应用感觉不到数据被加密和解密的变化,从而实现透明加密;
ET1用于保存被加密字段C的内容及其索引,以保证透明加密的同时保证很高的检索效率;其中包含被加密原表中除C以外的所有字段、加密字段EC以及加密索引字段INDEX_C,其中除C以外的所有字段用于存储被加密原表中除字段C以外的所有字段内容,EC用于存储字段C的密文,INDEX_C用于存储字段C的索引值;
保密索引函数包包括1个以上的保密索引函数,用于使用保序哈希算法,将字段C内容映射到索引值,此时索引值的偏序关系能够反映字段C真实内容的偏序关系,从而可以基于索引值实现等值和范围查询;
加解密函数包包括1个以上的加解密函数,用于使用加密函数,将字段C内容映射到加密值,此时如果不知道解密算法和密钥,从加密值不能够反推出字段C的真实内容,当需要解密时,对加密值使用对应的解密函数和密钥解密出字段C的真实内容;
索引调用接口用于对T1的SELECT、UPDATE、DELETE请求中的WHERE条件中的与字段C相关的查询条件使用所述保密索引函数做同样的保序哈希计算,得到哈希值,然后在ET1中使用该哈希值对字段INDEX_C执行与查询条件对应的查找操作,得到命中的记录集,视图T1的填充函数对这些记录集中有关字段C的内容使用所述加解密函数包中的解密函数进行对应的解密计算得到所需字段C的明文,从而满足SELECT请求;或者通过T1上的安全触发器对这些记录集执行对应的UPDATE、DELETE请求;
索引维护触发器用于将对T1增加、修改等请求进行不同的索引维护操作,具体为:
其中,当增加INSERT请求、修改UPDATE、删除DELETE请求中包括字段C内容时,分别进行下述处理:
(1)对于INSERT请求,索引维护触发器调用所述保密索引函数,计算插入记录中的字段C的哈希值,得到密文索引值,并对字段C使用所述加密函数做加密计算,得到字段C的密文,从而得到新增的密文记录,进而将该密文记录插入到密文表ET1中;
(2)对于UPDATAE请求,索引维护触发器调用所述保密索引函数,计算被更新记录中有关字段C的新值的哈希值,得到新的密文索引值,并对字段C使用所述加密函数做加密计算,得到字段C的密文,然后根据该密文和密文索引值在ET1中更新对应记录的字段EC和INDEX_C内容;
(3)对于删除DELETE,索引维护触发器删除ET1中对应的记录;
连接关系:
T1分别与ET1、索引调用接口和索引维护触发器相连;索引维护触发器分别与ET1、保密索引函数包、加解密函数包相连;索引调用接口分别与保密索引函数包、ET1、加解密函数包相连。
5.根据权利要求4所述的一种库内透明数据库加密系统,其特征在于:所述保密索引函数为带随机偏置的保序哈希算法,该算法使得同样的明文对应不同的索引值,避免了原文的统计信息被泄漏。
CN201710149817.9A 2016-12-08 2017-03-14 一种面向数据库加密的密文索引方法和库内加密系统 Expired - Fee Related CN106934030B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201611120350 2016-12-08
CN2016111203507 2016-12-08

Publications (2)

Publication Number Publication Date
CN106934030A true CN106934030A (zh) 2017-07-07
CN106934030B CN106934030B (zh) 2019-12-31

Family

ID=59433392

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710149817.9A Expired - Fee Related CN106934030B (zh) 2016-12-08 2017-03-14 一种面向数据库加密的密文索引方法和库内加密系统

Country Status (1)

Country Link
CN (1) CN106934030B (zh)

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108197491A (zh) * 2017-12-29 2018-06-22 西安电子科技大学 一种基于密文的子图检索方法
CN108595291A (zh) * 2018-04-01 2018-09-28 陈丽霞 一种医疗数据备份系统
CN109033873A (zh) * 2018-07-19 2018-12-18 四川长虹智慧健康科技有限公司 一种防止隐私泄漏的数据脱敏方法
CN109784081A (zh) * 2019-02-18 2019-05-21 成都卫士通信息产业股份有限公司 一种数据库透明加密方法、装置、电子设备及存储介质
CN109933490A (zh) * 2019-03-11 2019-06-25 福建慧政通信息科技有限公司 一种数据监测方法及终端
CN110086605A (zh) * 2018-01-26 2019-08-02 北京数盾信息科技有限公司 一种区块链应用中链上数据的加密保护及密文检索方法
CN110765238A (zh) * 2019-10-12 2020-02-07 北京字节跳动网络技术有限公司 数据加密查询方法及装置
CN111078699A (zh) * 2019-12-12 2020-04-28 金蝶软件(中国)有限公司 一种增量数据的判断方法及其相关设备
CN111291402A (zh) * 2020-05-12 2020-06-16 中安威士(北京)科技有限公司 一种数据库透明加密方法和系统
CN111783117A (zh) * 2020-06-30 2020-10-16 中国工商银行股份有限公司 明文数据处理方法、装置及系统
CN111797097A (zh) * 2020-06-30 2020-10-20 杭州密数科技有限公司 一种基于软硬件结合的方式实现安全范围查询的方法
CN112148739A (zh) * 2020-09-25 2020-12-29 世融能量科技有限公司 独立于加密数据库的密文索引方法及系统
CN112307149A (zh) * 2020-10-30 2021-02-02 陕西师范大学 一种具有访问模式保护的空间数据范围查询方法
CN112511606A (zh) * 2020-11-17 2021-03-16 北京三维天地科技股份有限公司 一种智能在线工业数据采集方法和系统
CN112583809A (zh) * 2020-12-09 2021-03-30 北京国研数通软件技术有限公司 非浸入式多种加密算法的数据加密解密的方法
CN113489705A (zh) * 2021-06-30 2021-10-08 中国银联股份有限公司 一种抓取应用程序http通讯数据的方法、装置存储介质
CN116132079A (zh) * 2022-08-09 2023-05-16 马上消费金融股份有限公司 数据处理方法及装置

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101436208A (zh) * 2008-12-09 2009-05-20 北京交通大学 一种密文数据库隐私保护查询方法
CN101504668A (zh) * 2009-03-24 2009-08-12 北京理工大学 一种支持密文索引的数据库透明加密方法
CN101587479A (zh) * 2008-06-26 2009-11-25 北京人大金仓信息技术股份有限公司 面向数据库管理系统内核的数据加解密系统及其方法
US20130097430A1 (en) * 2011-10-14 2013-04-18 International Business Machines Corporation Encrypting data and characterization data that describes valid contents of a column
US20150039901A1 (en) * 2013-07-30 2015-02-05 International Business Machines Corporation Field level database encryption using a transient key
CN104881280A (zh) * 2015-05-13 2015-09-02 南京邮电大学 一种支持多查询的密文数据库中间件的设计方法
CN105637520A (zh) * 2013-10-14 2016-06-01 飞索科技有限公司 数据库中为加密字段生成索引的方法和装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101587479A (zh) * 2008-06-26 2009-11-25 北京人大金仓信息技术股份有限公司 面向数据库管理系统内核的数据加解密系统及其方法
CN101436208A (zh) * 2008-12-09 2009-05-20 北京交通大学 一种密文数据库隐私保护查询方法
CN101504668A (zh) * 2009-03-24 2009-08-12 北京理工大学 一种支持密文索引的数据库透明加密方法
US20130097430A1 (en) * 2011-10-14 2013-04-18 International Business Machines Corporation Encrypting data and characterization data that describes valid contents of a column
US20150039901A1 (en) * 2013-07-30 2015-02-05 International Business Machines Corporation Field level database encryption using a transient key
CN105637520A (zh) * 2013-10-14 2016-06-01 飞索科技有限公司 数据库中为加密字段生成索引的方法和装置
CN104881280A (zh) * 2015-05-13 2015-09-02 南京邮电大学 一种支持多查询的密文数据库中间件的设计方法

Cited By (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108197491A (zh) * 2017-12-29 2018-06-22 西安电子科技大学 一种基于密文的子图检索方法
CN110086605A (zh) * 2018-01-26 2019-08-02 北京数盾信息科技有限公司 一种区块链应用中链上数据的加密保护及密文检索方法
CN108595291A (zh) * 2018-04-01 2018-09-28 陈丽霞 一种医疗数据备份系统
CN108595291B (zh) * 2018-04-01 2021-08-31 山东协和学院 一种医疗数据备份系统
CN109033873A (zh) * 2018-07-19 2018-12-18 四川长虹智慧健康科技有限公司 一种防止隐私泄漏的数据脱敏方法
CN109033873B (zh) * 2018-07-19 2020-11-17 四川长虹智慧健康科技有限公司 一种防止隐私泄漏的数据脱敏方法
CN109784081A (zh) * 2019-02-18 2019-05-21 成都卫士通信息产业股份有限公司 一种数据库透明加密方法、装置、电子设备及存储介质
CN109933490A (zh) * 2019-03-11 2019-06-25 福建慧政通信息科技有限公司 一种数据监测方法及终端
CN109933490B (zh) * 2019-03-11 2022-07-12 福建慧政通信息科技有限公司 一种数据监测方法及终端
CN110765238A (zh) * 2019-10-12 2020-02-07 北京字节跳动网络技术有限公司 数据加密查询方法及装置
CN111078699B (zh) * 2019-12-12 2024-01-26 金蝶软件(中国)有限公司 一种增量数据的判断方法及其相关设备
CN111078699A (zh) * 2019-12-12 2020-04-28 金蝶软件(中国)有限公司 一种增量数据的判断方法及其相关设备
CN111291402A (zh) * 2020-05-12 2020-06-16 中安威士(北京)科技有限公司 一种数据库透明加密方法和系统
CN111783117B (zh) * 2020-06-30 2024-04-30 中国工商银行股份有限公司 明文数据处理方法、装置及系统
CN111797097B (zh) * 2020-06-30 2024-02-27 杭州密数科技有限公司 一种基于软硬件结合的方式实现安全范围查询的方法
CN111797097A (zh) * 2020-06-30 2020-10-20 杭州密数科技有限公司 一种基于软硬件结合的方式实现安全范围查询的方法
CN111783117A (zh) * 2020-06-30 2020-10-16 中国工商银行股份有限公司 明文数据处理方法、装置及系统
CN112148739A (zh) * 2020-09-25 2020-12-29 世融能量科技有限公司 独立于加密数据库的密文索引方法及系统
CN112148739B (zh) * 2020-09-25 2023-12-29 世融能量科技有限公司 独立于加密数据库的密文索引方法及系统
CN112307149B (zh) * 2020-10-30 2022-11-25 陕西师范大学 一种具有访问模式保护的空间数据范围查询方法
CN112307149A (zh) * 2020-10-30 2021-02-02 陕西师范大学 一种具有访问模式保护的空间数据范围查询方法
CN112511606B (zh) * 2020-11-17 2021-07-20 北京三维天地科技股份有限公司 一种智能在线工业数据采集方法和系统
CN112511606A (zh) * 2020-11-17 2021-03-16 北京三维天地科技股份有限公司 一种智能在线工业数据采集方法和系统
CN112583809B (zh) * 2020-12-09 2022-09-30 北京国研数通软件技术有限公司 非浸入式多种加密算法的数据加密解密的方法
CN112583809A (zh) * 2020-12-09 2021-03-30 北京国研数通软件技术有限公司 非浸入式多种加密算法的数据加密解密的方法
CN113489705A (zh) * 2021-06-30 2021-10-08 中国银联股份有限公司 一种抓取应用程序http通讯数据的方法、装置存储介质
CN113489705B (zh) * 2021-06-30 2023-03-24 中国银联股份有限公司 一种抓取应用程序http通讯数据的方法、装置存储介质
CN116132079A (zh) * 2022-08-09 2023-05-16 马上消费金融股份有限公司 数据处理方法及装置

Also Published As

Publication number Publication date
CN106934030B (zh) 2019-12-31

Similar Documents

Publication Publication Date Title
CN106934030A (zh) 一种面向数据库加密的密文索引方法和库内加密系统
CN106934298B (zh) 一种通用数据库透明加密系统
CN104881280B (zh) 一种支持多查询的密文数据库中间件的设计方法
US10826878B2 (en) Database management system shared ledger support
CN105787387B (zh) 一种数据库加密方法及该加密数据库查询方法
US9087212B2 (en) Methods and apparatus for securing a database
Shmueli et al. Database encryption: an overview of contemporary challenges and design considerations
US9747456B2 (en) Secure query processing over encrypted data
CN102402664B (zh) 数据访问控制装置和数据访问控制方法
US9934388B2 (en) Method and system for database encryption
EP2064638B1 (en) Encrypted data search
US8639947B2 (en) Structure preserving database encryption method and system
AU2013277948B2 (en) Homomorphic encryption for database querying
Li et al. Efficiency and security trade-off in supporting range queries on encrypted databases
US20140304298A1 (en) Real-Time Data Redaction In A Database Management System
Shmueli et al. Implementing a database encryption solution, design and implementation issues
US20170357826A1 (en) System and method for obfuscating an identifier to protect the identifier from impermissible appropriation
CN102855448B (zh) 一种字段级数据库加密装置
CN104009987A (zh) 一种基于用户身份能力的细粒度云平台安全接入控制方法
Samarati Data security and privacy in the cloud
CN112583809B (zh) 非浸入式多种加密算法的数据加密解密的方法
CN106022143B (zh) 一种数据库密级标志安全网关操作的方法、装置及系统
US20200021428A1 (en) Method, apparatus, and computer-readable medium for searching polymorphically encrypted data
Kuzu et al. Efficient privacy-aware search over encrypted databases
CN107294701A (zh) 具有高效密钥管理的多维密文区间查询装置及查询方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20191231

CF01 Termination of patent right due to non-payment of annual fee