数据库的安全威胁是信息系统安全的核心障碍之一。数据库安全威胁一方面来自外界攻击者,由于攻击者很难突破多级安全防御措施从而进攻数据库。因此计算机犯罪的80%来自企业或团体内部。在传统的数据库管理系统中,数据库管理员拥有查看数据库中所有数据的权力,同时也具备修改数据的权限以及擦除犯罪记录的能力。通过使用数据库加密技术可有效防范此类攻击。目前多数商用数据库管理系统都提供访问控制、权限管理以及安全审计等功能,部分数据库系统甚至提供数据加密功能,但不同的数据库系统所使用的加密机制不同,无法用统一的方式对各个数据库中的数据进行加解密管理,对加密所使用密钥的合理有效管理就更为复杂。

元数据就是描述数据的数据。它是按一定标准,从信息源中抽取出相应的特征组成的一个特征元素集合。元数据可为各种形态的信息资源提供规范、普遍的描述方法和检索工具,为分布的、由多种资源组成的信息体系提供整合的工具和纽带。通过元数据,人们能对信息资源进行比较透彻的分析与理解,主要包括资源信息的格式、质量、处理方法和获取等各方面信息。元数据标准可适合于资料共享、数据发布、数据交换以及网络查询等应用。在数据库项目建设中,元数据描述的意义重大,对于数据中心来说,除了自身以外,有多个分数据中心,整个体系的数据存储量是相当复杂和庞大的,需要依托中心元数据来进行统一的服务与管理。

本文提出一种新的数据库加密模式,它以数据库元数据仓库作为整个加密系统的底层依托。通过将加解密引擎与元数据进行合理和有效的集成,从而提高数据库加密系统的灵活性以及适应性,为最终用户提供透明的加解密服务。

一、数据库加密系统的基本要求及实现方案

密码技术是数据存储保护技术中所应用的关键技术,由于不存在专门用于数据库加密的算法,加密系统选择采用国际上通用的加密算法q由于数据库中存储数据有其自身的特点,因此,加密解密工作富有极强的挑战性。

1、数据库中存储加密数据的特点

数据库中数据存储时间比较长,同时存储的数据量较大,密钥不可能频繁地更新,要求有足够高的加密强度;数据库中存在大量的数据,加密后存在大量的明密文范例;数据库中的数据的规律性比较强。

2、数据库加密系统的基本要求

针对数据库中的加密数据的这些特点,一个性能表现出色的数据库加密系统设计应该满足以下几个方面的要求,加密的强度要保证长时间不被攻击者破译;加解密不能影响合法用户对数据库的正常操作;加解密所需要的时间要足够短,不能让用户感到明显的延迟;具备灵活的密钥管理机制,定期更换密钥;加密以后的数据存储量没有明显的变化。

3、数据库加密系统的层次选择

当前对于数据库加密主要可以分为3个层次:操作系统层加密,数据库系统内核层加密,数据库系统外部加密。

在操作系统层对数据库文件进行加密时,由于不了解数据库中数据之间的关系,无法进行细粒度的加密控制。如果对数据库文件进行加密,即使用户只想获取数据库表中的部分数据,也必须将整个密文数据库文件进行解密,这将严重影响数据库加密系统的性能。

在数据库库内对数据库文件进行加密时,加解密过程对于用户和应用程序来说是透明的,数据一旦经过数据库系统边界,就会透明地进行加解密转化。库内加密通常是以存储过程的形式调用的。

在数据库库外进行加密,加解密过程发生在DBMS之外,DBMS所管理的数据以密文形式存在,加密解密过程可以在客户端完成,也可以由专门的加解密服务器完成。

本文采用库外加密的方式,可实现与不同的数据库进行互操作,对不同的数据库系统,如SQL Server, My SQL等,只需修改相关的数据库配置文件,便可实现系统的可重用。

4、数据库加密粒度的选择

数据库的加密粒度可以有以下3种:表级别的加密,记录级别的加密,字段级别的加密。一般而言,粒度越小,加密的安全强度越高,但技术实现的难度也越大,密钥维护与管理的复杂度也越高。

本文采用的粒度是基于字段级别的,它可以提供较强的灵活性。下文将对基于元数据的数据库加密系统体系结构进行详细的分析与设计。

二、基于元数据的数据库加密系统体系结构

