下面我们进一步解释在DBMS外层实现加密功能的原理
数据库加密系统分成两个功能独立的主要部件一个是加密字典管理程序另一个是数据库加/脱密引擎数据库加密系统将用户对数据库信息具体的加密要求以及基础信息保存在加密字典中通过调用数据加/脱密引擎实现对数据库表的加密脱密及数据转换等功能数据库信息的加/脱密处理是在后台完成的对数据库服务器是透明的
◆加密字典管理程序
◆加密系统
◆应用程序
◆数据库加脱密引擎
◆数据库服务器
◆加密字典
◆用户数据
按以上方式实现的数据库加密系统具有很多优点首先系统对数据库的最终用户是完全透明的管理员可以根据需要进行明文和密文的转换工作;其次加密系统完全独立于数据库应用系统无须改动数据库应用系统就能实现数据加密功能;第三加解密处理在客户端进行不会影响数据库服务器的效率
数据库加/脱密引擎是数据库加密系统的核心部件它位于应用程序与数据库服务器之间负责在后台完成数据库信息的加/脱密处理对应用开发人员和操作人员来说是透明的数据加/脱密引擎没有操作界面在需要时由操作系统自动加载并驻留在内存中通过内部接口与加密字典管理程序和用户应用程序通讯数据库加/脱密引擎由三大模块组成加/脱密处理模块用户接口模块和数据库接口模块如图所示其中数据库接口模块的主要工作是接受用户的操作请求并传递给加/脱密处理模块此外还要代替加/脱密处理模块去访问数据库服务器并完成外部接口参数与加/脱密引擎内部数据结构之间的转换加/脱密处理模块完成数据库加/脱密引擎的初始化内部专用命令的处理加密字典信息的检索加密字典缓沖区的管理SQL命令的加密变换查询结果的脱密处理以及加脱密算法实现等功能另外还包括一些公用的辅助函数
数据加/脱密处理的主要流程如下:
() 对SQL命令进行语法分析如果语法正确转下一步;如不正确则转)直接将SQL命令交数据库服务器处理
() 是否为数据库加/脱密引擎的内部控制命令?如果是则处理内部控制命令然后转);如果不是则转下一步
() 检查数据库加/脱密引擎是否处于关闭状态或SQL命令是否只需要编译?如果是则转)否则转下一步
() 检索加密字典根据加密定义对SQL命令进行加脱密语义分析
() SQL命令是否需要加密处理?如果是则将SQL命令进行加密变换替换原SQL命令然后转下一步;否则直接转下一步
() 将SQL命令转送数据库服务器处理
() SQL命令执行完毕清除SQL命令缓沖区
[] []