基于国产数据库的透明加密方法及系统与流程

文档序号:36237814发布日期:2023-12-01 20:45阅读:56来源:国知局
基于国产数据库的透明加密方法及系统与流程

本发明涉及数据库,具体地说是基于国产数据库的透明加密方法及系统。


背景技术:

1、数据库系统是计算机信息系统的核心部件,存储着系统中最有价值的数据,其安全性至关重要。由于数据库存储的原始数据在操作系统中以可读文件的形式进行管理,容易被操作系统的用户窃取或篡改,同时由于数据库管理员通常有权访问所有数据,存在超出职责范围访问用户敏感数据的安全隐患,因此,越来越多的基于数据库的信息系统希望对存放在数据库中的敏感数据进行加密以保障其安全性。

2、目前,数据泄露事件频频发生,各行各领域都不能幸免。明文数据在数据库中的存储是不安全的,攻击者能通过社会工程和技术入侵等手段来进行数据窃取。数据库的安全日益重要,对数据库中的敏感字段进行加密是有效的安全手段。

3、但是由于种种原因,国内目前普遍使用的各种数据库对加密的支持力度均难以满足安全要求,特别是加密解密运算与密钥管理会显著降低数据库访问与运行的效率,因此高效的数据库加密技术成为迫切需要解决问题。

4、当对数据库进行加密之后,数据之间原有的偏序关系将会丧失,因而无法通过原来的索引机制来加快对密文数据的条件查询。如果数据库不能对加密存储的数据提供高效的查询手段,必然会降低数据库的可用性。为了解决这一问题,现在通常采用动态加密和密文索引的方法。该方法是密文和明文保持相同的偏序关系,从而实现条件查询。但这种加密方法强度较弱,容易被破解,而且由于索引文件不是数据库的一部分,数据库管理系统无法对其实现事务管理,难以保证数据库与索引文件之间的一致性。

5、对于此问题,曾有研究采用b+树等数据结构实现密文索引以支持动态结构调整和顺序查找。该些方法由于维护索引数据等问题,难以具有良好性能。

6、国产商业数据库系统的加密保护文件不支持字段加密,是需要解决的技术问题。


技术实现思路

1、本发明的技术任务是针对以上不足,提供基于国产数据库的透明加密方法及系统,来解决国产商业数据库系统的加密保护文件不支持字段加密的技术问题。

2、第一方面,本发明一种基于国产数据库的透明加密方法,包括如下步骤:

3、s100、对原始表改名,并在原始表中添加raw字段,raw字段用于存储密文中的字段;

4、s200、禁用约束:对于原始表,删除建立在敏感字段上的约束,基于主键和外键约束的字段不能被选取作为加密字段,对于敏感字段上的唯一性约束,非空约束和值约束均被禁用;

5、s300、删除索引:对于原始表中敏感字段,如果敏感字段本身有索引,将索引删除;

6、s400、加密敏感数据:如果原始表中记录有敏感字段,调用加密算法对敏感数据进行加密,并将密文保存至raw字段中,并清空原始敏感字段中数据内容;

7、如果敏感字段需要实现密文索引,建立密文索引,密文索引以表的形式存储于数据库中,并执行步骤s500,如果敏感字段不需要实现密文索引,则直接执行步骤s500;

8、s500、创建函数:创建权限函数,权限函数用于控制授权用户可以查看加密列的明文数据,非授权用户只能查看加密列的密文数据;

9、s600、创建视图:创建一个与原始表同名的视图,视图中选取原始表的所有字段,其中,敏感字段用解密函数代替,并且要根据权限函数进行解密;

10、s700、创建触发器和存储过程:在视图上建立触发器,在触发器中,调用加密算法将敏感数据加密,并将密文保存在raw字段中,如果原始表中有约束,实现约束;

11、s800、实现扩展索引接口:对于修改后的原始表,表中的数据分为敏感数据和非敏感数据,敏感数据以密文的形式存放在表中,而非敏感数据则以明文的形式存放,视图名与原始表名相同,用户对原始表的操作均会作用在视图上,当用户查询数据时,视图能够自动调用解密函数将密文数据解密,并将明文数据返回用户;当用户修改数据时,用户在视图上的操作都能够由触发器完成。

12、作为优选,步骤s400中,实现密文索引的方法为:基于数据库的表和sql语言,建立辅助的实现密文索引数据结构以及查询和维护算法,利用数据库系统的索引扩展机制、实现密文索引的调用和维护。

13、作为优选,数据库的索引扩展机制为公知的扩展机制,包括oracle的扩展索引或者ibm的扩展索引,所述公知的扩展索引机制允许用户为特定的字段自定义索引方法;