将数据库加密系统应用在数据仓库中,必须对仓库中所有元数据进行统一规划与存储,并提供一致的查询接口。这将避免对于每次加解密操作都对数据库进行查询获得其元数据信息。数据库元数据信息将被存储在经过扩展后的CWM元数据仓库中。数据中心所需采集数据的属性是相对固定的,这些属性可以被多个关系型数据库表所复用,对它们可进行统一管理。对具有同样属性的表中的数据加密时,只需对元数据库中待加密属性的安全定义信息进行设定即可。

对于加密系统所需要的安全元数据库,指定专门的安全管理员进行管理与维护,安全管理员只能看到基本的数据库以及安全字典信息,底层具体的数据对于安全管理员来说是不可见的。数据库系统的机密性就得到了保证。

1、本方案体系架构的提出

对于数据库加密系统的加密方式,可归纳为:客户端加密,服务器端加密以及客户端与服务器端混合加密。基于3种体系结构的优劣对比以及实际所研究课题的需要,本文的数据库加密系统是基于服务器端开发的。它由客户端安全通信代理模块、服务器端安全通信代理、加解密服务接口模块、加密、解密引擎、密钥库管理模块、加密字典定义与配置模块、加密字典元数据访问模块以及异构数据源访问模块所构成。具体的系统逻辑结构如图1所示。

基于元数据的数据库加密系统

整个数据的访问过程可以分为以下几个步骤:

(1)客户端发起到数据库安全访问代理的连接请求。

(2)服务器接受客户端的连接请求并分配连接资源,并接收客户端的服务请求。

(3)服务器对请求参数进行解析,然后调用元数据访问模块,如果访问操作中没有涉及加密字段,则直接返回并调用数据库安全访问模块;如果有加密字段,则将加密字典定义信息返回并存放入服务器端的加密字典缓冲区中,以便提高重复查询的速度,然后调用数据库安全访问模块。

(4)加解密引擎访问加密字典定义缓冲区以及密钥库,结合数据库访问请求进行相应的加解密处理,并解析成能够对数据库中密文进行查询的SQL语句,然后调用数据库安全访问代理模块。

(5)数据库安全访问模块接收待处理请求,进行相应操作,将第一次查询得到的模糊结果经过结果集过滤模块进一步处理,最后将匹配的结果返回数据库解密引擎进行处理并返回。

(6)返回结果通过密文传输到达客户端安全代理并进行相应的解密处理,最终以明文形式返回给客户端。

2、各主要模块设计

(1)加密解密引擎

加密解密引擎是密码系统的核心,实现了AES、DES等算法,为系统中的其他组件提供支持。在实现密码引擎的时候,须考虑:密钥的长度、加解密使用的算法、模式以及数据填充方式等。加密解密引擎位于应用服务器以及数据服务器之间,在后台完成对数据库中的数据进行加密、解密的操作,对应用程序以及前台开发人员来说是透明的。

数据库加密解密引擎主要由加密、解密引擎以及数据库访问接口模块组成。加密解密引擎主要完成对重要数据的加密运算以及解密运算,它需要同时与密钥库以及加密字典元数据仓库进行协作完成自己的职责。

数据库访问模块主要是提供一个对异构数据源访问的统一接口。主要的功能就是将加密之后的密文信息存储到数据库系统中,并且在外界需要访问数据库数据时将密文信息传到加密解密引擎进行解密处理。

(2)密钥库管理模块

密钥库中的密钥被保存在一个高度安全的环境中,并且只允许密码引擎访问密钥,在特定的情况下,也可以让密钥管理器来访问。在本体系结构中,密钥管理器采用二级密钥管理来增强密钥库的安全性。

密钥管理器分为主密钥以及工作密钥2个级别,主密钥主要用来对工作密钥进行加密保护,而工作密钥才是最终加密解密引擎对数据进行加密所使用的密钥。通过这样的分级设计,可以把对于密钥库保护的风险转移到对主密钥的保护。

主密钥的保护可以依赖硬件卡或其他多种方式进行保护。

密钥库的管理主要涉及密钥的生成、密钥的存储、密钥的更换、密钥的传输以及密钥的恢复。密钥库应该独立存放于加密数据所在的服务器之外。对于密钥的自动生成可以利用本地加解密引擎所提供的密钥生成功能,也可以通过自己设计的随机密钥生成算法来生成密钥。在密钥存储库中,密钥是以密文的形式存放于密钥库中。对于密钥的更换,必须先将所有利用同一密钥加密的数据进行脱密处理,然后再利用新的密钥进行统一加密。

