数据库加密是基于存储层加密的防护方式,不仅可以有效解决数据库明文存储引起的泄密风险,也可以防止来自内部或者外部的入侵及越权访问行为。

前置代理及加密网关技术

该技术思路是在数据库之前增加一道安全代理服务.安全代理服务存在于客户端应用与数据库存储引擎之间,负责完成库中数据的加解密工作,加密数据存储在安全代理服务中。这种技术也会存在一些问题和限制:

1、由于在安全增强代理中需要存储加密数据,因此要解决与数据库存储数据的一致性问题,这基本不可实现。

2、数据的联合检索问题:由于在数据库内外都存在数据,这些数据的联合检索将变得很困难;SQL语法的完全兼容也非常困难。

3、开发无法透明问题:数据库协议虽然存在标准,但事实上每个不同的数据库版本都会进行若干变更、扩展和增强,使用了这些特性的用户必须进行改造。同时在安全代理中对数据库通讯协议的模拟非常困难。

应用层加密技术

应用层加密的主要技术原理在于,应用系统通过加密API(JDBC,ODBC,C API等)对敏感数据进行加密,将加密数据存储到数据库的底层文件中;在进行数据检索时,将密文数据取回客户端,再进行解密。另外应用系统将自行管理密钥体系。

这种方案也存在明显缺陷,最主要的不足在于,应用程序必须对数据进行加解密,增加编程复杂度,而且无法对现有的系统做到透明,应用程序必须进行大规模的改造。

基于视图和触发器的后置代理技术

这种技术使用“视图”+“触发器”+“扩展索引”+“外部调用”的方式实现数据加密,同时保证应用完全透明。它的核心思想是充分利用数据库自身提供的应用定制扩展能力,分别使用其触发器扩展能力、索引扩展能力、自定义函数扩展能力以及视图等技术来满足数据存储加密,加密后数据检索,对应用无缝透明等最主要需求。这种方案的技术原理主要有以下四个方面

1、通过视图实现加密数据透明查询处理

数据库的视图可以实现对表内数据的过滤、投影、聚集、关联和函数运算。该方案正是通过数据库的视图原理实现对数据的透明访问;首先对将原有的表进行改名,然后在该表上建立与原表同名的视图;在视图内实现对敏感列的解密函数调用,实现数据的解密。

2、通过触发器实现数据的加密插入和更新处理

数据库中的触发器可以实现对数据更新动作的特定行为的响应,同时数据库中可以支持针对视图的触发器。这种方案在建立的视图上建立Instead of触发器,通过Instead of触发器实现对明文数据的加密,将加密数据插入到表中。

3、通过数据库的扩展索引接口实现加密索引

4、通过外部接口调用实现独立于数据库的权限控制和国产加密算法

在实现透明加密访问和高效索引访问之外,另一重要目的是实现对国产加密算法的调用和独立于数据库的权限控制。实现这一目的的技术关键是外部程序调用和外部通讯支持。在数据库中支持外部程序调用,只要定义好通讯接口即可。