加密数据库列的方法和设备技术

技术编号:2854007 阅读:231 留言:0更新日期:2012-04-11 18:40
本发明专利技术的一个实施例提供了一种系统,其便于对数据库列内的数据进行加密。所述系统首先通过接收执行数据库操作的命令来工作。然后,所述系统解析命令以创建解析树。然后,所述系统检查解析树以确定所述解析树中引用的列是否是加密的列。如果所述解析树中引用的列是加密的列,那么所述系统自动转换所述命令,以包括一个或多个隐文命令,从而在执行数据库操作时便于存取加密的列。(*该技术在2024年保护过期,可自由使用*)

【技术实现步骤摘要】
【国外来华专利技术】
本专利技术涉及数据库安全。更具体地,本专利技术涉及在数据库内逐列透明地加密和解密数据的方法和设备。
技术介绍
数据库安全在许多数据库系统中是一个重要的特征。在数据库系统中,安全性常常是通过加密数据库系统内的数据实现的。目前,有两种主要的方法用于加密存储在数据库系统内的数据。第一种方法的特征是“成批加密(bulk encryption)”,在整个数据库文件上执行隐文或加密(cryptographic)操作。第二种方法对数据库内特定的敏感列有选择地应用隐文操作。成批加密通常需要加密整个数据库,因为敏感数据并非仅存储在一个特定的表中。敏感数据也可能出现在其他数据库对象中。例如,敏感数据可出现在索引中,在撤消和重做日志的变化记录中和在临时存储区域中。由于这些数据库对象被设计成由整个数据库系统共享,因此在这些数据库对象内隔离数据以使某些数据被加密而某些数据没有被加密是不实际的。虽然成批加密的实现相对简单,并且对于存取数据库的应用程序是透明的,但是存在重大缺陷。这些缺陷中的主要缺陷是系统性能下降。加密或解密整个数据库文件要花费较长时间。在这种系统中,重新指定密钥的操作包括解密然后重新加密整个数据库文件。这些操作花费大量的时间,这使得这个解决方案不适合大型在线事务处理部署。而且,系统的安全性被损害,因为数据库记录在数据记录从文件解密之后作为明文暴露在共享的存储器中。第二种方法仅仅加密数据库内的敏感列,这在理论上能减少执行涉及隐文操作的总开销。但是,使用这种方法的当前可用的系统有一些较大的缺点。加密和解密操作必须被显式地应用于加密列中的任何引用。例如,希望发布命令检索社会保险号码为“123456789”的客户的信用卡号码的应用程序必须发布命令select credit_card_number from tab where ssn=′123456789′但是,如果这些列都被加密,那么必须修改查询以包括解密命令,例如select decrypt(credit_card_number)from tab where decrypt(ssn)=′123456789′注意加密和解密功能还必须提供用于选择加密算法的接口,并且该应用程序必须提供密钥管理。因此,在这个第二种方法中,尽管数据库系统厂商宣称加密和解密操作是透明的,但实际上对于应用程序开发者而言是不透明的。当存取敏感的列时,加密或解密功能必须显式应用到列数据上。为了使这种运行时功能的执行对于用户是透明的并且安全的,必须极大改变应用程序模式对象(application schema object)。例如,具有敏感列的表必须被转成视图,以隐蒇隐文功能。这也意味着然后那个基本对象必须被重命名,因为视图和表处于相同的名字空间中,因而不能共享同一个名字。需要创建触发器,以便视图的插入或更新将导致基本表中的数据被隐式地加密。而且,索引支持将受到限制,因为服务器仅仅能够利用加密的数据创建索引,而加密的数据已经失去了其字典式的顺序。之所以如此,是因为加密和解密操作不能与索引处理层集成在一起。因此,需要一种用于在数据库系统内逐列透明地加密和解密数据的方法和设备。
技术实现思路
本专利技术的一个实施例提供了一种系统,其便于加密数据库的列中的数据。所述系统通过首先接收执行数据库操作的命令来工作。然后,所述系统解析命令以创建解析树。然后所述系统检查解析树以确定所述解析树中引用的列是否是加密的列。如果所述解析树中引用的列是加密列,那么所述系统隐式转换所述解析树,以包括一个或多个隐文操作,从而在执行数据库操作时便于存取加密的列。在这个实施例的一个变化中,如果数据库操作包括一个来自加密列的引用操作,那么所述系统转换所述解析树,以在所述引用操作期间,对从加密列中检索的数据进行解密,从而提供清楚的文本。在进一步的变化中,如果命令包括对加密列的更新操作,那么所述系统转换所述解析树,以在所述更新操作期间,对正在加密列中被更新的数据进行加密,从而将加密的数据放置在数据库中。在进一步的变化中,如果解析树中引用的列是加密的,那么所述系统识别该列的隐文密钥。对于每个命令,为该列的所有存取仅仅恢复密钥一次。在进一步的变化中,检查解析树包括确定用户命令是否是一个显式请求,其要求加密目前在数据库中未加密的列。如果是这样,那么所述系统加密该列。在进一步的变化中,检查解析树包括确定用户命令是否是一个显式请求,其要求改变列的加密密钥。如果是这样,那么所述系统用当前的加密密钥来解密该列,并且用新的加密密钥来加密该列。在进一步的变化中,检查解析树包括确定用户命令是否是一个显式请求,其要求解密数据库中的加密列。如果是这样,那么所述系统解密该列。在进一步的变化中,检查解析树包括确定用户命令是否是一个显式请求,其要求改变列的加密算法。如果是这样,那么所述系统用目前的加密算法解密该列,并且用新的加密算法加密该列。附图说明图1描述了根据本专利技术一个实施例的数据库系统。图2描述了根据本专利技术一个实施例的服务器。图3示出了一个流程图,其描述了根据本专利技术一个实施例、将一个数据库查询转换为包括隐文操作的过程。图4A示出了根据本专利技术一个实施例的、未转换的解析树。图4B示出了根据本专利技术一个实施例的、转换后的解析树。图5示出了一个流程图,描述了根据本专利技术一个实施例、执行一个涉及对列进行加密的命令的过程。具体实施例方式给出的以下描述使得本领域技术人员能够实施和使用本专利技术,并且是在特定应用和特定要求的背景中提供的。对所公开的实施例的各种修改对于本领域的专业技术人员而言是非常明显的,并且在不脱离本专利技术精神和范围的情况下,本文所限定的一般性原理可被应用于其他的实施例和应用中。因此,本专利技术不应被局限于所示的实施例,而应为与本文所公开的原理和特征一致的、最广泛的范围。本节所描述的数据结构和代码通常被存储在计算机可读存储介质中,计算机可读存储介质可以是能够存储由计算机系统使用的代码和/或数据的任何设备或介质。这包括但不限于磁性和光学存储设备(例如磁盘驱动器、磁盘、CD(光盘)和DVD(数字通用光盘或数字视频光盘))和包含在传输介质中的计算机指令信号(该传输介质中具有或者不具有在其上调制信号的载波)。例如,传输介质可包括通信网络,例如因特网。数据库系统图1描述了根据本专利技术一个实施例的数据库系统。所述数据库系统包括客户机102、服务器104和数据库106。客户机一般包括具有计算能力的、网络上的任何节点,并且可包括通过网络进行通信的装置(mechanism)。服务器104一般包括任何计算节点,该计算节点包括一个服务于计算和/或数据存储资源的客户机请求的装置。服务器104与一个或多个客户机通信,并且给每个客户机提供服务。这种通信典型地穿过网络(未示出),例如因特网或企业内部网。服务器104可被实现为一组共同工作以提供计算和数据库服务的服务器。数据库106可包括用于在永久性存储器中存储数据的、任何类型的系统。这包括但不限于,基于磁性、光学和磁光存储设备的系统,以及基于闪存和/或备用电池存储器的存储设备。数据库106可被直接连接到服务器104或者通过网络存取,例如企业内部网或因特网。在工作期间,客户机102向服务器104发送数据库命令。这些命令通常是用数据库语言(例如结构化查询语言(S本文档来自技高网
...

【技术保护点】
一种便于对数据库列中的数据进行加密的方法,其包括:接收一个执行数据库操作的命令;解析所述命令以创建一个解析树;检查所述解析树,以确定在所述解析树中引用的列是否是加密列;和如果是,则自动转换所述命令,以包括一个或多个隐文命令,从而在执行所述数据库操作时便于存取所述加密列。

【技术特征摘要】
【国外来华专利技术】US 2003-6-11 10/459,8111.一种便于对数据库列中的数据进行加密的方法,其包括接收一个执行数据库操作的命令;解析所述命令以创建一个解析树;检查所述解析树,以确定在所述解析树中引用的列是否是加密列;和如果是,则自动转换所述命令,以包括一个或多个隐文命令,从而在执行所述数据库操作时便于存取所述加密列。2.根据权利要求1所述的方法,其中如果所述数据库操作包括一个来自所述加密列的引用操作,那么所述方法还包括转换所述数据库操作,以在所述引用操作期间解密从所述加密列中检索的数据。3.根据权利要求1所述的方法,其中如果所述命令包括一个对所述加密列的更新操作,那么所述方法还包括转换所述更新操作,以在所述更新操作期间加密所述加密列中正在被更新的数据。4.根据权利要求1所述的方法,其中如果一个列是加密的,那么所述方法还包括识别该列的隐文密钥。5.根据权利要求1所述的方法,其中检查所述解析树还包括确定所述命令是否包括一个显式命令,其加密所述数据库中的所述列;和如果是,则加密所述列。6.根据权利要求1所述的方法,其中检查所述解析树还包括确定所述命令是否包括一个改变所述列的加密密钥的操作;和如果是,则用当前的加密密钥来解密所述列,并用新的加密密钥来加密所述列。7.根据权利要求1所述的方法,其中检查所述解析树还包括确定所述命令是否包括一个显式命令,其解密所述数据库中的所述列;和如果是,则解密所述列。8.根据权利要求1所述的方法,其中检查所述解析树还包括确定所述命令是否包括一个显式命令,其改变所述列的加密算法;和如果是,则用先前的加密算法来解密所述列;并用新的加密算法来加密所述列。9.一种存储指令的计算机可读存储介质,当所述指令被计算机执行时会导致计算机执行一种便于对数据库列中的数据进行加密的方法,所述方法包括接收一个执行数据库操作的命令;解析所述命令以创建一个解析树;检查所述解析树,以确定在所述解析树中引用的列是否是加密列;和如果是,则自动转换所述命令,以包括一个或多个隐文命令,从而在执行所述数据库操作时便于存取所述加密列。10.根据权利要求9所述的计算机可读存储介质,其中如果所述数据库操作包括一个来自所述加密列的引用操作,那么所述方法还包括转换所述数据库操作,以在所述引用操作期间解密从所述加密列中检索的数据。11.根据权利要求9所述的计算机可读存储介质,其中如果所述命令包括一个对所述加密列的更新操作,那么所述方法还包括转换所述更新操作,以在所述更新操作期间加密所述加密列中正在被更新的数据。12.根据权利要求9所述的计算机可读存储介质,其中如果一个列是加密的,那么所述方法还包括识别该列的隐文密钥。13.根据权利要求9所述的计算机可读存储介质,其中检查所述解析树还包括确定所述命令是否包括一个加密所述数据库...

【专利技术属性】
技术研发人员:CH雷T基夫DM王
申请(专利权)人:甲骨文国际公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1