密钥的传输,可以借助PKI公钥基础设施进行安全的分发以及验证。密钥的备份必须能及时地反映密钥库中密钥状态的变化。

(3)基于元数据的加密字典管理模块

加密字典管理模块主要可以分为以下几大模块:加密定义元数据存储模块,加密定义元数据配置模块以及加密定义元数据管理模块。

加密定义存储模块的主要功能是将分布式节点的加密定义数据存入中心服务器。主要包括加密定义元数据接收模块以及元数据仓库存储模块。

加密定义元数据配置模块的功能是提供一个丰富的用户界面,安全管理员可利用它访问本地数据库的数据库元数据,并且可以建立本地的加密定义元数据库,然后统一上传。它可分为异构数据库访问模块、数据库字典信息查询模块、数据库加密定义配置模块、加密定义数据上传模块。

加密定义管理模块主要功能是为所有具有访问权限的加密系统引擎提供一个统一的查询加密定义元数据的接口。在特定的情况下,它也可以被中心节点的安全管理员所访问和管理。主要包括加密元数据查询模块、加密元数据展示模块、加密定义修改以及元数据库访问以及存储模块。

(4)数据库安全访问代理

安全访问中间件主要分为元数据仓库访问模块、异构数据源访问模块、Web服务接口模块以及加解密引擎访问模块。元数据仓库访问模块主要从仓库元数据检索出待访问数据库的基本信息,例如数据库的URL、数据库的登录用户名以及密码等基础信息。

异构数据源访问模块的功能是可以屏蔽底层数据库系统的差异,以一种统一且一致的方式访问异构的底层数据库系统。对于一个数据库访问代理模块来说,它应该支持现在许多商业数据库所提供的分页等高级特性。Web服务接口模块的作用是将数据库访问代理的功能封装成可以利用webservice调用的接口。客户端的一切调用都通过此接口进行,这样就可以实现异构系统的无缝集成。

加密解密引擎访问模块是调用加解密功能的唯一入口点,整个密码系统只允许通过加解密引擎访问模块进行访问,这样可以在一定程度上提供密码系统的安全性,能有效防止非法入侵者的攻击。

(5)客户端以及服务器端安全通信代理模块

由于客户端与服务器端是通过Web service进行通行的,而SOAP协议是它们能够互操作的基础。它们的通行从最终形式上来说是基于XML的。为了保证Web service传输数据的安全,服务器端可以对SOAP报文进行多种方式的身份认证,主要包括以下一些身份凭证:用户名/密码,X.509证书,Kerberos票据和认证者、SIM卡的移动设备安全性凭证等多种方式与技术来保证。为了保证报文在传输过程中的完整性约束,也可以对SOAP报文进行数字签名,保证请求的完整性以及不可抵赖性。

客户端安全通信代理模块就是将应用程序前台需要与数据库进行交互的数据转化成加密的报文并通过网络传送到服务器端。而服务器端安全通信代理模块的作用与客户端的行为相反,它首先通过一定的方式将客户端传送过来的经过加密的XML数据进行解密操作,然后利用解密的信息在服务器端进行处理并返回用户所需要的数据,在将结果传回客户端之前,在执行相反的操作。图2为整个系统的模块结构。

基于元数据的数据库加密系统

3、基于元数据仓库的数据库加密系统的网络拓扑

图3是基于元数据仓库的数据库加密系统的网络拓扑图,由于数据中心有复杂的层级关系,而且地域分布比较广,在部署的时候采用分布式方式。

基于元数据的数据库加密系统

本系统体系结构在设计之前,建立了详细的安全威胁模型并经过详细的论证。可以在相当大的程度上保证系统的安全性要求符合系统的实际工作环境要求。当然,保护一个数据库系统的安全,仅依靠数据库加密技术是远远不够的,严格用户身份认证、数据安全的存取控制模型、细粒度的访问控制权限设置以及防火墙的有效配置都是数据库安全不可缺少的有效措施。数据库加密虽然在一定程度上影响了数据库操作的性能以及可用性,但对于公司或者企业的数据安全来说,是非常必要的。

小知识之元数据

元数据(Meta Data)是关于数据仓库的数据,指在数据仓库建设过程中所产生的有关数据源定义,目标定义,转换规则等相关的关键数据。同时元数据还包含关于数据含义的商业信息,所有这些信息都应当妥善保存,并很好地管理。为数据仓库的发展和使用提供方便。