首页> 中国专利> 一种支持多查询的密文数据库中间件的设计方法

一种支持多查询的密文数据库中间件的设计方法

摘要

本发明公布了一种支持多查询的密文数据库中间件的设计方法,该方法通过对数据进行加密和对数据关系模式进行匿名化,实现可用于存在数据库外包服务的云环境中针对关系数据库存储数据的安全保护,在确保数据可用性的前提下,防范云服务提供商对数据隐私的窥探和泄露。本发明所述的方法主要包括:数据加密存储类型和查询类型的对应、本地数据字典的建立、SQL语句重写等。本发明可以支持:多种方式的密文数据存储、关系模式的匿名化和密文数据字典、密文数据的多种方式查询。该方法易于实现,安全性高,效率高,支持等值查询、范围查询、聚合查询、Top-k查询等多种查询方式,且无需对数据库软件进行任何修改,可广泛支持各种商用关系数据库。

著录项

  • 公开/公告号CN104881280A

    专利类型发明专利

  • 公开/公告日2015-09-02

    原文格式PDF

  • 申请/专利权人 南京邮电大学;

    申请/专利号CN201510242584.8

  • 申请日2015-05-13

  • 分类号G06F9/44(20060101);G06F17/30(20060101);

  • 代理机构32207 南京知识律师事务所;

  • 代理人汪旭东

  • 地址 210023 江苏省南京市栖霞区文苑路9号

  • 入库时间 2023-12-18 10:45:37

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-05-08

    授权

    授权

  • 2015-09-30

    实质审查的生效 IPC(主分类):G06F9/44 申请日:20150513

    实质审查的生效

  • 2015-09-02

    公开

    公开

说明书

技术领域

本发明涉及一种支持多查询的密文数据库中间件的设计方法,属于信息安全技术领域。

背景技术

云计算作为一种新型的网络计算模式,相比于传统IT服务,以其更加经济的方式向用户提供了按需的IT服务(即:计算、存储和应用等)。由于云计算的发展理念符合当前低碳经济与绿色计算的总体趋势,它得到了世界各国政府和企业的大力倡导与推动,带来了计算领域、商业领域的巨大变革。

但在已经实现的云计算服务中,隐私安全问题一直令人担忧,并已成为阻碍云计算发展和推广的主要因素之一。用户的隐私数据包括用来识别或定位个人的信息(例如电话号码、地址和信用卡号等)、敏感的信息(例如个人的健康状况、财务信息、公司的重要文件等)。云计算的隐私安全问题源于云计算的数据外包和服务租赁的特点。用户数据存储到云环境中,用户失去了对数据的直接控制力,可能会导致个人隐私数据的泄露和滥用。而近年来发生的Google、MediaMax和Salesforce.com等云服务商泄露或丢失用户数据的事实证实了人们的担心

加密是一种常用的保护用户隐私的方法,但目前的大多数加密方案都不支持对密文的运算,如对加密数据进行查询(如:范围查询、聚集查询等)、对加密的公司财务信息进行统计等,因而严重妨碍了云服务商为用户提供更进一步的数据管理和运算服务,从而削弱了云计算的优势。

现有的与密文数据查询方法密切相关的专利包括:

一种数据库密文查询的方法(专利号:2005101309070,申请日期:2006.06.14,公开号:CN1786963),虽然实现了在不改变原有数据库基础上的密文数据查询,但是仅能支持等值的密文查询,不支持多种查询方式(例如范围查询)。专利“一种网络信息系统中服务器端的个人隐私数据保护方法”(专利号:2014101180124,申请日期:2014.09.03,公开号:CN103973668A),虽然在建立索引的基础上实现了精确查询、相似查询、范围查询等,但是不能支持数据库的聚合函数的查询,并且建立索引过程复杂,时间空间花费代价很大。以上专利都不支持数据关系模式匿名化,会造成数据含义的泄密。而本发明能够很好地解决上面的问题。

发明内容

本发明目的提供一种支持多查询的密文数据库中间件的设计方法,该方法解决了存在数据库外包服务的云环境中针对关系数据库存储数据的安全保护问题,防范了云服务提供商对用户数据隐私的窥探和泄露,并且该方法提高了数据的安全,能够对返回的数据和关系模式解密,保证了数据的一致性。

