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