资料库系统的安全性很大程度上依赖于资料库管理系统。如果资料库管理系统安全机制非常强大,则资料库系统的安全性能就较好。目前市场上流行的是关係式资料库管理系统,其安全性功能很弱,这就导致资料库系统的安全性存在一定的威胁。
资料库加密的必要性
由于资料库系统在作业系统下都是以档案形式进行管理的,因此入侵者可以直接利用作业系统的漏洞窃取资料库档案,或者直接利用OS工具来非法伪造、篡改资料库档案内容。这种隐患一般资料库用户难以察觉,分析和堵塞这种漏洞被认为是B2级的安全技术措施。
资料库管理系统层次安全技术主要是用来解决这一问题,即当前面两个层次已经被突破的情况下仍能保障资料库数据的安全,这就要求资料库管理系统必须有一套强有力的安全机制。解决这一问题的有效方法之一是资料库管理系统对资料库档案进行加密处理,使得即使数据不幸泄露或者丢失,也难以被人破译和阅读。
资料库数据的加密
我们可以考虑在三个不同层次实现对资料库数据的加密,这三个层次分别是OS层、DBMS核心层和DBMS外层。
⑴在OS层加密
在OS层无法辨认资料库档案中的数据关係,从而无法产生合理的密钥,对密钥合理的管理和使用也很难。所以,对大型资料库来说,在OS层对资料库档案进行加密很难实现。
⑵在DBMS核心层实现加密
这种加密是指数据在物理存取之前完成加/脱密工作。这种加密方式的优点是加密功能强,并且加密功能几乎不会影响DBMS的功能,可以实现加密功能与资料库管理系统之间的无缝耦合。其缺点是加密运算在伺服器端进行,加重了伺服器的负载,而且DBMS和加密器之间的接口需要DBMS开发商的支持。
定义加密要求工具
DBMS
资料库套用系统
加密器
(软体或硬体)
⑶在DBMS外层实现加密
比较实际的做法是将资料库加密系统做成DBMS的一个外层工具,根据加密要求自动完成对资料库数据的加/脱密处理:
定义加密要求工具加密器
(软体或硬体)
DBMS
资料库套用系统
採用这种加密方式进行加密,加/脱密运算可在客户端进行,它的优点是不会加重资料库伺服器的负载并且可以实现网上传输的加密,缺点是加密功能会受到一些限制,与资料库管理系统之间的耦合性稍差。
实现加密功能的原理
下面我们进一步解释在DBMS外层实现加密功能的原理:
资料库加密系统分成两个功能独立的主要部件:一个是加密字典管理程式,另一个是资料库加/脱密引擎。资料库加密系统将用户对资料库信息具体的加密要求以及基础信息保存在加密字典中,通过调用数据加/脱密引擎实现对资料库表的加密、脱密及数据转换等功能。资料库信息的加/脱密处理是在后台完成的,对资料库伺服器是透明的。
加密字典管理程式
加密系统
应用程式
资料库加脱密引擎
资料库伺服器
加密字典
用户数据
资料库加密系统优点
按以上方式实现的资料库加密系统具有很多优点:首先,系统对资料库的最终用户是完全透明的,管理员可以根据需要进行明文和密文的转换工作;其次,加密系统完全独立于资料库套用系统,无须改动资料库套用系统就能实现数据加密功能;第三,加解密处理在客户端进行,不会影响资料库伺服器的效率。
资料库加/脱密引擎是资料库加密系统的核心部件,它位于应用程式与资料库伺服器之间,负责在后台完成资料库信息的加/脱密处理,对套用开发人员和操作人员来说是透明的。数据加/脱密引擎没有操作界面,在需要时由作业系统自动载入并驻留在记忆体中,通过内部接口与加密字典管理程式和用户应用程式通讯。资料库加/脱密引擎由三大模组组成:加/脱密处理模组、用户接口模组和资料库接口模组,如图4所示。其中,"资料库接口模组"的主要工作是接受用户的操作请求,并传递给"加/脱密处理模组",此外还要代替"加/脱密处理模组"去访问资料库伺服器,并完成外部接口参数与加/脱密引擎内部数据结构之间的转换。"加/脱密处理模组"完成资料库加/脱密引擎的初始化、内部专用命令的处理、加密字典信息的检索、加密字典缓冲区的管理、SQL命令的加密变换、查询结果的脱密处理以及加脱密算法实现等功能,另外还包括一些公用的辅助函式。
数据加/脱密处理的主要流程
数据加/脱密处理的主要流程如下:
1) 对SQL命令进行语法分析,如果语法正确,转下一步;如不正确,则转6),直接将SQL命令交资料库伺服器处理。
2) 是否为资料库加/脱密引擎的内部控制命令?如果是,则处理内部控制命令,然后转7);如果不是则转下一步。
3) 检查资料库加/脱密引擎是否处于关闭状态或SQL命令是否只需要编译?如果是则转6),否则转下一步。
4) 检索加密字典,根据加密定义对SQL命令进行加脱密语义分析。
5) SQL命令是否需要加密处理?如果是,则将SQL命令进行加密变换,替换原SQL命令,然后转下一步;否则直接转下一步。
6) 将SQL命令转送资料库伺服器处理。
7) SQL命令执行完毕,清除SQL命令缓冲区。
以上以一个例子说明了在DBMS外层实现加密功能的原理。