本发明解决其技术问题所采取的技术方案是:一种支持多查询的密文数据库中间件的设计方法,该方法对原始SQL语句进行改写,不需要额外建立索引、不需要改变现有的数据库系统和修改标准的SQL语句,实现了密文数据的等值查询、范围查询、聚合查询、Top-k查询等多种查询方式,并且实现了数据关系模式的匿名化,对数据的含义进行了保护。在查询效率和时间上,也优于现有的密文查询技术。

方法流程:

步骤1:SQL语法检查。通过语法检查,执行步骤2,否则,报告错误信息。

步骤2:查询方式与加密存储类型匹配检查。匹配正确,执行步骤3,否则,报告错误信息。

步骤3:原始SQL语句重写为安全SQL语句。

步骤4:提交安全SQL语句给数据库,等待数据库执行。

步骤5:数据库执行安全SQL语句,并返回密文查询结果。

步骤6:接收返回的密文查询结果,通过建立的密文数据字典,将返回的密文数据进行解密,最后将解密的明文数据返回给用户。

本发明通过对SQL语句操作进行重写,在关系模式和数据的匿名化的条件下,利用普通对称加密方式、保序加密、同态加密等加密方式在数据库内部实现数据查询(如:等值查询、范围查询、聚集查询等),并且能将返回加密数据解密,保持了数据的一致性。由于本发明并没有对数据库进行修改,所以可以广泛支持多种数据库。

有益效果:

1、本发明提高了数据的安全,保证了数据的一致性。

2、本发明支持数据关系模式匿名化,不会造成数据含义的泄密。

附图说明

图1为多查询中间件系统的体系结构示意图。

图2为不同查询方法所支持的数据存储类型示意图。

图3为密文数据字典数据结构示意图。

图4为本发明的方法流程图。

具体实施方式

下面结合说明书附图对本发明创造作进一步详细的说明。

一、体系结构

如图1所示,本发明的中间件系统体系构建在客户端与数据库之间,由多查询中间件系统接收客户端的原始SQL语句,在建立密文数据字典基础上,通过对SQL语句重写,实现数据库数据加密和关系模式匿名化。系统可以接收数据库加密数据的查询结果,通过已建立的密文数据字典,对密文数据解密,使客户端得到可用的明文数据。该体系结构可以实现客户端对数据库的透明,只需要客户端使用标准的SQL语句,并且不修改数据库原有的结构,就可以实现数据库密文数据的多种方式查询。

二、数据存储类型

(1)原文存储

原文储存是对数据不进行任何处理,直接明文存储在数据库中,适用于对于数据的安全性不做要求的情形。

(2)对称加密存储

对称加密是采用单密钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,也称为单密钥加密。密钥是控制加密及解密过程的指令。算法是一组规则,规定如何进行加密和解密。

对称加密算法的基本思想:

假设Ek和Dk为加密解密函数,其中k为密钥,Ek(x)为加密之后的密文,则有如下条件成立:

1)对于所有的x和k,满足Dk(Ek(x))=x;

2)在已知Ek(x)的情况下,反向逆推x是计算复杂的。

对称加密速度快,通常适用于需要加密大量数据时使用,安全性较高。常用的算法有:DES、3DES、TDEA、RC4、RC5、IDEA、SKIPJACK、AES等。

(3)保序加密存储

保序加密的基本思想:

假设Ek和Dk为加密解密函数,其中k为密钥,Ek(x)为加密之后的密文,则有如下条件成立:

1)对于所有的x和k,满足Dk(Ek(x))=x;

2)在已知Ek(x)的情况下,反向逆推x是计算复杂的;

3)若x1<x2,则有Ek(x1)<Ek(x2)成立。

保序加密算法对数据加密后不会改变数据的大小比较关系,可以进行相关的数值比较操作。

(4)加同态加密存储

加同态加密的基本思想:

假设Ek和Dk为加密解密函数,其中k为密钥,Ek(x)为加密之后的密文,则有如下条件成立:

1)对于所有的x和k,满足Dk(Ek(x))=x;

2)在已知Ek(x)的情况下,反向逆推x是计算复杂的;

3)存在有效算法⊕和特殊函数R,Ek(x+y)=Ek(x)⊕Ek(y)或者x+y=R(Ek(x)⊕Ek(y))成立。

根据加同态加密的算法思想。加密后的数据求总和与求平均数不会受到影响,可以对其进行相应的数值计算。