14、数据库系统的索引扩展机制包括如下:

15、一个对原表记录的索引,用于根据id实现快速解密得到明文;

16、一个根据明文实际取值的偏序保持算法,用于实现快速的范围查询;

17、其中,实现密文偏序关系的索引结构采用具有索引功能的数据结构,数据结构为avl树、b+树或b-树。

18、作为优选,在视图上建立instead of类型的触发器,触发器用于插入、删除和修改事件。

19、作为优选,如果原始表中有约束,使用sql语言实现约束。

20、第二方面,本发明一种基于国产数据库的透明加密系统,用于执行如第一方面任一项所述的基于国产数据库的透明加密方法,所述系统包括:

21、原始表改名模块,所述原始表改名模块用于对原始表改名,并在原始表中添加raw字段,raw字段用于存储密文中的字段;

22、约束配置模块,对于原始表,所述约束配置模块用于删除建立在敏感字段上的约束,基于主键和外键约束的字段不能被选取作为加密字段,对于敏感字段上的唯一性约束,非空约束和值约束均被禁用;

23、索引删除模块,对于原始表中敏感字段,如果敏感字段本身有索引,所述索引删除模块用于将索引删除;

24、数据加密模块,如果原始表中记录有敏感字段,所述数据加密模块用于调用加密算法对敏感数据进行加密,并将密文保存至raw字段中,并清空原始敏感字段中数据内容;如果敏感字段需要实现密文索引,所述数据加密模块用于建立密文索引,密文索引以表的形式存储于数据库中;

25、函数创建模块,所述函数创建模块用于创建权限函数,权限函数用于控制授权用户可以查看加密列的明文数据,非授权用户只能查看加密列的密文数据;

26、视图创建模块,所述视图创建模块用于创建一个与原始表同名的视图,视图中选取原始表的所有字段,其中,敏感字段用解密函数代替,并且要根据权限函数进行解密;

27、触发器建立模块,所述触发器建立模块用于在视图上建立触发器,在触发器中,调用加密算法将敏感数据加密,并将密文保存在raw字段中,如果原始表中有约束,实现约束;

28、索引接口,对于修改后的原始表,表中的数据分为敏感数据和非敏感数据,敏感数据以密文的形式存放在表中,而非敏感数据则以明文的形式存放,视图名与原始表名相同,索引接口用于执行如下:用户对原始表的操作均会作用在视图上,当用户查询数据时,视图能够自动调用解密函数将密文数据解密,并将明文数据返回用户;当用户修改数据时,用户在视图上的操作都能够由触发器完成。

29、作为优选,所述数据加密模块用于执行如下实现密文索引:基于数据库的表和sql语言,建立辅助的实现密文索引数据结构以及查询和维护算法,利用数据库系统的索引扩展机制、实现密文索引的调用和维护。

30、作为优选,数据库的索引扩展机制为公知的扩展机制,包括oracle的扩展索引或者ibm的扩展索引,所述公知的扩展索引机制允许用户为特定的字段自定义索引方法;

31、数据库系统的索引扩展机制包括如下:

32、一个对原表记录的索引,用于根据id实现快速解密得到明文;

33、一个根据明文实际取值的偏序保持算法,用于实现快速的范围查询;

34、其中,实现密文偏序关系的索引结构采用具有索引功能的数据结构,数据结构为avl树、b+树或b-树。

35、作为优选,所述触发器建立模块用于在视图上建立instead of类型的触发器,触发器用于插入、删除和修改事件。

36、作为优选,如果原始表中有约束,所述触发器建立模块用于使用sql语言实现约束。

37、本发明的基于国产数据库的透明加密方法及系统具有以下优点:

38、1、加解密过程完全透明:基于视图和触发器实现敏感数据的自动解密和加密,加密和解密过程对于基于数据库的应用程序来说是完全透明的,这种特性可以使得应用程序在开发阶段不用考虑数据库加密的问题,在系统发布之后再进行数据库的透明加密改造而不用重新编译应用程序;

39、2、高效密文索引:实现高效的密文索引数据结构及算法,从而可以高效的实现对密文字段的条件查询;

40、3、事务支持:由于加密机制和密文索引机制都是在数据库内部通过触发器实现的,从而透明的支持事务的提交和回滚机制,并且在多个用户之间自动的实现了数据同步;

41、4、独立权控:可以在外置的安全服务中提供独立于数据库自有权控体系之外的权限控制体系,可以有效防止特权用户(如dba)对敏感数据的越权访问;

42、5、细粒度加密:可以实现精确到列级别的细粒度加密,这一优势是由此加密技术的具体实现决定的。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1