专利技术解读:数据库透明加密和密文索引

技术 作者:程序猿 2016-11-30 04:00:07
前言

由中安威士(原中安比特)首席科学家,北京理工大学戴林博士发明的专利《一种支持密文索引的数据库透明加密方法》,是国内最早的可实用的数据库加密,甚至是数据库安全加固方面的专利,也是该领域十分重要的入门和基础专利。该专利于2009年申请,2010年获授权,授权号:CN101504668B。本文对其进行解读,争取达到简单易懂的效果。

发明动机

数据库系统作为信息的聚集体,存储着系统中最有价值信息的数据,是计算机信息系统的最核心部件,其安全性至关重要。越来越多的信息部门和安全部门希望对库内的敏感数据进行加密以增加其安全性。但是,目前国内使用的数据库绝大多数为ORACLE等国外产品,并不具备加密功能,或者其加密/密钥管理方法得不到国内相关安全评测机构的认可。因此,针对现有的ORACLE等数据库系统,亟需一种第三方的数据库加密技术。

需要解决的核心问题

对数据库系统进行加密,需要解决两大关键问题:

第一是应用透明性。因为数据库是一个通用组件,很多应用系统已经在上面开发完成,并运行了一段时间。这就需要第三方加密系统是对应用透明的。也就是说,不需要应用系统进行修改,就能够在安装了加密系统的数据库上运行。

第二是密文索引。加密解密肯定会降低性能,正常的性能降低是可以被接受的。但是对于加密字段的条件查询,会有严重的问题。当对敏感字段进行加密之后,数据之间原有的偏序关系将会丧失,因而无法通过原来的索引机制来加快对密文数据的条件查询,这极大的影响了数据库的使用效率。因此需要一种对加密字段的索引方法,来加速查询的执行。

如何解决透明加密和解密

当数据表中的一个或者多个字段被加密后,字段的类型和内容可能都会被改变。为了让外部的应用程序能够不做修改就能正常运行,则必须有个和加密前字段名和字段类型完全相同的表或视图。当然使用同名的表解决不了问题,如果是那样,就等同于没有加密。

所以该专利采用的是同名视图的方法。了解数据库的朋友都知道,视图是一个虚表,或者说它是一行代码,其定义了对外展示的虚表的结构以及每个字段的生成方法。视图平常并没有装载任何数据,而是在被调用的时候根据生成字段的方法动态的生成数据。利用视图的这种动态的特性,我们就可以基于加密字段的密文,动态的解密,生成与加密前类型完全相同的字段和数据表。从而让外部程序感觉不到数据库里面的发生的加密和解密的变化。甚至,还可以在解密函数中进行授权检验,输出真实数据或者空值。

%e6%95%b0%e6%8d%ae%e5%ba%931

如上实现了透明的数据读取。为了透明化,还需要实现透明的入库,同时实现加密。也就是需要接管对原始表上的数据插入、修改、删除等操作,执行必要的加密操作。为了实现透明加密,本专利引入了触发器。了解数据库的朋友都知道,触发器是一段能够被自动触发执行的程序。通过在上述的视图上定义触发器,当新数据插入到表中或者修改数据时,自动的进行数据的加密。

如何实现密文索引

我们需要在数据被加密前建立的索引,在处理查询时使用该索引。首先,需要确定是在库内还是在库外实现密文索引逻辑。如果在库外实现,虽然密文索引的逻辑很容易实现,但是需要解决事务同步的问题。对于事务的理解,可以近似的理解为批量任务的处理。比如一个事务需要100个步骤组成,那么这100个步骤要么都执行成功,要么都失败,而且还能在任务的执行中途停止执行,并撤销之前的所有步骤的执行结果。事务的支持很重要,否则会出现密文记录和索引记录不一致的情况,导致数据完整性的破坏。但是在使用库外密文索引的情况下,事务这个问题很难解决。

本专利使用库内索引的办法,也就是使用基于数据库的表,以及SQL语句,来实现密文索引逻辑。对于索引的维护,借助于视图上的用于加密的触发器来实现。由于触发器执行的额外操作跟触发他的请求处于同样的事务,所以,自动的实现了事务,保证密文索引和密文的同步。

确定了上述问题后,就剩下索引结构的选择和实现了。实现索引的数据结构可以有多种选择,例如AVL树、B+树或B-树等。在本专利中给出了基于AVL二叉树的实现方法。

AVL是常用的查找数,其数据组织如下图所示。每个节点表示一个被加密的记录,并且有左右两个孩子节点。

%e6%95%b0%e6%8d%ae%e5%ba%932

为了在数据库的表中表示这些节点,和他们之间的父子关系,可以使用如下的表结构。

%e6%95%b0%e6%8d%ae%e5%ba%933

由触发器通过维护上表,就实现了对索引的维护。在这个表中,所有节点承载的数据和子节点都是被加密的。所以该索引不会泄密任何原数据的信息。

在本专利的实施例中指出,给出了在Oracle数据库中如何通过数据库自身的扩展索引,实现上述索引的方法。

专利保护范围

本专利保护的内容有:

  • 基于视图、触发器的数据库透明加密方法;
  • 基于库内数据表实现的密文索引方法;
  • 基于上述方法的数据库透明加密系统。

专利的应用

该专利是国内首个可实用的第三方实现的数据库加密、密文索引的专利,甚至是可实用的首批数据库安全加固专利之一,也是该领域的入门和基础性的专利。

专利发明人戴林博士早在2007年就实现了国内首款数据库透明加密产品原型系统。作为中安威士(原中安比特)的首席科学家,本专利首先在中安威士(原中安比特)产品化, 并于2009年发布了国内首款数据库透明加密产品,并获得了一定程度的推广应用。

目前在国内,包括中安威士(原中安比特)在内,掌握数据库透明加密技术的厂家只有三家。根据相关产品文档推断,该专利已经被另两家同时采用。

由于目前只有OracleInformix数据库提供了自定义索引的使用机制,且Oracle数据库的应用更广,所以目前国内的数据库加密产品,通常只支持Oracle数据库。

专利的现状

为吸引更多的厂家进入该细分市场,该专利已经由戴林博士公开。所有厂家、个人均可以免费使用。

关注公众号:拾黑(shiheibook)了解更多

[广告]赞助链接:

四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

公众号 关注网络尖刀微信公众号
随时掌握互联网精彩
赞助链接
百度热搜榜
排名 热点 搜索指数