系统采取用户自定义的加密方式,可以根据用户对数据不同的查询方式,来选择数据的加密类型。例如:对于安全性不作要求的数据采用原文储存;只需要进行等值查询的数据,可以根据自定义的安全要求自定义选择任意加密类型;需要进行范围查询、Top-k查询、部分聚集查询(MAX、MIN)对数据进行保序加密;需要进行部分聚集查询(SUM、AVG)时对数据进行加同态加密;需要进行组合查询时,则需要按照不用的要求对数据分别进行相应的加密,并同时储存。

三、查询处理方法

常见的查询可以分成两类:基本查询和复杂查询。基本查询可分为:等值查询、范围查询、聚集查询、Top-k以及上述四种的组合。复杂查询建立在基本查询的基础上,可以分为:连接查询和嵌套查询。

⒈基本查询,可根据不同的查询方式,需要对字段的采用不同类型加密方式。

⑴.对于字段的等值查询,所有类型的加密方式(即:对称加密、保序加密)都是支持的。

⑵.字段的范围查询,根据保序加密算法思想,加密前后数据仍然具有数值大小可比较的关系,支持范围查询。

⑶.对于聚集查询,SQL提供了六种三类聚集函数:

①.对于COUNT(*)和COUNT(<列名>),数据加密并不影响这两类聚集函数的使用。

②.对于MAX(<列名>)和MIN(<列名>)聚集函数,涉及到数值大小的比较,对数据采用保序加密,则可以正常使用该类聚合函数。

③.对于SUM(<列名>)和AVG(<列名>)聚集函数可以使用加同态加密,根据加法同态的思想,加密后的数据数值的和以及平均数是不变的,SUM(<列名>)和AVG(<列名>)这个两个聚集函数就可以正常使用。

⑷.Top-k查询只要对排序的数据进行保序加密,保证加密前后数据数值大小关系不发生改变,则可以正常的工作。另外如果涉及到查询数据排序(例如关键字ASC、DESC),也需要使用保序加密对数据进行处理。

