基于sql重写的数据库外部加解密系统及其使用方法

文档序号:6377117阅读:209来源:国知局
专利名称:基于sql重写的数据库外部加解密系统及其使用方法
技术领域
本发明涉及数据库加密领域,尤其涉及一种基于SQL重写技术的数据库加解密方法。
背景技术
隐私数据的泄露是当前数据库系统面临的一个严重威胁。恶意的数据库管理员可通过访问数据库管理系统服务器去获取隐私数据(包括健康记录、金融股票、个人信息等)并出售给第三者。一种解决此威胁的方式是将数据库中的敏感数据进行加密,但多数数据库系统不适合使用这种方式。这种方式会产生很多无法克服的负面影响。首先,数据库系统要处理大量用户和程序的查询请求并生成数据返回,大量的保密数据和有效查询执行性能之间存在严重冲突。当前针对密文数据的计算方式或是效率低下或是不能提供充分的保·密性,如使用强加密算法所得到密文数据会阻止数据库服务器执行SQL查询命令。其次,当前数据库加密系统在查询中必须先对加密数据表解密,然后用明文数据与查询SQL进行匹配,导致明文数据暴露在数据库系统中,数据库管理人员有机会盗取明文敏感数据。此外,数据库端对查询结果进行解密操作,查询结果以明文的方式返回给应用层,在传输过程中易遭窃取,导致敏感数据泄露。基于以上情况,必须采取高效、安全的加密手段,提升数据库加密的安全性和执行效率。

发明内容
本发明目的在于提供一种基于SQL重写的数据库加解密方法,使用本发明能够集SQL重写、数据加密、数据解密、安全传输、高效查询于一体,实现对数据库加密数据创建和使用的安全防护。本发明所采用的技术方案是基于SQL重写的数据库外部加解密系统,包括SQL重写主模块、语句解析模块、语法规则管理模块、加解密表列管理模块、重写执行模块以及数据加解密模块;
SQL重写主模块在数据库查询过程中,根据加解密需求对语句解析模块、重写执行模块、数据加解密模块和加解密表列管理模块进行调度;
语句解析模块负责对SQL语句进行语法和语义检查,生成SQL语句重写记录存储在加解密表列管理模块中;
语法规则管理模块定义了和加解密相关的SQL语句关键字,供语句解析模块参考; 加解密表列管理模块对数据库中已加密的表列和加解密算法进行记录;
重写执行模块受SQL重写主模块调用,执行SQL语句的重写,并与数据加解密模块进行数据通信;
数据加解密模块负责对输入值按照给定的加解密算法进行加密或者解密。基于SQL重写的数据库外部加解密系统的使用方法,包括执行重写后的数据表的创建过程、重写后的数据的插入过程和数据的查询过程。所述的使用方法,数据表的创建过程包括
Al)创建含有加密列数据表的SQL语句通过SQL重写主模块进入语句解析模块;
A2)语句解析模块调用语法规则管理模块获知需要加密的数据表列及其加密算法; A3)语句解析模块判断SQL语句是否合法,若否,过程终止,若合法,进入下一步;
A4)语句解析模块生成SQL重写记录,该记录记载了加密的表列和相应的加密算法名称,以及加密后的数据类型;
A5)重写记录由加解密表列管理模块进行存储;
A6)语句解析模块将SQL重写记录返回给SQL重写主模块,SQL重写主模块再将重写记 录和待重写的SQL语句交由重写执行模块执行;
A7)重写执行模块根据重写记录将含有加密列数据表的SQL语句重写成标准SQL语句,修改列数据类型为加密后的数据类型,然后将重写后的SQL请求语句送交SQL重写主模块;
AS)重写后的SQL请求语句被送往数据库系统创建数据表。所述的使用方法,数据的插入过程包括
BI) SQL重写主模块将执行数据插入的SQL语句输入语句解析模块;
B2)语句解析模块根据加解密表列管理模块的记录,逐个检查每个数据列是否已记载在SQL重写记录中,若否,不做任何重写,执行B6 ;若为是,则该数据列需要进行加密处理,进入下一步;
B3)语句解析模块将需要加密的表列和相应的加密算法名发送给SQL重写主模块;B4)SQL重写主模块将包含需加密表列数据的SQL语句发送给重写执行模块,重写执行模块调用数据加解密模块进行加密,得到加密后的表列数据;
B5)重写执行模块将SQL语句中的需加密的表列数据替换为加密后的表列数据,并返回给SQL重写主模块;
B6) SQL重写主模块将数据插入语句送往数据库系统。所述的使用方法,数据的查询过程包括
CDSQL重写主模块接收从数据库系统查询数据的SQL请求语句,并发送给语句解析模
块;
C2)语句解析模块根据加解密表列管理模块的记录,逐个检查待查询的数据列是否记录在该记录中,若否,执行步骤C5 ;若为是,则该数据列需要进行解密处理,进入下一步;C3)语句解析模块将需要解密的表列和相应的加密算法名发送给SQL重写主模块;
C4) SQL重写主模块将需要解密的数据表列列为待处理项;
C5) SQL重写主模块将SQL查询语句发往数据库得到查询结果;
C6)对于查询结果,SQL重写主模块检查是否包含有待处理项,若否,执行步骤C8 ;若为是,进入下一步;
C7) SQL重写主模块调用数据加解密模块中相应的加密算法,将待处理项进行解密; CS) SQL重写主模块返回最终的查询结果。本发明的技术效果本发明采用SQL重写技术,在数据库系统外部对数据进行加解密,从而避免数据库系统加解密开销。SQL重写保证数据加解密对应用系统的透明,将SQL请求直接作用在数据库实体数据表列上。SQL重写可保证加解密算法和明文数据仅对应用系统开放,杜绝了数据库系统对明文敏感数据的访问。同时,加解密流程与数据库系统相脱离,对数据库系统不做任何修改。基于SQL重写的数据库加解密方法可强化加密、查询、传输、解密整个操作流程的安全性和效率性。总之,本发明解决了数据库加密中数据库系统负载过重、明文暴露、传输泄露的问题,提高了数据库加密的安全性、可靠性和有效性。


