分布式数据库系统是新近发展起来的一种技术,虽然它可以有效的维护和管理庞大的数据库,提高了数据库的可用性和可靠性,但由于分布式数据库中,大多都存放着重要文件,因此其安全性就显得越来越重要了,这就需要我们队分布式数据库文件进行加密。
一、分布式数据库系统特点
分布式数据库系统是在集中式数据库系统的基础上发展起来的,是计算机技术和网络技术结合的产物。分布式数据库系统适合于单位分散的部门,允许各个部门将其常用的数据存储在本地,实施就地存放本地使用,从而提高响应速度,降低通信费用。分布式数据库系统与集中式数据库系统相比具有可扩展性,通过增加适当的数据冗余提高系统的可靠性。
分布式数据库系统具有灵活的体系结构,能适应分布式的管理和控制机构,系统的可靠性高、可用性好,局部应用的响应速度快,并且经济性能优越,可扩展性好,易于集成现有系统。但是分布式数据库的系统开销相对较大,并且具有复杂的存取结构,原来在集中式系统中有效存取数据的技术,在分布式系统中都不再适用。更重要的是分布式数据库的数据安全性和保密性较难处理。因此,在分布式数据库中常采用加密手段保证数据安全。
二、分布式数据库加密
对于一般的数据库系统,我们可以采用身份识别、访问控制、完整性控制与检查、病毒防护、安全审计等安全管理技术来构筑其安全体系,以保证数据的安全性和可靠性。但是由于分布式数据库一般保存着重要的商业、军事或政治等信息,某些用户可能非法获取用户名、口令字或利用其他方法越权使用数据库,甚至可以直接打开数据库文件来窃取或篡改信息,所以仅靠前面介绍的的安全措施难以完全保证其数据的安全性,因此有必要对数据库中存储的重要文件进行加密处理。
1、数据库加密层次
可以考虑在三个不同层次实现对数据库数据的加密,这三个层次分别是OS层、DBMS内核层和DBMS外层.。
(1)在OS层加密
由于在OS层无法辨认数据库文件中的数据关系,从而无法产生合理的密钥,对密钥合理的管理和使用也很难。因此,对分布式数据库来说,在OS层对数据库文件进行加密很难实现。
(2)在DNMS内核层实现加密
这种加密是指数据在物理存取之前完成加密和解密工作。这种加密方式的优点是加密功能强,并且加密功能几乎不会影响DBMS的功能,可以实现加密功能与数据库管理系统之间的无缝耦合。其缺点是加密运算在服务器端进行,加重了服务器的负载,而且DBMS和加密器之间的接口需要DBMS开发商的支持。
(3)在DBMS外层实现加密
是将数据库加密系统做成DBMS的一个外层工具,根据加密要求自动完成对数据库数据的加密和解密处理。采用这种加密方式进行加密,加密和解密运算可在客户端进行,它的优点是不会加重数据库服务器的负载并且可以实现网上传输的加密,缺点是加密功能会受到一些限制,与数据库管理系统之间的耦合性稍差。
在DBMS外层实现加密功能的原理如下。数据库加密系统分成两个功能独立的主要部件:一个是加密字典管理程序,另一个是数据库加密和解密引擎。数据库加密系统将用户对数据库信息具体的加密要求以及基础信息保存在加密字典中,通过调用数据加/加密引擎实现对数据库表的加密、加密及数据转换等功能。数据库信息的加密和解密处理是在后台完成的,对数据库服务器是透明的。
2、分布式数据库加密处理流程
3、影响分布式数据库加密的关键性因素
(1)加密粒度
数据库加密系统的加密粒度有多种选择,按由大至小的次序排列,包括以表为单位、以记录为单位和以数据项为单位等实现加密和加密操作。总体来说,加密粒度越小则灵活度越高且安全性越好,但实现技术也更为复杂、难度更大。在实际实现中后两种加密粒度使用较多。
以表为单位的加密方法类似于操作系统中文件加密的方法,每个表与不同的表密钥运算,形成密文后存储。根据表的物理存储实现方式的不同,加密单位可能是文件或文件中的块。该方式实现最为简单,但该方式中的灵活度最低且执行效率最低,浪费大量DBMS或加密服务器计算资源。
当加密和解密的粒度为每个记录的字段数据/数据项时,系统的安全性与灵活性最高,同时实现技术也最复杂。在该方式中,每个数据项可以独立的进行加、解密操作,并使用不同的数据项密钥。
以记录为单位的加密介乎前两种粒度之间。将记录看作操作对象,统一进行加密和解密处理。只有以记录的字段数据为单位进行加密和解密,才能适应数据库操作,同时进行有效的密钥管理并完成 “一次一密”的密码操作。
(2)加密算法
目前缺乏专门针对数据库加密的加密算法,因而分布式数据库加密时只有根据数据库特点选择现有的加密算法。由于加解密速度是分布式数据库考虑的一个重要因素,数据库加密中通常使用对称加密体制中的块加密算法。数据项长度或剩余部分长度小于加密算法所需的块长时,需要按一定规律扩展后加密。也可以将剩余部分再用序列密码加密。数据项粒度加密需要对不同的数据项使用不同的密钥。但这些密钥不能是随机生成的,否则很难保证对同一数据项使用相同的加密解密的密钥。但若是系统保存每一个数据项密钥,则密钥信息量与数据库数据量相当,显然也是不现实。所以数据项密钥不能是独立的,而应该是函数自动生成的。通常可以将数据项密钥表示为一个基本密钥与数据项所在的行与列的函数。
(3)密钥管理
加密数据库中的密钥管理比其他系统的密钥管理更为困难与复杂。而分布式数据库中存储着海量数据,已经加密的数据需要用原来的密钥系统解密,且解密时间将会很长,加密密钥不可能随时更换。
除此以外,根据加密粒度的不同,对不同的数据应该使用不同的密钥。因此分布式数据库中需要保存大量的密钥信息。另外,分布式数据库客体之间隐含着复杂的逻辑关系,一个逻辑结构可能对应着多个数据库物理客体,所以数据库加密不仅密钥量大,而且组织和存储工作比较复杂,需要对密钥实现动态管理。因此如何生成、保存、替换数据库加密密钥,对数据库加密中的密钥管理提出了更为严格的要求。
解决这一问题的方法之一是采用分级管理结构。无论哪种多级密钥体制,主密钥都是加密子系统的关键,多级密钥管理体制的安全依赖于主密钥的安全。
另一种解决方法是集中密钥管理方法。即在建立加密数据库时,由密钥管理中心负责产生加密密钥并对数据加密。当一用户访问分布式数据库时,密钥管理机构核对用户识别符和用户密钥,认为是合法用户,则允许访问。但必须由密钥管理机构找到或计算出相应的数据加密密钥,并由他们利用数据加密算法解密出相应的数据。由于加密粒度的不同,密钥的种类和密钥的数量不同。这些密钥存储在一张表中。这张表通过密钥加密密钥对其加密保存。
随着互联网的高速发展,分布式数据库系统的应用范围也在逐步的加大,所以分布式数据库加密技术也要进一步向前推进。
小知识之加密粒度
加密粒度可以分为表级、行级、列级、数据项级,不同加密粒度特点不同,加密粒度越小灵活度越高安全性越好,但是实现技术也越复杂,需根据隐私数据筛选情况,选择合适的加密粒度。