⑸.对于上述四种类型的组合形式,只要按照上述方法进行相应的组合即可。例如学生表S(S#,SNAME,SCORE),对于S#属性同时需要进行范围查询和SUM、AVG聚合查询,必须将那S#数据的同态加密、保序加密数据同时存储到数据库中。查询时由系统根据查询类型,自动选取相应的加密数据类型。值得注意的是,应该避免出现同时储存较高安全级别的对称加密和较低安全级别的保序或者同态加密,否则不仅会使数据不安全,还会造成数据冗余。

综上所述,图2给出了不同查询方法所支持的数据存储类型。

⒉在复杂查询中主要涉及连接查询和嵌套查询

⑴.连接查询:在查询时会涉及到两个和两个以上的基本表查询,查询方式与基本查询相同,必须保证多个基本表的相联属性的加密存储类型完全一致。例如:学生表S(S#,SNAME,SCORE)和选课表SC(S#,SCORE)在进行连接查询时,S#为相联属性,必须保证学生表和选课表的S#属性加密储存类型完全一致。当相联属性的加密储存类型不一致时,无法进行连接查询,所以必须在建立基本表时保证相联属性加密储存类型一致。

⑵.嵌套查询是涉及多个基本表的嵌套结构查询,查询方式也与基本查询相同,只需要将嵌套查询逐步拆封成若干个基本查询,就可以实现对嵌套查询的支持。

四、关系模式匿名化

⑴.关系模式匿名化

为了实现数据库中关系模式的匿名化,可以把明文关系模式映射为匿名化关系模式的元数据,对数据库中的数据表名和数据列名进行哈希映射(例如MD5),屏蔽数据的格式,防止暴露数据库数据的含义。

⑵.密文数据字典

为了实现关系模式匿名化的功能,必须在本地建立数据字典,保存数据库中表名、列名的明文、密文的对应关系。

本发明采用数据库-基本表-字段三层结构来备份信息。密文数据字典的数据库层中存储基本表类和有关信息,例如:原始表名、加密表名等。密文数据字典的基本表层中存储字段的有关信息,例如:原始字段名、加密字段名、数据类型、数据加密类型。例如:假设H为哈希函数,orign_att为原始字段名,可以得到hash_att=H(orign_att),其中hash_att为哈希映射字段名,数据库中字段名定义为hash_att,密文数据字典中同时存储orign_att和hash_att,便可以实现关系模式的匿名化。另外在本地数据字典还需要存储各类加密方式的秘钥,以便在解密时由系统自动调用,将数据库内的加密数据解密成原始数据。

图4给出了密文数据字典结构。

本发明的方法包括:

根据SQL标准,查询语句SELECT的范式一般可以表示为:

SELECT[ALL|DISTINCT]<目标列表达式>[,<目标列表达式>]……

FROM<表名>[,<表名>]……

[WHERE<条件表达式>]

[GROUP BY<列名1>[HAVING<条件表达式>]]

[ORDER BY<列名2>[ASC|DESC]]

首先我们对SELECT语句中的部分进行约定:

对于查询语句s=“SELECT属性FROM关系表WHERE条件…”,我们将“WHERE”之前的部分称为目标子句或目标表达式,之后的部分称为条件子句或条件表达式。

目标表达式可以分为三种:①.列名②.聚合函数③.列名或聚合函数的代数表达式。

条件表达式由条件因子构成,在条件子句中,满足SQL标准语法要求的谓词表达式即为条件因子,形如“exp1 op exp2”,其中exp1和exp2为表达式、值或子查询等,如attr+2、5*attr、100等,op为关系谓词,如>、<、=、<=、>=等。条件因子是条件子句的最小组成元素。

整个系统工作步骤可以分为6步,分别为:①.SQL语法检查②.查询方式与加密存储类型匹配检查③.重写SQL语句④.提交安全SQL语句⑤.数据库执行安全SQL语句⑥.查询结果解密,详细步骤工作方式下述:

步骤1:SQL语法检查

在最开始需要做的是SQL语句的语法检查,常规地检查SQL语句有没有基本的语法错误,如果有错误,直接返回报告语法错误。如果没有错误,进入下一个阶段。

步骤2:查询方式与加密存储类型匹配检查

在这个阶段主要是通过调用密文数据字典,对SQL语句中查询方式与数据项加密存储类型的匹配检查,例如对数据库表的字段进行范围查询、Top-k或者使用部分聚集函数(MAX、MIN)时必须保证数据库有该数据项的保序加密的数据;对数据库表进行部分聚合函数(SUM、AVG)时必须保证数据库有该数据项同态加密的数据。如果查询方式和数据项的加密存储类型是不匹配的,说明该操作是无法使用的,直接返回报告匹配不符的错误。如果没有错误,进入下一个阶段。

步骤3:重写SQL语句

I.对SELECT语句中的目标表达式、表名和列名进行替换

将SQL语句中所有的目标列表达式、表名和列名,根据密文数据字典中存储的表名与列名的明文与密文的对应关系,将所有的表名和列名以及目标表达式,进行匿名化替换。例如:目标表达式为SUM(orign_att)替换为SUM(hash(orign_att)),其中SUM为聚集函数,orign_att是原始列名。并在列名前都自动添加所属的表和数据库信息,组合成形如:匿名数据库名.匿名数据表名.匿名列名。

II.对SELECT语句中的条件因子进行替换

将SQL语句中的所有的条件因子进行替换。条件因子形如“exp1op exp2”,由系统自动来根据本地数据字典,来判别exp1或exp2是属性名,根据关系谓词op来选择将属性名替换成相应的加密属性名。如果关系谓词op是“=”,则可以将属性名替换成任意的加密属性名,并在属性名前自动添加所属的表和数据库信息,再将另一个表达式根据加密属性的算法替换成加密的数据。如果关系谓词op可以为“<”、“>”、“<=”、“>=”,则必须将属性名替换为相应的保序加密数据的列名,并在列名前添加所属的表和数据库信息。再将另一个表达式替换成相应的保序加密的数据。最后将条件因子的表达式全部统一为:匿名数据库名.匿名数据表名.匿名列名op数据表达式。

执行到该步骤,对原始的SQL语句完全进行重写,对所有的数据进行加密以及对关系模式进行匿名化处理,改写为安全SQL语句。

步骤4:提交安全SQL语句

将重写的安全SQL语句提交给数据库,等待数据库执行。

步骤5:数据库执行安全SQL语句

数据库执行提交的安全SQL语句,并返回密文查询结果。

步骤6:查询结果解密

中间件接收返回的密文查询结果,通过建立的密文数据字典,将返回的密文数据进行解密,最后将解密的明文数据返回给用户。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号