图I为子模块调用示意图。图2为创建数据表流程示意图。
图3为插入数据流程示意图。图4为查询数据流程示意图。
具体实施例方式为了解决数据库系统加解密的大量开销问题,简化数据库处理流程,降低数据库系统负载,本发明采用在数据库外部对数据进行加解密的方式,该方式既保证了面向业务系统的透明性,也减缓了数据库系统的加解密压力。另外,由于数据库安全的防范重点在于杜绝数据库管理人员从内部窃取,应避免明文暴露在数据库系统中,外部加密方式可实现加解密过程脱离数据库系统运行环境。SQL (Structed Query Language,结构化查询语言)重写技术是在SQL请求语句从应用系统发出,在数据库系统执行之前,对语句进行改写,已达到查询性能优化等目的。SQL重写可以保证数据库实体表列直接接受SQL请求,保证加解密算法和数据仅对应用系统开放,杜绝了数据库系统对明文敏感数据的访问。另外,加解密流程与数据库系统相脱离,对数据库系统不做任何修改,仅需针对不同数据库系统建立不同的SQL重写机制。基于SQL重写的数据库加密方法可强化加密、查询、传输、解密整个操作流程的安全性和效率性。一种基于SQL重写的数据库外部加解密方法,使得数据加解密脱离数据库系统环境。该方法包括SQL重写主模块、语句解析模块、语法规则管理模块、加解密表列管理模块、重写执行模块以及数据加解密模块。创建数据表时,SQL重写主模块接收用户发出的SQL请求语句,调用语句解析模块确定待重写的SQL请求语句片段。语句解析模块根据SQL请求类型,调用语法规则管理模块以获得解析方法。语句解析模块生成加密表列重写记录,记载入加解密表列管理模块。SQL重写主模块将重写记录和待重写SQL语句输入重写执行模块,由重写执行模块执行SQL重写。完成整个重写过程后,SQL重写主模块将重写后的SQL请求发往数据库系统。插入数据时,SQL重写主模块接收用户发出的SQL请求语句,调用语句解析模块确定待重写的SQL请求语句片段。语句解析模块根据SQL请求类型,调用语法规则管理模块以获得解析方法。语句解析模块在加解密表列管理中查询是否有与插入数据相对应的重写记录。若有,表明插入的数据需进行加密。SQL重写主模块将重写记录和待重写的插入语句输入重写执行模块,由重写执行模块调用数据加解密模块对插入数据加密,执行SQL重写。SQL重写主模块将重写后的SQL请求发往数据库系统。
查询数据时,SQL重写主模块接收用户发出的SQL请求语句并输入语句解析模块。语句解析模块根据SQL请求类型,调用语法规则管理模块以获得解析方法。语句解析模块在加解密表列管理中查询是否有与查询数据相对应的重写记录。若有,表明查询返回的数据需进行解密。SQL重写主模块根据重写记录,调用数据加解密模块对查询返回结果进行解密,然后将结果返回给用户。下面通过借助实施例和附图更加详细地说明本发明,但以下实施例仅是说明性的,本发明的保护范围并不受这些实施例的限制。本发明提供一种基于SQL重写的数据库加解密方法,其子模块调用关系示意图如图I所示,包括SQL重写主模块、语句解析模块、语法规则管理模块、加解密表列管理模块、重写执行模块以及数据加解密模块。所述SQL重写主模块接收应用系统发送的SQL请求语句,接收数据库系统返回的执行结果。在这一过程中,根据加解密需求对其他模块进行调度,并将最终语句执行结果返回给应用系统。
·
所述语句解析模块负责对SQL语句进行语法和语义检查,以确定SQL语句是否需要重写和需要重写的部分。所述语法规则管理模块内定义了和加解密相关的SQL语句关键字,供语句解析模块参考。所述加解密表列管理模块对数据库中已加密的表列和加解密算法进行记录。所述重写执行模块受SQL重写主模块调用,执行SQL语句的重写,并与数据加解密模块进行数据通信。所述数据加解密模块负责对输入值按照给定的加解密算法进行加密或者解密。为了进一步阐述加解密的SQL重写过程,根据SQL请求语句的类型,对整个方法的运作模式进行更具体的阐述。图2描述了 SQL语句创建数据表,需要对某些表列进行加密的详细流程
(Al) SQL重写主模块将创建数据表的SQL语句输入语句解析模块。创建数据表的SQL请求语句中在需要加密的列的前面有两个关键字ENC (Encrypt,即加密)和加密算法名。ENC指明该列需要加密。语法规则管理模块对关键字ENC和加密算法名做了登记。该请求语句
CREATE TABLE 表名 (
列名称I数据类型1,
ENC加密算法I列名称2数据类型2,
ENC加密算法2列名称3数据类型3,
)
(A2)语句解析模块调用语法规则管理模块获知ENC和加密算法名。(A3)语句解析模块判断SQL语句是否合法,若合法,进入下一步;若否,过程终止。(A4)语句解析模块生成SQL重写记录。该记录记载了加密的表列和相应的加密算法名称,以及加密后的数据类型。该重写记录对加密列2,包含加密后数据类型2’,对加密列3包含加密后数据类型3,。(A5)重写记录由加解密表列管理模块进行存储。(A6)语句解析模块将SQL重写记 录返回给SQL重写主模块,SQL重写主模块再将重写记录和待重写的SQL语句交由重写执行模块执行。(A7)重写执行模块根据重写记录将ENC关键字和加密算法名去除,修改列数据类型为加密后的数据类型,完成SQL的重写,然后将重写后的SQL请求语句送交SQL重写主模块。该重写后的SQL语句为
CREATE TABLE 表名
(
列名称I数据类型1,
列名称2加密后数据类型2’,
列名称3加密后数据类型3’,
)
(AS)重写后的SQL请求语句被送往数据库系统创建数据表。图3描述了 SQL语句插入数据,其中某些表列需要加密的详细流程
(BI) SQL重写主模块将执行数据插入的SQL语句输入语句解析模块。该SQL语句为
INSERT INTO 表名
(列1,…,列i,…)
VALUES (值 1,…,值 i,…)
其中i的取值为所有列的序号。(B2)语句解析模块通过加解密表列管理模块,检查“列i”是否已记载在SQL重写记录中。若是,执行下一步;若否,不做任何重写,执行(B6)。(B3)语句解析模块将“列i ”的重写记录发送给SQL重写主模块。(B4)SQL重写主模块将“列i”的重写记录和待重写SQL语句发送给重写执行模块。重写执行模块根据“列i”对应的加密算法名,调用加解密模块进行加密,得到返回值“值 i,”。替换后的SQL语句为
INSERT INTO 表名
(列1,…,列i,…)
VALUES(值 1,…,值 i’,…)
(B5)重写执行模块将SQL请求语句中的“值i”替换为“值i’ ”,完成SQL重写,并返回给SQL重写主模块。(B6) SQL重写主模块将数据插入语句送往数据库系统。图4描述了采用SQL语句查询数据,返回的表列有加密数据的详细流程。
(Cl)语句解析模块从SQL重写主模块接收从数据库系统查询数据的SQL请求语句(SELECT 语句)。该SQL语句为
SELECT列I,…,列i,…
FROM表名
(C2)语句解析模块检查SELECT的“列i”是否记录在加密表列管理模块中。若是,执行下一步若否,执行(C5)
(C3)语句解析模块将“列i”的重写记录返回给SQL重写主模块。(C4) SQL重写主模块将“列i”列为待处理项,表明需对该列查询结果进行解密处 理。该查询结果为:(值1,…,值i,...)
(C5) SQL重写主模块将SELECT语句发往数据库得到查询结果。(C6)对于查询结果,SQL重写主模块检查是否记录了待处理项“列i”,若是,执行下一步;若否,执行(CS)。(C7) SQL重写主模块对相应的“值i ”,采用重写记录中的加密算法,调用加解密模块中进行解密。(C8) SQL重写主模块将解密后的结果返回。应当明确,所描述的实施例仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造新劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
权利要求
1.基于SQL重写的数据库外部加解密系统,其特征在于包括SQL重写主模块、语句解析模块、语法规则管理模块、加解密表列管理模块、重写执行模块以及数据加解密模块; SQL重写主模块在数据库查询过程中,根据加解密需求对语句解析模块、重写执行模块、数据加解密模块和加解密表列管理模块进行调度; 语句解析模块负责对SQL语句进行语法和语义检查,生成SQL语句重写记录存储在加解密表列管理模块中; 语法规则管理模块定义了和加解密相关的SQL语句关键字,供语句解析模块参考; 加解密表列管理模块对数据库中已加密的表列和加解密算法进行记录; 重写执行模块受SQL重写主模块调用,执行SQL语句的重写,并与数据加解密模块进行数据通信; 数据加解密模块负责对输入值按照给定的加解密算法进行加密或者解密。
2.基于SQL重写的数据库外部加解密系统的使用方法,其特征在于包括执行重写后的数据表的创建过程、重写后的数据的插入过程和数据的查询过程。
3.根据权利要求2所述的使用方法,其特征在于,数据表的创建过程包括 Al)创建含有加密列数据表的SQL语句通过SQL重写主模块进入语句解析模块; A2)语句解析模块调用语法规则管理模块获知需要加密的数据表列及其加密算法; A3)语句解析模块判断SQL语句是否合法,若否,过程终止,若合法,进入下一步; A4)语句解析模块生成SQL重写记录,该记录记载了加密的表列和相应的加密算法名称,以及加密后的数据类型; A5)重写记录由加解密表列管理模块进行存储; A6)语句解析模块将SQL重写记录返回给SQL重写主模块,SQL重写主模块再将重写记录和待重写的SQL语句交由重写执行模块执行; A7)重写执行模块根据重写记录将含有加密列数据表的SQL语句重写成标准SQL语句,修改列数据类型为加密后的数据类型,然后将重写后的SQL请求语句送交SQL重写主模块; AS)重写后的SQL请求语句被送往数据库系统创建数据表。
4.根据权利要求3所述的使用方法,其特征在于,数据的插入过程包括 BI) SQL重写主模块将执行数据插入的SQL语句输入语句解析模块; B2)语句解析模块根据加解密表列管理模块的记录,逐个检查每个数据列是否已记载在SQL重写记录中,若否,不做任何重写,执行B6 ;若为是,则该数据列需要进行加密处理,进入下一步; B3)语句解析模块将需要加密的表列和相应的加密算法名发送给SQL重写主模块;B4)SQL重写主模块将包含需加密表列数据的SQL语句发送给重写执行模块,重写执行模块调用数据加解密模块进行加密,得到加密后的表列数据; B5)重写执行模块将SQL语句中的需加密的表列数据替换为加密后的表列数据,并返回给SQL重写主模块; B6) SQL重写主模块将数据插入语句送往数据库系统。
5.根据权利要求4所述的使用方法,其特征在于,数据的查询过程包括 CDSQL重写主模块接收从数据库系统查询数据的SQL请求语句,并发送给语句解析模块; C2)语句解析模块根据加解密表列管理模块的记录,逐个检查待查询的数据列是否记录在该记录中,若否,执行步骤C5 ;若为是,则该数据列需要进行解密处理,进入下一步;C3)语句解析模块将需要解密的表列和相应的加密算法名发送给SQL重写主模块; C4) SQL重写主模块将需要解密的数据表列列为待处理项; C5) SQL重写主模块将SQL查询语句发往数据库得到查询结果; C6)对于查询结果,SQL重写主模块检查是否包含有待处理项,若否,执行步骤C8 ;若为是,进入下一步; C7) SQL重写主模块调用数据加解密模块中相应的加密算法,将待处理项进行解密; CS) SQL重写主模块返回最终的查询结果。
全文摘要
本发明提供了一种基于SQL重写的数据库加解密系统及其使用方法。该系统包括SQL重写主模块、语句解析模块、语法规则管理模块、加解密表列管理模块、重写执行模块以及数据加解密模块。该方法包括执行重写后的数据表的创建过程、重写后的数据的插入过程和数据的查询过程。本发明采用SQL重写技术,在数据库系统外部对数据进行加解密,从而避免数据库系统加解密开销。
文档编号G06F21/62GK102902932SQ20121034595
公开日2013年1月30日 申请日期2012年9月18日 优先权日2012年9月18日
发明者景奕昕, 韩敏, 余鹏飞, 唐威, 廖巍 申请人:武汉华工安鼎信息技术有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1