这种技术使用“视图”+“触发器”+“扩展索引”+“外部调用”的方式实现数据加密,同时保证应用完全透明。它的核心思想是充分利用数据库自身提供的应用定制扩展能力,分别使用其触发器扩展能力、索引扩展能力、自定义函数扩展能力以及视图等技术来满足数据存储加密,加密后数据检索,对应用无缝透明等最主要需求。
这种方案的技术原理主要有以下四个方面:
(1)通过视图实现加密数据透明查询处理
数据库的视图可以实现对表内数据的过滤、投影、聚集、关联和函数运算。该方案正是通过数据库的视图原理实现对数据的透明访问;首先对将原有的表进行改名,然后在该表上建立与原表同名的视图;在视图内实现对敏感列的解密函数调用,实现数据的解密。
(2)通过触发器实现数据的加密插入和更新处理
数据库中的触发器可以实现对数据更新动作的特定行为的响应,同时数据库中可以支持针对视图的触发器。这种方案在建立的视图上建立Instead of触发器,通过Instead of触发器实现对明文数据的加密,将加密数据插入到表中。
(3)通过数据库的扩展索引接口实现加密索引
以Oracle数据库为例,在Oracle Data Cartridge的索引扩展机制提供了一套现成的框架,可以自己定义索引并实现Operator,自行编写索引在Create Index、Insert、Delete、Update语句执行、以及Scan Index发生时的相应处理代码。通过该机制,可以使用自定义的扩展加密索引,这样当使用该索引对加密数据进行检索时,可以进行正常的排序及比较,这也就解决了加密后数据检索的难题,大幅度提升了密文检索的效率。
(4)通过外部接口调用实现独立于数据库的权限控制和国产加密算法
在实现透明加密访问和高效索引访问之外,另一重要目的是实现对国产加密算法的调用和独立于数据库的权限控制。实现这一目的的技术关键是外部程序调用和外部通讯支持。在数据库中支持外部程序调用,只要定义好通讯接口即可。那么这种方案可以将加密函数和解密函数做成外部调用,这样不仅可以在外部调用国产加密设备的加密算法,还可以将权限校验过程放在数据库之外完成,确保了对超级用户的权限限制。