一种数据库透明加密方法

文档序号:9274869阅读:1145来源:国知局
一种数据库透明加密方法【
技术领域
】[0001]本发明涉及一种数据库加密方法,特别涉及一种为数据库实现第三方的透明加密和访问控制的方法,属于信息安全相关
技术领域
。【
背景技术
】[0002]数据库系统被越来越多地应用于各种信息系统之中。很多机构将其敏感信息存于数据库之中,数据库的安全性显得越来越重要,同时面临的威胁越来越严峻。数据库的加密和访问控制是保护敏感数据的最后防线。[0003]数据库层面经常面临以下的安全风险:[0004]I)数据库内部数据明文存储,敏感数据和非敏感数据没有实现分离存储;[0005]2)黑客通过穿过防火墙,进入操作系统盗走数据库文件;[0006]3)对含有敏感数据的数据库文件没有严格的访问控制,内部工作人员盗走数据库文件。[0007]现有的字段级的透明加密系统在实施上比较困难,对系统的性能影响较大。而全盘加密的方法缺乏访问控制机制。[0008]在需要将敏感数据和非敏感数据分离存储,并且需要进行必要的访问控制的情况下,字段级加密或磁盘加密都无法满足要求,有必要开发一种针对数据库的全表或全库透明加密及访问控制的方法,实现敏感的表和库的分离和加密存储,并实现必要的访问控制。【
发明内容】[0009]本发明的目的是针对现有的数据库加密和权限管理的方法无法满足数据库安全的需求的现状,提出一种面向数据库全表或全库的透明加密和访问控制的方法,使得既能提高数据库的安全性,又不需修改现有应用,同时保证加密后数据库的性能,并能够提供灵活的权限管理。[0010]为达到上述目的,本发明是通过以下技术方案实现的:[0011]一种数据库透明加密方法,该方法至少包括如下几项内容:[0012]A.在隐藏的加密卷中保存数据库文件:建立隐藏的加密卷,将包含敏感数据的部分或全部数据库文件保存在其中,并将对前述数据库文件的访问映射至隐藏的加密卷;[0013]B.多层次的访问控制:普通进程和DBMS进程访问所述加密卷中的数据库文件时需要授权,通过DBMS访问数据库中的表时根据授权规则进行鉴权。[0014]所述隐藏的加密卷是一个隐藏的磁盘分区,写入该分区的所有数据将被自动加密,该分区的数据被经过授权的进程读取时将被自动解密。[0015]所述步骤A进一步通过以下过程实现:[0016]步骤1:统计敏感数据在磁盘中所占空间大小的上限M;计算M加密后所占空间的大小,并以此计算所需的隐藏加密卷所占磁盘空间的大小,检测磁盘是否有足够的空间容纳此隐藏加密卷,如果空间足够,则转步骤2;否则表明磁盘存储已满,结束;[0017]步骤2:在磁盘普通卷中创建数据库文件f并备份敏感表到文件f中,将旧的敏感表删除;[0018]步骤3:创建一定大小的隐藏加密卷K;[0019]步骤4:复制文件f到隐藏加密卷K中;并将普通卷中的数据库文件f删除;[0020]步骤5:把对普通卷中文件f的访问映射到隐藏加密卷中;[0021]步骤6:创建与原表t同名的视图,并把对此视图的访问映射到备份表。[0022]所述多层次的访问控制包括操作系统层面的访问控制和DBMS层面的访问控制;所述操作系统层面的访问控制用于防止非授权进程对所述隐藏的加密卷中数据的访问,所述DBMS层面的访问控制用于防止数据库管理系统中非授权用户对敏感数据的访问。[0023]有益效果[0024]本发明提供的方法具有如下优势:[0025](I)高强度的原始数据保护。被保护的敏感数据存储在隐藏卷中,所有的数据被加密保护,一般用户和工具无法直接访问这些数据。[0026](2)多层次的访问控制。普通进程无法访问加密数据,数据库管理系统访问数据库文件时需要根据其指纹进行授权,而数据库用户访问敏感数据需要独立于数据库的授权。[0027](3)实施方便。采用本发明后,对敏感数据的保护不需要知道表的设计和访问方式,可以全表或者全库进行保护,而且访问敏感数据的应用程序不需要修改。从而降低了实施的难度。[0028](4)高性能。由于采用的是在存储级进行加密,而且便于采用独立的硬件加密设备,对数据库性能的影响非常小。【具体实施方式】[0029]下面详细描述中以实例的方式给出了许多具体细节,以确保对本发明技术方法的透彻理解。但是,对于知道本领域基本常识的人,能够理解没有这些具体细节,本发明的实施例也能实现。另外,没有详细描述众所周知的方法、过程、部件和电路,以避免本发明的实现变得不清楚。[0030]本发明的基本思想是:建立隐藏的加密卷,把敏感数据迀至其中,当访问时鉴别进程是否合法,鉴别用户是否合法,合法则返回数据,否则拒绝访问。[0031]本发明的一种数据库透明加密方法,包括如下内容:[0032]A.在隐藏的加密卷中保存数据库文件:建立隐藏的加密卷,将包含敏感数据的部分或全部数据库文件保存在其中,并将对前述数据库文件的访问映射至隐藏的加密卷;[0033]B.多层次的访问控制:普通进程和DBMS进程访问所述加密卷中的数据库文件时需要授权,通过DBMS访问数据库中的表时根据授权规则进行鉴权。[0034]所述隐藏的加密卷是一个隐藏的磁盘分区,写入该分区的所有数据将被自动加密,该分区的数据被经过授权的进程读取时将被自动解密。[0035]所述步骤A进一步可以通过以下过程实现:[0036]步骤1:统计敏感数据在磁盘中所占空间大小的上限M;计算M加密后所占空间的大小,并以此计算所需的隐藏加密卷所占磁盘空间的大小,检测磁盘是否有足够的空间容纳此隐藏加密卷,如果空间足够,则转步骤2;否则表明磁盘存储已满,结束;[0037]步骤2:在磁盘普通卷中创建数据库文件f并备份敏感表到文件f中,将旧的敏感表删除;[0038]步骤3:通过磁盘加密工具创建一定大小的隐藏加密卷K;[0039]步骤4:通过磁盘加密工具复制文件f到隐藏加密卷K中;并将普通卷中的数据库文件f删除;[0040]步骤5:把对普通卷中文件f的访问映射到隐藏加密卷中;[0041]步骤6:创建与原表t同名的视图,并把对此视图的访问映射到备份表。[0042]上述磁盘加密工具可以采用TrueCrypt,关于此工具的详细信息在网上http://truecrypt.sourceforge.net均可得至丨丨,此处不再详述[0043]所述多层次的访问控制包括操作系统层面的访问控制和DBMS层面的访问控制;所述操作系统层面的访问控制用于防止非授权进程对所述隐藏的加密卷中数据的访问,所述DBMS层面的访问控制用于防止数据库管理系统中非授权用户对敏感数据的访问。[0044]所述操作系统层面的访问控制具体工作流程如下:[0045]1、收到对敏感数据所在加密卷的访问;[0046]2、判断是否是授权进程,例如根据进程映像文件的路径,数字签名等进行判断,如果是授权进程则转到步骤3;否则,拒绝访问,结束;[0047]3、读取隐藏卷的磁盘数据,解密并返回数据给访问进程。[0048]所述数据库管理系统(DBMS)层面的访问控制具体工作流程如下:[0049]1、数据库管理系统收到对敏感表的访问;[0050]2、将访问映射到代表敏感表的视图;[0051]3、获取访问用户的信息;[0052]4、根据用户信息获取访问用户的授权;[0053]5、校验权限,合法则响应用户的请求,否则拒绝访问。[0054]实施例一:[0055]本实施例以Oracle为例计算敏感数据所需加密文件大小的说明。[0056]步骤1:找出敏感表所属的表空间[0057]selectTABLESPACE_NAMEfromall_tableswheretable_name='exampIe_table_name';[0058]步骤2:找出表空间所属的文件[0059]selectfiIe_namefromdba_data_fiIeswheretablespace_name='exampIe_tablespace_name';[0060]步骤3:找出表空间所需大小[0061]selectmaxbytesfromdba_data_files当前第1页1 2 
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1