面向数据库管理系统内核的数据加解密系统及其方法.pdf

上传人:a3 文档编号:1026305 上传时间:2018-03-26 格式:PDF 页数:16 大小:709.09KB
返回 下载 相关 举报
摘要
申请专利号:

CN200810115678.9

申请日:

2008.06.26

公开号:

CN101587479A

公开日:

2009.11.25

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效|||公开

IPC分类号:

G06F17/30

主分类号:

G06F17/30

申请人:

北京人大金仓信息技术股份有限公司

发明人:

王 珊; 任永杰; 冯 玉; 张文亮; 白 芸; 王建华

地址:

100085北京市海淀区上地西路8号院4号楼601室

优先权:

专利代理机构:

北京北新智诚知识产权代理有限公司

代理人:

陈 曦

PDF下载: PDF下载
内容摘要

本发明公开了一种面向数据库管理系统内核的数据加解密系统,同时也公开了利用该数据加解密系统对数据库中的数据进行加、解密处理的具体方法。该数据加解密系统包括分布在客户端的用户请求接口单元和分布在服务器端的加密定义单元、查询处理单元、数据操作单元、密钥管理单元、数据解密单元、数据加密单元和密钥库。本发明在数据库管理系统内核中实现数据存储加密。在对数据库中数据进行带密检索时,数据库原来的优化策略依然可以使用,因此可以提供高性能的带密检索。

权利要求书

1.  一种面向数据库管理系统内核的数据加解密系统,其特征在于:
所述数据加解密系统包括分布在客户端的用户请求接口单元和分布在服务器端的加密定义单元、查询处理单元、数据操作单元、密钥管理单元、数据解密单元、数据加密单元和密钥库;
其中,所述用户请求接口单元连接数据库系统中的SQL引擎,所述SQL引擎分别与加密定义单元、查询处理单元和数据操作单元相连接,所述加密定义单元连接所述密钥管理单元,所述密钥管理单元与密钥库相连接,所述查询处理单元连接数据解密单元,所述数据操作单元连接数据加密单元。

2.
  如权利要求1所述的数据加解密系统,其特征在于:
所述密钥库存储在基于硬件设备实现的加密卡中。

3.
  如权利要求1所述的数据加解密系统,其特征在于:
所述查询处理单元包括语法分析、语义检查、查询优化、查询执行四个模块。

4.
  如权利要求3所述的数据加解密系统,其特征在于:
所述语义检查模块根据数据字典中的标签在查询执行树设置加密标签,所述查询优化模块根据查询执行树上的加密标签调用数据解密单元。

5.
  一种面向数据库管理系统内核的数据加密方法,基于如权利要求1所述的数据加解密系统实施,其特征在于:
(1)密钥管理单元生成加密所需的密钥,所述密钥保存在密钥库中;
(2)加密定义单元定义加密策略,生成表或列加密所使用的密钥的密钥号,同时在数据字典中增加记录表或列的加密标签;
(3)根据需要判断是进行页面级加密还是数据项加密;
(4)对于待加密的字段数据,首先输入元组的对象内部标识和密钥号以便生成该字段数据的密钥,然后将该字段数据加密成密文;
(5)把所述密文拼装成符合数据库内部结构的元组,然后把所述元组放到数据库页面的位置上;
(6)处理表中的相关索引,完成数据加密过程。

6.
  如权利要求5所述的数据加密方法,其特征在于:
所述步骤(1)中,所述密钥管理单元动态生成所述密钥。

7.
  如权利要求5所述的数据加密方法,其特征在于:
所述步骤(2)中,定义加密策略的过程还包括创建加密表,生成密钥接口,保存所述加密表的密钥号、索引密钥。

8.
  如权利要求5所述的数据加密方法,其特征在于:
所述步骤(3)中,在对数据库中的表进行加密时,优选采用页面级加密;在对数据库中表的部分字段进行加密时,优选采用数据项加密。

