CN101162493A - 维护数据库安全的方法和系统 - Google Patents
维护数据库安全的方法和系统 Download PDFInfo
- Publication number
- CN101162493A CN101162493A CNA2007100598231A CN200710059823A CN101162493A CN 101162493 A CN101162493 A CN 101162493A CN A2007100598231 A CNA2007100598231 A CN A2007100598231A CN 200710059823 A CN200710059823 A CN 200710059823A CN 101162493 A CN101162493 A CN 101162493A
- Authority
- CN
- China
- Prior art keywords
- data
- encryption
- key
- relation
- data base
- 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.)
- Pending
Links
Images
Abstract
本发明公开了一种维护数据库安全的方法,包括以下步骤:用户创建关系;通过SQL的扩展语句指定是否对其中的数据进行加密存储,若需要进行加密存储则密钥产生器自动产生一个密钥,若不需要进行加密存储则将数据写出到外存;将密钥产生器产生的密钥存入安全字典中的加密关系表中;在DBMS将数据写到外存时,查询系统表中的安全字典,判断是否需要加密,若需要加密则利用安全字典中的密钥对数据进行加密,若不需加密则将数据写出到外存。本发明在DBMS将内存中的数据写到外存时进行加密操作,在将外存中的数据读到内存时进行解密操作,因为数据在内存中是明文的,所以DBMS的功能不会受到任何影响,并且可以按常规方式建立索引。
Description
技术领域
本发明涉及数据库领域,特别是涉及一种维护数据库安全的方法和系统。
背景技术
目前,计算机数据存储的安全问题、敏感数据的防窃取和防篡改问题越来越引起人们的重视,数据库系统作为计算机信息系统的核心,数据库文件作为信息的聚集体,其安全性将是信息产业的重中之重。传统的物理安全、操作系统安全机制和数据库访问控制机制为数据库提供了一定的安全保障,但这些并不能满足数据库全部的安全需求,无法保证一些部门重要数据和敏感数据的安全,这就涉及到了对数据的加密问题。
对数据库安全的维护主要通过对数据库中的数据进行加密来实现。现有的对数据库中数据的加密主要在两个层次进行,即OS(Operation System)层和DBMS(数据库管理系统)外层(客户端)。
DBMS在存储数据库中的数据时,通常会把一个表存储为OS中的一个文件,那么对相应的文件加密就达到了对表中的数据进行加密的目的。但是在OS层加密的粒度是文件级,对加密关系进行操作的时候,首先需要解密文件,这会极大地降低系统的性能。
当前大多数数据库加密方法是在DBMS外层加密。在敏感数据存储到数据库之前,首先将数据加密,然后再将加密后的数据存进数据库,加/解密对DBMS来说是透明的。采用这种方式的优点是,加/解密操作既可以放在服务器端又可以放在客户端进行。此外,加密粒度可以达到字段级。但这种方式有其固有的缺陷,提高查询性能的一个重要机制是使用索引,而索引的建立通常是依据数据之间的逻辑关系。加密后的数据将很难保持原有的逻辑关系,DBMS在将加密数据存储到数据库时,索引的建立将是一个极大的挑战,这对数据库的性能和功能都会产生极大影响。
发明内容
为了解决上述问题,本发明的目的在于提供一种在DBMS内核层进行数据库安全的维护、不影响DBMS的功能且对系统性能的影响较小的维护数据库安全的系统和方法,在内核层实现数据库加密可以支持字段级、元组级、关系级等多种加密粒度。
本发明的目的是通过以下技术方案实现的:
一种维护数据库安全的方法,包括以下步骤:
步骤S10:用户创建关系;
步骤S20:通过SQL的扩展语句指定是否对其中的数据进行加密存储,若需要进行加密存储则执行步骤S30;若不需要进行加密存储则执行步骤S70;
步骤S30:密钥产生器自动产生一个密钥;
步骤S40:将密钥存入安全字典中的加密关系表中;
步骤S50:在DBMS将数据写到外存时,查询系统表中的安全字典,判断是否需要加密,若需要加密则进入步骤S60,若不需加密则进入步骤S70;
步骤S60:利用安全字典中的密钥对数据进行加密;
步骤S70:将数据写出到外存。
一种维护数据库安全的系统,包括数据库加密体系和对SQL的扩展。
上述的数据库加密体系包括一个加/解密模块且在系统表中设置有一个用来存放密钥的安全字典。
上述的安全字典由加密关系表和密钥授权表组成。
上述的对SQL的扩展包括关系创建语句和关系结构修改语句。
本发明的有益效果在于:
1)既保证对敏感数据加密存储又不影响DBMS的功能,最主要的是不影响DBMS索引的建立。与当前大多数为维护数据库安全而采用的在DBMS外层进行加/解密操作的加/解密方法相比,本发明提出的在DBMS内核层进行加/解密的方法是在DBMS将内存中的数据写到外存(如磁盘、磁带等)时进行加密操作,而将外存中的数据读到内存时进行相应的解密操作。因为数据在内存中是明文的,所以DBMS的功能不会受到任何影响,并且可以按常规方式建立索引。
2)本发明还可以充分利用索引来减少加/解密的次数及数据量,对系统性能的影响也比较小。
附图说明
图1为本发明的维护数据库安全的方法的流程图;
图2为关系数据库管理系统中的页面结构图;
图3为用户访问本发明中的数据库的流程图。
具体实施方式
下面结合附图对本发明的维护数据库安全的系统和方法进行详细说明。
本发明的维护数据库安全的方法如图1所示,包括以下步骤:
步骤S10:用户创建关系;
步骤S20:通过SQL的扩展语句指定是否对其中的数据进行加密存储,若需要进行加密存储则执行步骤S30;若不需要进行加密存储则执行步骤S70;
步骤S30:密钥产生器自动产生一个密钥;
步骤S40:将密钥存入安全字典中的加密关系表中;
步骤S50:在DBMS将数据写到外存时,查询系统表中的安全字典,判断是否需要加密,若需要加密则进入步骤S60,若不需加密则进入步骤S70;
步骤S60:利用安全字典中密钥对数据进行加密;
步骤S70:将数据写出到外存。
下面对上述步骤的实现方法进行具体说明。
在关系数据库管理系统中,页面结构通常如图2示,页头主要包含该页面所属的数据库及关系、页面大小、页内空闲空间的起始偏移以及页内空闲空间的终止偏移等信息。在页头和空闲空间之间是一个数组,它的每一个元素存放了一条记录在页面中的起始偏移,数组中元素的个数即页面中存放记录的条数。页尾是数据域部分,存放关系中的元组,元组按插入顺序从后向前存入。
根据图2的页面结构,如果一个关系中存放敏感数据,那么这个关系的每一个页面的数据域在内存中是明文的,在外存中是以密文的形式存放的。加密时,只加密页面中的数据域。由于数据库中数据的特性,加密时通常采用分组加密算法,所以要处理加密数据长度不是分组长度整数倍的情况。例如,假设采用加密算法是64位分组,8个节,如果数据域不是8的整数倍,则在数据域前面多取几个字节,使其为8的整数倍再进行加密。加密后,在页头使用两个比特来设置加密标识,指示出当前页面已加密及使用的密钥的编号。
在DBMS内核层实现数据库加密,在设计数据库加密体系结构时需要重点考虑两个因素:一是要易于与目前DBMS集成,二是要考虑数据库加密后的查询性能。DBMS是非常复杂的系统,所以要尽可能地减少内部结构的改变,最好只是在合适的位置添加相应的加/解密模块。在数据库中存放敏感数据的关系加密存储后,数据块写入、读出时都要进行相应的加/解密操作,所以采用的体系结构要尽可能地减小对性能的影响。
基于上面的考虑,在本发明的体系结构中对DBMS的改动甚小,只是在DBMS中增加了一个加/解密模块,并在系统表中增加了一个安全字典来存放密钥。用户在创建关系的时候,可以指定是不是对其加密存储,如果需要加密,则在系统表的安全字典中插入一条相应的记录。在DBMS将数据写到外存时,查询一下系统表中的安全字典,如果需要加密,则首先对数据加密,再将其写到外存。同理,当DBMS从外存中读入数据块时,如果数据块是加密过的,则加/解密模块查询安全字典,取出相应的密钥解密数据块。从图中的结构可以看出,增加加/解密模块以后对DBMS的功能没有任何影响,而且可以利用索引,使得对系统性能的影响降至最低。
为了支持数据库加密,在系统表中增加了一个安全字典,它由两个表组成,一个是加密关系表,另一个是密钥授权表。
加密关系表的每条记录形如:
(DID,RID,ETag,Key1,Key2,UpdtTime,UpdtTag,UpdtCnt,ValidTime)
其中DID和RID分别是数据库ID和关系ID。ETag标识关系表是否加密存储及加密存储时当前活动密钥编号。Key1、Key2分别是密钥1、密钥2,UpdtTime是上次密钥更新时间,UpdtTag、UpdtCnt分别是密钥更新是否完成和未完成时当前已更新到的块号,之所以有两个密钥是为了以后密钥更新的高效性。ValidTime是密钥的更新周期。
密钥授权表的每条记录形如:
(EID,DID,RID,Valid,StartTime,EndTime)
其中EID是用户密钥ID,DID和RID同前,Valid指示当前记录是否有效,StartTime和EndTime指示出起始及截止有效日期。
同时,增设了系统安全管理员(SSA),使用专门的接口来管理和维护安全字典。他通过在密钥授权表中添加记录来授予某些用户访问机密数据的权限,也可以调整密钥的更新周期,还负责用户EID的发放和管理。数据库管理员(DBA)负责常规的数据库管理和维护、用户访问控制的授权等,但DBA没有权限查询加密过的数据,也不能访问安全字典,这样就避免了DBA权限过大对敏感数据构成的威胁。DBA的访问控制授权与SSA的密钥授权是各自独立的,从而相互制约。
为了实现对数据库加密,需要扩展ANSI SQL92标准的数据定义语言DDL。主要在两个方面扩展,一是关系的创建语句,另一个是关系结构的修改语句。
在创建新关系时,可以指明是不是对此关系中的数据加密存储,扩展后的语法为:
CREATE TABLE关系名(属姓名类型,……,完整性约束,……[,ENCRY])
对于已经创建的关系,可以修改关系中的数据是否加密存储,扩展后的语法为:
ALTER TABLE关系名WITH ENCRY[NOW]|WITHOUT ENCRY
当用户创建一个关系时,如果指出这个关系中的数据需要加密存储,那么密钥产生器就会自动产生一个密钥,并在安全字典的加密关系表中插入如下一条元组:(数据库ID,新创建关系ID,1,新产生密钥,0,当前系统时间,1,0,默认密钥有效期)。将ETag设为1表示关系需要加密存储,并且当前活动密钥是密钥1。因为还没用到密钥2,将Key2置0。将UpdtTag设为1表示已完成密钥的更新。
在关系已经创建后,可以修改加密选项。如果将加密改为不再加密,只需在加密关系表中将相应元组的ETag字段设为0,指示出关系不再需要加密存储,并不用解密整个关系。用户以后访问这个关系时,如果从外存读入的数据块是加密过的,则系统自动从安全字典的加密关系表中取出相应的密钥解密。在将其写回到外存上时,先将页头的是否加密标识设为未加密,再明文写回,也就是说,在用户对原加密存储的关系访问的过程中完成了关系数据由密文存储到明文存储的转变。
在将以前未加密存储的关系修改为需要加密存储时,与新创建一个关系且指定加密时类似,在安全字典的加密关系表中插入如下一条记录:
(数据库,被修改关系,1,新产生密钥,0,当前系统时间,0,0默认密钥有效期)
与新创建一个关系且指定加密存储时的区别是,将更新是否完成标识UpdtTag设置为0,指示当前更新未完成。因为在修改是否加密项的时候,关系中可能已有数据,而且通常不是DBMS负荷较低的时候,为了避免影响系统的性能,没有立即将数据转为加密存储的形式。通过这一设定,把关系由非加密存储到加密存储的转变交给在系统低负荷时自动运行的密钥更新程序去完成。如果关系加密存储的需求特别紧急,此时可以使用参数,密钥产生器会产生一个新密钥,系统立即从外存中依次读出关系中的所有块,加密后再写到外存。
使用本发明的维护数据库安全的方法的数据库的访问过程如图3所示:
1.用户首先使用分配的用户名和密码登录系统;
2.访问控制模块对用户名与密码进行认证,如果正确,DBMS与用户建立连接;
3.用户提交查询、更新等语句;
4.访问控制模块首先检查用户是否有权限访问语句中指定的关系,通过后,从外存中读入关系数据块,如果数据块是未加密过的(由页头判断),直接将结果返回给用户;否则,调用安全控制模块;
5.安全控制模块获取用户的EID,然后查询安全字典中的用户密钥授权表,如果该EID有加密数据的密钥授权,则安全控制模块从加密关系表中取出相应的密钥进行解密,最后向用户提交结果。
Claims (5)
1.一种维护数据库安全的方法,其在DBMS内核层进行加密,即在数据物理存取之前进行加/解密操作,其特征在于包括以下步骤:
步骤S10:用户创建关系;
步骤S20:通过SQL的扩展语句指定是否对其中的数据进行加密存储,若需要进行加密存储则执行步骤S30;若不需要进行加密存储则执行步骤S70;
步骤S30:密钥产生器自动产生一个密钥;
步骤S40:将密钥存入安全字典中的加密关系表中;
步骤S50:在DBMS将数据写到外存时,查询系统表中的安全字典,判断是否需要加密,若需要加密则进入步骤S60,若不需加密则进入步骤S70;
步骤S60:利用安全字典中密钥对数据进行加密;
步骤S70:将数据写出到外存。
2.一种维护数据库安全的系统,其特征在于:包括数据库加密体系和对SQL的扩展。
3.如权利要求2所述的维护数据库安全的系统,其特征在于:所述的数据库加密体系包括一个加/解密模块且在系统表中设置有一个用来存放密钥的安全字典。
4.如权利要求3所述的维护数据库安全的系统,其特征在于:所述的安全字典由加密关系表和密钥授权表组成。
5.如权利要求4所述的维护数据库安全的系统,其特征在于:所述的对SQL的扩展包括关系创建语句和关系结构修改语句。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2007100598231A CN101162493A (zh) | 2007-10-11 | 2007-10-11 | 维护数据库安全的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2007100598231A CN101162493A (zh) | 2007-10-11 | 2007-10-11 | 维护数据库安全的方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101162493A true CN101162493A (zh) | 2008-04-16 |
Family
ID=39297414
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2007100598231A Pending CN101162493A (zh) | 2007-10-11 | 2007-10-11 | 维护数据库安全的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101162493A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101917403A (zh) * | 2010-07-23 | 2010-12-15 | 华中科技大学 | 一种用于密文存储的分布式密钥管理方法 |
CN101587479B (zh) * | 2008-06-26 | 2011-04-13 | 北京人大金仓信息技术股份有限公司 | 面向数据库管理系统内核的数据加解密系统及其方法 |
CN102891876A (zh) * | 2011-07-22 | 2013-01-23 | 中兴通讯股份有限公司 | 云计算环境下分布式数据加密方法及系统 |
CN103605741A (zh) * | 2013-11-19 | 2014-02-26 | 北京国双科技有限公司 | 对象加密存储方法、装置及系统 |
CN104881280A (zh) * | 2015-05-13 | 2015-09-02 | 南京邮电大学 | 一种支持多查询的密文数据库中间件的设计方法 |
CN105160272A (zh) * | 2015-08-28 | 2015-12-16 | 国家电网公司 | 一种基于自主可控数据库的安全加密方法及系统 |
CN105787387A (zh) * | 2016-03-07 | 2016-07-20 | 南京邮电大学 | 一种数据库加密方法及该加密数据库查询方法 |
CN107315970A (zh) * | 2016-04-26 | 2017-11-03 | 展讯通信(上海)有限公司 | 一种敏感数据的交互方法及装置 |
CN108734024A (zh) * | 2018-05-11 | 2018-11-02 | 四川长虹电器股份有限公司 | 一种基于字典映射的高效数据库加密方法 |
CN110489996A (zh) * | 2019-07-31 | 2019-11-22 | 山东三未信安信息科技有限公司 | 一种数据库数据安全管理方法及系统 |
-
2007
- 2007-10-11 CN CNA2007100598231A patent/CN101162493A/zh active Pending
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101587479B (zh) * | 2008-06-26 | 2011-04-13 | 北京人大金仓信息技术股份有限公司 | 面向数据库管理系统内核的数据加解密系统及其方法 |
CN101917403B (zh) * | 2010-07-23 | 2013-06-05 | 华中科技大学 | 一种用于密文存储的分布式密钥管理方法 |
CN101917403A (zh) * | 2010-07-23 | 2010-12-15 | 华中科技大学 | 一种用于密文存储的分布式密钥管理方法 |
CN102891876B (zh) * | 2011-07-22 | 2017-06-13 | 中兴通讯股份有限公司 | 云计算环境下分布式数据加密方法及系统 |
CN102891876A (zh) * | 2011-07-22 | 2013-01-23 | 中兴通讯股份有限公司 | 云计算环境下分布式数据加密方法及系统 |
CN103605741A (zh) * | 2013-11-19 | 2014-02-26 | 北京国双科技有限公司 | 对象加密存储方法、装置及系统 |
CN103605741B (zh) * | 2013-11-19 | 2017-11-14 | 北京国双科技有限公司 | 对象加密存储方法、装置及系统 |
CN104881280A (zh) * | 2015-05-13 | 2015-09-02 | 南京邮电大学 | 一种支持多查询的密文数据库中间件的设计方法 |
CN104881280B (zh) * | 2015-05-13 | 2018-05-08 | 南京邮电大学 | 一种支持多查询的密文数据库中间件的设计方法 |
CN105160272B (zh) * | 2015-08-28 | 2018-10-26 | 国家电网公司 | 一种基于自主可控数据库的安全加密方法及系统 |
CN105160272A (zh) * | 2015-08-28 | 2015-12-16 | 国家电网公司 | 一种基于自主可控数据库的安全加密方法及系统 |
CN105787387A (zh) * | 2016-03-07 | 2016-07-20 | 南京邮电大学 | 一种数据库加密方法及该加密数据库查询方法 |
CN105787387B (zh) * | 2016-03-07 | 2018-09-14 | 南京邮电大学 | 一种数据库加密方法及该加密数据库查询方法 |
CN107315970A (zh) * | 2016-04-26 | 2017-11-03 | 展讯通信(上海)有限公司 | 一种敏感数据的交互方法及装置 |
CN107315970B (zh) * | 2016-04-26 | 2020-03-20 | 展讯通信(上海)有限公司 | 一种敏感数据的交互方法及装置 |
CN108734024A (zh) * | 2018-05-11 | 2018-11-02 | 四川长虹电器股份有限公司 | 一种基于字典映射的高效数据库加密方法 |
CN108734024B (zh) * | 2018-05-11 | 2021-08-06 | 四川长虹电器股份有限公司 | 一种基于字典映射的高效数据库加密方法 |
CN110489996A (zh) * | 2019-07-31 | 2019-11-22 | 山东三未信安信息科技有限公司 | 一种数据库数据安全管理方法及系统 |
CN110489996B (zh) * | 2019-07-31 | 2021-04-13 | 山东三未信安信息科技有限公司 | 一种数据库数据安全管理方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101162493A (zh) | 维护数据库安全的方法和系统 | |
CN102236766B (zh) | 安全的数据项级数据库加密方法 | |
CN101587479B (zh) | 面向数据库管理系统内核的数据加解密系统及其方法 | |
US7792300B1 (en) | Method and apparatus for re-encrypting data in a transaction-based secure storage system | |
WO2018032374A1 (zh) | 一种用于区块链的加密存储系统及其使用方法 | |
US9158933B2 (en) | Protection of encryption keys in a database | |
JP4398145B2 (ja) | 自動データベース暗号化の方法および装置 | |
CN101311950B (zh) | 一种电子印章的实现方法和装置 | |
US7904732B2 (en) | Encrypting and decrypting database records | |
CN105975877B (zh) | 一种敏感文件安全存储办法 | |
KR101371608B1 (ko) | Dbms 및 데이터베이스에서 암호화 방법 | |
US20100325732A1 (en) | Managing Keys for Encrypted Shared Documents | |
US20100161995A1 (en) | System, method, and computer-readable medium for cryptographic key rotation in a database system | |
US20040255133A1 (en) | Method and apparatus for encrypting database columns | |
US20150178506A1 (en) | Method and system for database encryption | |
CN102833346A (zh) | 基于存储元数据的云敏感数据安全保护系统及方法 | |
CN101655858B (zh) | 一种基于分块组织的密文索引结构及其管理方法 | |
JP2007510209A (ja) | データレコードセットの完全性を保証する方法 | |
CN101504668A (zh) | 一种支持密文索引的数据库透明加密方法 | |
CN103336929A (zh) | 用于已加密文件访问的方法和系统 | |
CN107168998A (zh) | 一种基于保留格式的数据库透明加密方法 | |
JP2009510616A (ja) | データベース内の機密データを保護するためのシステム及び方法 | |
CN106330934A (zh) | 一种分布式数据库系统权限管理方法及装置 | |
US20160148021A1 (en) | Systems and Methods for Trading of Text based Data Representation | |
US20230261861A1 (en) | Systems and methods for generation of the last obfuscated secret using a seed |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20080416 |