9.
  如权利要求7或8所述的数据加密方法,其特征在于:
所述步骤(3)中,对加密表上的索引或者含有加密字段的索引采用页面级加密。

10.
  一种面向数据库管理系统内核的数据解密和查询方法,基于如权利要求1所述的数据加解密系统实施,其特征在于:
(1)查询处理单元对SQL字符串依次进行语法分析和语义检查;
(2)查询处理单元执行查询优化环节,并选择使用顺序扫描方法还是用索引扫描方法;
(3)在选择使用顺序扫描方法的情况下,解密对象为待查询的数据;在选择使用索引扫描方法的情况下,解密对象为索引页面;
(4)根据获取的字段密钥、元组的对象内部标识和字段ID信息删除加密字段的加密属性,然后在数据库管理系统中保存解密后的表数据和索引数据,对解密后的数据执行查询操作;
(5)将查询的结果集返回给用户。

说明书

面向数据库管理系统内核的数据加解密系统及其方法
技术领域
本发明涉及一种面向数据库管理系统(Database ManagementSystem,简写为DBMS)的内核层实施,对数据库中的数据进行加、解密处理的系统及其方法,属于数据库管理技术领域
背景技术
DBMS是信息系统的核心和基础,其安全性如何对保障整个信息系统的安全至关重要。在现有技术中,虽然DBMS在操作系统(OperationSystem,简写为OS)的基础上增加了不少安全措施,例如基于权限的访问控制等,但OS和DBMS对数据库文件本身仍然缺乏有效的保护措施。有经验的黑客会“绕道而行”,直接利用OS工具窃取或篡改数据库文件的内容。这种安全隐患被称为通向DBMS的“隐秘通道”,它所带来的危害一般数据库用户难以觉察。因此,对数据库中的敏感数据进行加密处理,是堵塞这一“隐秘通道”的有效手段。
另一方面,在传统数据库系统中,系统管理员的权力至高无上。他既负责各项系统管理工作,例如资源分配、用户授权、系统审计等,又可以查询数据库中的一切信息。为此,不少数据库系统以种种手段来削弱系统管理员的权力,对数据库进行加密就是常用的措施之一。数据库实施加密以后,各用户(或用户组)的数据由用户用自己的密钥加密,系统管理员获得的信息无法进行正常脱密,从而保证了用户信息的安全。另外,通过加密处理,数据库的备份内容成为密文,能减少因备份介质失窃或丢失而造成的损失。由此可见,数据库加密对于企业内部的安全管理而言也是不可或缺的。
目前,对数据库中的数据进行加密主要有三种方式:OS层加密、DBMS外层加密、DBMS内核层加密,下面分别进行简要的说明:
OS层加密是指在操作系统级别直接对存储的数据进行加密。在操作系统级别可以对存储数据的文件进行加密,也可以对存放数据文件的介质进行加密。但是,在OS层无法辨认数据库文件中的数据关系,从而无法产生合理的密钥,也无法进行合理的密钥管理和使用。另外,在数据库中可以只需要对表中的个别数据进行加密,在操作系统级别进行加密时,不能区分出关键数据,因此实际加密的数据比可能需要加密的数据要多得多,会影响系统的性能。所以对于大型数据库来说,在OS层对数据库文件进行加密目前还难以实现。
DBMS外层加密是将数据库加密系统做成DBMS的一个外层工具。采用这种加密方式时,加/解密运算可以放在客户端进行,其优点是不会加重数据库服务器的负载,并可实现网上传输加密,但因为无法修改数据库内核,很难把数据加密与数据库的查询优化等技术结合起来,因此数据库的性能受到很大的影响。
例如在应用DBMS外层加密后,由于加密后的数据不再具有原来数据库索引所需要的顺序,对数据库中的表做范围查询时,原来查询可以使用的索引则变得不可用,因此只能采用对表的全表顺序扫描,读取整个表,解密并对其中的值进行对比的方式。在这种情况下,原本只需要三秒钟就可执行完毕的任务可能会变成一个长达三小时的漫长查询。
DBMS内核层加密是指数据在物理存取之前完成加/脱密工作。从实现方式上看,DBMS内核层加密可分为软件加密和硬件加密。硬件加密是通过一个专门的加密卡来实现密钥的管理和加解密操作。因此安全性和性能上都要比软件加密好。当然,硬件加密的成本相对高一些,而且实施难度有所增大。内核层加密的优点是加密功能强,并且加密功能几乎不会影响DBMS的性能。由于数据库数据的加解密直接在数据库内核中实现,系统安全性在理论上可以做得完备,并且可以更好地与数据库的查询优化技术结合,解决数据库加密所带来的性能问题。但是,采用内核层加密方式要求DBMS和加密器(硬件或软件)之间的接口开放,这需要得到DBMS开发商的支持,实践中难以都满足这一要求。
发明内容
本发明所要解决的首要技术问题是提供一种面向数据库管理系统内核的数据加解密系统(简称为数据库数据加解密系统)。利用该系统能够在DBMS的内核层面实现对存储在数据库中的数据进行加、解密处理,并能有效解决数据库带密检索影响性能的问题。
本发明所要解决的另外一个技术问题是提供利用上述数据加解密系统对数据库中的数据进行加、解密处理的具体方法。
为解决上述的技术问题,本发明采用下述的技术方案:
一种面向数据库管理系统内核的数据加解密系统,其特征在于:
所述数据加解密系统包括分布在客户端的用户请求接口单元和分布在服务器端的加密定义单元、查询处理单元、数据操作单元、密钥管理单元、数据解密单元、数据加密单元和密钥库;
其中,所述用户请求接口单元连接数据库系统中的SQL引擎,所述SQL引擎分别与加密定义单元、查询处理单元和数据操作单元相连接,所述加密定义单元连接所述密钥管理单元,所述密钥管理单元与密钥库相连接,所述查询处理单元连接数据解密单元,所述数据操作单元连接数据加密单元。
其中,所述密钥库存储在基于硬件设备实现的加密卡中。
所述查询处理单元包括语法分析、语义检查、查询优化、查询执行四个模块。
所述语义检查模块根据数据字典中的标签在查询执行树设置加密标签,所述查询优化模块根据查询执行树上的加密标签调用数据解密单元。
一种面向数据库管理系统内核的数据加密方法,基于上述的数据加解密系统实施,其特征在于:
(1)密钥管理单元生成加密所需的密钥,所述密钥保存在密钥库中;
(2)加密定义单元定义加密策略,生成表或列加密所使用的密钥的密钥号,同时在数据字典中增加记录表或列的加密标签;
(3)根据需要判断是进行页面级加密还是数据项加密;
(4)对于待加密的字段数据,首先输入元组的对象内部标识和密钥号以便生成该字段数据的密钥,然后将该字段数据加密成密文;
(5)把所述密文拼装成符合数据库内部结构的元组,然后把所述元组放到数据库页面的位置上;
(6)处理表中的相关索引,完成数据加密过程。
其中,所述步骤(1)中,所述密钥管理单元动态生成所述密钥。
所述步骤(2)中,定义加密策略的过程还包括创建加密表,生成密钥接口,保存所述加密表的密钥号、索引密钥。
所述步骤(3)中,在对数据库中的表进行加密时,优选采用页面级加密;在对数据库中表的部分字段进行加密时,优选采用数据项加密。
一种面向数据库管理系统内核的数据解密和查询方法,基于上述的数据加解密系统实施,其特征在于:
(1)查询处理单元对SQL字符串依次进行语法分析和语义检查;
(2)查询处理单元执行查询优化环节,并选择使用顺序扫描方法还是用索引扫描方法;
(3)在选择使用顺序扫描方法的情况下,解密对象为待查询的数据;在选择使用索引扫描方法的情况下,解密对象为索引页面;
(4)根据获取的字段密钥、元组的对象内部标识和字段ID信息删除加密字段的加密属性,然后在数据库管理系统中保存解密后的表数据和索引数据,对解密后的数据执行查询操作;
(5)将查询的结果集返回给用户。
本发明具有如下的有益效果:
1.数据的加解密对用户透明,数据库的有关应用程序不需要做任何修改;
2.数据库原有的优化策略保持不变,索引机制可以继续使用,因此数据加解密对数据库性能的影响很小;
3.密钥的管理由加解密系统自行完成,减轻用户的负担,而且密钥可以采用硬件设备实施保护,不易被窃取。
附图说明
下面结合附图和具体实施方式对本发明作进一步的说明。
图1为本发明所提供的面向数据库管理系统内核的数据加解密系统的组成结构示意图;
图2显示了创建加密表的具体步骤;
图3显示了给存在的表增加加密属性的具体步骤;
图4显示了创建含有加密字段的表的具体步骤;
图5显示了对表中字段添加加密属性的具体步骤;
图6为对数据库中的数据实施加密的步骤示意图;
图7显示了除去加密字段的加密属性的基本步骤;
图8显示了数据解密和查询过程的基本步骤。
具体实施方式
下面首先介绍本发明所提供的面向数据库管理系统内核的数据加解密系统的具体组成结构。
如图1所示,本数据库数据加解密系统包括分布在客户端的多个用户请求接口单元和分布在服务器端的加密定义单元、查询处理单元、数据操作单元、密钥管理单元、数据解密单元、数据加密单元和密钥库等。其中,用户请求接口单元连接数据库系统中的SQL引擎。该SQL引擎分别与加密定义单元、查询处理单元和数据操作单元相连接。加密定义单元连接密钥管理单元,同时也连接数据库系统本身。密钥管理单元与密钥库相连接。该密钥库可以存储在基于硬件设备实现的加密卡中,以减少被网络黑客窃取的可能性。查询处理单元连接数据解密单元,数据操作单元连接数据加密单元。数据解密单元和数据加密单元也分别连接数据库系统本身。另外,在数据库系统中存放有元数据。该元数据由数据库系统中的加密标签予以封装。
在上述的数据库数据加解密系统中,密钥管理单元负责生成系统使用的密钥库,并根据用户的设置,生成表或列加密所使用的密钥的密钥号,实现密钥的更新和销毁。加密定义单元用于定义数据库中表或列的加密标签属性或修改数据库中表或列的加密标签属性,同时把加密定义存储在数据库系统中的数据字典中。查询处理单元包括语法分析、语义检查、查询优化、查询执行四个模块,用于处理数据库中查询语句的执行,并把结果集返回给客户端。查询处理单元在接收到SQL查询请求时,首先进行语法分析,检查SQL语句是否符合语法要求,然后进行语意检查,例如查询的表或列是否存在,通过后,由查询优化模块生成最优的执行计划交给查询执行模块执行。查询处理单元在进行语义检查时,语义检查模块会根据数据字典中的标签在查询执行树设置加密标签,在查询执行时,查询执行模块根据查询执行树上的加密标签调用数据解密单元,进行数据项或页面的解密操作。数据操作单元负责处理数据库中增、删、改语句的执行。在向数据库插入的元组需要加密时,调用数据加密单元,进行数据项或页面的加密操作。数据加密单元根据数据字典中记录的数据加密属性,动态生成密钥,进行页面加密或数据项加密。当查询处理单元查询所需要的数据时,数据解密单元使用动态生成的密钥进行页面或数据项的解密。
利用上述的数据库数据加解密系统,本发明在数据库管理系统的内核层面实现数据存储加解密操作,并能够提供高性能的带密检索。在对表中的数据进行增、删、改、查询操作时,DBMS会自动对该列数据进行加、解密工作,并且对用户透明。
下面结合附图详细说明利用本数据库数据加解密系统对数据库中的数据进行加、解密处理的具体实施步骤。
首先,需要扩充DBMS的数据字典信息。由于DBMS中的数据字典存放了有关数据库中数据的元数据。在数据字典中增加记录表或列的加密标签,以标识该表或列是否需要加密。
在DBMS中,定义加密策略是通过DDL语句实现的。用户可以在创建表或修改表定义时指定对整张表加密或对表中的某些列进行加密,数据库系统会根据用户的设置,由加密定义单元生成表或列加密所使用密钥的密钥号(即密钥ID),同时在数据字典中记录表或列的加密标签信息。图2~图5显示了定义加密策略的各项具体实施步骤。这些步骤根据实际需要选择使用,它们都属于图1中加密定义单元所实现的基本功能。
在定义加密策略的过程中,需要创建加密表。图2显示了创建加密表的具体步骤。在创建了加密表之后,接着生成密钥接口。该密钥接口用于输出表密钥。接下来的步骤是保存表的密钥号、索引密钥。表的密钥号和索引密钥传送给数据库管理系统。
图3显示了给已经存在的表增加加密属性的基本步骤。首先,修改明表为密表,然后生成密钥接口。从密钥接口输出密钥号,接下来检查表中是否有数据?如果有的话,则在页面加密接口接收密钥号和页面号,从而对数据实施加密操作。然后,在数据库管理系统中保存加密后的表数据和索引,并进一步保存表的密钥号、索引密钥。如果在表中没有数据,则直接进入保存表的密钥号、索引密钥的环节。
图4显示了创建含有加密字段的表的具体步骤。如图4所示,在创建含有加密字段的表之后,生成密钥接口。该密钥接口输出字段的密钥号。然后,在数据库管理系统中保存字段的密钥号和索引密钥号。
图5显示了对表中的字段添加加密属性的具体步骤。首先,判断该表是否为加密表?如果是则直接退出本步骤,如果不是的话则生成密钥接口。该密钥接口输出密钥号。然后进一步判断表中是否有数据?如果有数据的话则将数据送入数据项与页面加密接口。该加密接口同时接收密钥号、元组OID(Object Identifier,对象内部标识)和字段ID,以便对数据实施加密。加密后的表数据和索引数据保存在数据库管理系统中。然后,在数据库管理系统中进一步保存字段的密钥号和索引密钥号。如果上述的表中没有数据,则直接在数据库管理系统中保存字段的密钥号和索引密钥号。
在通过加密定义单元完成上述的加密策略定义工作之后,接下来实施正式的数据加密步骤。
数据加密步骤中可以采用两种粒度的数据库存储加密方式:页面级加密和数据项加密。页面级加密是以表的每个页面为单位进行加密,数据项加密是只对元组中的该字段进行加密。在对数据库中的表(所有字段)进行加密时,优选采用页面级加密;当对数据库中表的部分字段进行加密时,优选采用数据项加密。另外,对加密表上的索引采用页面级加密,对含有加密字段的索引也采用页面级加密;
如果采用页面级加密方式,对于表和索引来说,每个页面可以由页面编号唯一标识,则可由页面编号和表或索引的密钥号动态生成密钥对页面进行加/解密操作。
如果采用数据项加密方式,对于数据库表中元组的每一个数据项可以用该元组的内部标识和列标识唯一表示。加解密数据项时将根据元组OID、列标识和列密钥号来动态生成密钥对数据项进行加/解密操作。
图6给出了数据项加密的基本步骤,首先对每个字段的值执行操作,然后判断是否是加密字段。如果是加密字段,则直接把每个字段的值拼装成符合数据库内部结构的元组;如果不是加密字段,则首先输入元组OID和字段的密钥ID,以便生成该字段数据的密钥,然后将该字段数据加密成密文,同样把每个字段的值拼装成符合数据库内部结构的元组。然后,把组装好的元组放到数据库页面的位置上,接下来处理表中的相关索引,对于每个索引,在索引树中插入相关的索引项。由此完成整个数据项加密的步骤。
页面级加解密在DBMS把数据或索引页面进行磁盘I/O操作时进行。当把页面写入磁盘,对于需要加密的页面,进行加密后再写入磁盘。从磁盘读取加密的页面时,进行页面的解密操作。
在数据加密的过程中,当向表中插入数据或更新表中数据时,数据库数据加解密系统会根据数据字典记录的加密信息,进行页面加密或数据项加密,如果表上有索引,并且是加密表或索引字段包含加密列,则对索引进行页面加密。
接下来介绍利用本数据库数据加解密系统对数据库中的加密数据进行解密处理的具体步骤。对加密表或列中的数据进行解密处理是进行数据库查询工作的基础。
在解密过程中,也要用到定义加密策略时所获得的字段密钥号、元组OID和字段ID等信息。利用这些信息,可以将加密字段的加密属性除去。
图7显示了除去加密字段的加密属性的基本步骤。首先,判断表中是否有数据?如果没有数据的话,则直接删除字段密钥号、索引密钥号;如果有数据的话,则进入数据解密单元中的数据项解密接口。在该接口中,根据获取的字段密钥、元组OID和字段ID等信息对加密字段的加密属性予以删除。然后,在数据库管理系统中保存解密后的表数据和索引数据,并进一步删除字段密钥号和索引密钥号。
图8显示了数据解密和查询过程的基本步骤。该步骤主要通过查询处理单元实施,具体的实施过程是这样的:首先,查询处理单元中的语法分析模块、语义检查模块对SQL字符串依次进行语法分析和语义检查操作。在语义检查过程中,根据数据字典中的标签在查询执行树设置加密标签,然后通过查询优化模块执行查询优化环节,例如,对表中的数据选择索引扫描还是顺序扫描,多表连接时,决定连接顺序和连接操作的算法等。当需要查询加密表或列中的数据时,通过查询执行模块予以执行。如果使用顺序扫描方法,则只需要解密查询的数据;如果使用索引扫描方法,则需要解密用到的索引页面。在解密步骤完成之后,向用户返回结果集。
需要说明的是,在上述的数据加解密步骤中,进行数据加解密的密钥是动态生成的。数据库数据加解密系统在初始化时生成该系统所使用的密钥库。该密钥库可以存储在基于硬件设备实现的加密卡中。
以上公开的仅为本发明的具体实施例。根据本发明所提供的技术思想,本领域的普通技术人员所能思及的变化都应落入本发明的保护范围内。

面向数据库管理系统内核的数据加解密系统及其方法.pdf_第1页
第1页 / 共16页
面向数据库管理系统内核的数据加解密系统及其方法.pdf_第2页
第2页 / 共16页
面向数据库管理系统内核的数据加解密系统及其方法.pdf_第3页
第3页 / 共16页
点击查看更多>>
资源描述

《面向数据库管理系统内核的数据加解密系统及其方法.pdf》由会员分享,可在线阅读,更多相关《面向数据库管理系统内核的数据加解密系统及其方法.pdf(16页珍藏版)》请在专利查询网上搜索。

本发明公开了一种面向数据库管理系统内核的数据加解密系统,同时也公开了利用该数据加解密系统对数据库中的数据进行加、解密处理的具体方法。该数据加解密系统包括分布在客户端的用户请求接口单元和分布在服务器端的加密定义单元、查询处理单元、数据操作单元、密钥管理单元、数据解密单元、数据加密单元和密钥库。本发明在数据库管理系统内核中实现数据存储加密。在对数据库中数据进行带密检索时,数据库原来的优化策略依然可以使。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1