探讨数据库加密技术

时间:2022-08-24 05:28:00

探讨数据库加密技术

摘要:从数据库安全需求着手,提出数据库加密要实现的目标,分析了数据库加密技术中几项关键技术并进行比较,最后对加密后系统产生的影响进行总结。

关键词:数据库安全;数据库加密;加密粒度;加密算法

中图分类号:TP311.13 文献标识码:A 文章编号:1009-3044(2008)18-20ppp-0c

Discuss About Database Encryption Technology

QIN Xiao-xia, LI Wen-hua, LUO Jian-fen

(College of Computer Science, Yangtze University, Jingzhou 434023, China)

Abstract: Begins with requirement of the database security , it proposes an aim of the database encryption ,and then analyzes several key technologies in the database encryption technology, and compares them. Finally the influence of encryption system will be summarized.

Key words: Database security; Database encryption; Encryption granularity; Encryption algorithm

1 引言

随着网络技术的不断发展及信息处理的不断增多,巨量级数据扑面而来。数据库系统担负着集中存储和处理大量信息的任务,从而使数据安全问题变得也非常显著。传统地,物理安全和操作系统安全机制为数据库提供了一定的安全措施和技术,但并不能全部满足数据库安全的需求,特别是无法保证一些重要部门如政府、金融、国防和一些敏感数据如信用卡、身份证、个人的医疗信息的安全,因此对数据库加密是提高数据库安全的最重要的手段之一,也成了数据库安全研究的一个焦点。

2 数据库安全概述

数据库在信息系统中的核心地位使得数据库面临着严重的安全威胁,根据数据库受到的威胁和可能的攻击,数据库的安全性要求着重在几方面:

(1)物理上的数据完整性。预防数据库数据物理方面的问题,如掉电,以及灾害破坏后的恢复、重构数据库。

(2)逻辑上的数据完整性。保持数据的结构。

(3)元素的完整性。包含在每个元素中的数据是准确的。

(4)可审计性。能追踪到谁访问或修改过数据库中的元素。

(5)访问控制。确保用户只能访问授权数据,限制用户访问模式。

(6)用户认证。用户除提供用户名、口令外,还可按照系统安全要求提供其它相关安全凭证。系统可以选择使用终端密钥、用户USB Key等来增强身份认证的安全性。

(7)可获用性。用户能够对数据库进行授权的访问。

3 数据库加密要实现的目标

与一般的数据加密和文件加密相比,由于数据库中数据有很强的相关性,并且数据量大,因此对它加密要比普通数据加密和文件加密有更大的难度,密钥管理更加困难。数据加密是防止数据库中数据在存储和传输中失密的有效手段。数据加密的过程实际上就是根据一定的算法将原始数据变换为不可直接识别的格式,从而使得不知道解密算法的人无法获知数据的内容,而仅允许经过授权的人员访问和读取数据,从而确保数据的保密性,是一种有助于保护数据的机制。

因此,数据库加密要求做到:

(1)数据库中信息保存时间比较长,采用合适的加密方式,从根本上达到不可破译;

(2)加密后,加密数据占用的存储空间不宜明显增大;

(3)加密/解密速度要快,尤其是解密速度,要使用户感觉不到加密/解密过程中产生的时延,以及系统性能的变化;

(4)授权机制要尽可能灵活。在多用户环境中使用数据库系统,每个用户只用到其中一小部分数据。所以,系统应有比较强的访问控制机制,再加上灵活的授权机制配合起来对数据库数据进行保护。这样既增加了系统的安全性,又方便了用户的使用;

(5)提供一套安全的、灵活的密钥管理机制;

(6)不影响数据库系统的原有功能,保持对数据库操作(如查询,检索,修改,更新)的灵活性和简便性;

(7)加密后仍能满足用户对数据库不同的粒度进行访问。

4 数据库加密技术中的关键问题

数据库加密需要考虑几个重要问题:是在数据库引擎内或产生数据的应用程序中或是在硬件设备上进行加密/解密?加密数据粒度基于数据库、表还是字段?加密效果与其对性能的影响如何?

针对上述几个问题,结合数据库数据存储时间长、共享性高等特点,在数据库加密技术中,重点是要选择合适的加密执行层次、加密粒度和加密算法,并且要与实际的安全需求紧密结合起来。

4.1 加密执行层次

对数据库的数据进行加密主要是通过操作系统层加密、DBMS内核层(服务器端)加密和DBMS外层(客户端)加密三个不同层次实现的;DBMS内核层、外层加密分别如图1、图2所示:

(1)在OS层

在操作系统(OS)层执行加密/解密,数据库元素以及各元素之间的关系无法辨认,所以无法产生合理的密钥。一般在OS层,针对数据库文件要么不加密,要么对整个数据库文件进行加密,加密/解密不能合理执行。尤其对于大型数据库来说,在操作系统层次实现数据库的加密/解密,目前还难做到有效保证数据库的安全,因此一般不采用在OS层进行数据库加密。

(2)在DBMS内核层执行加密/解密

在内核层执行加密解密有如下特点:

加密/解密执行时间:在数据存入数据库或从数据库中取出时,即在物理数据存取之前;

加密/解密执行主体:在DBMS内核层,由用户定制的或者DBMS提供的存储过程函数执行;

加密/解密过程:在存储数据时,通过触发器调用加密存储过程对数据加密,然后将密文数据存入数据库在读取数据时,触发器调用相应存储过程解密数据,然后读出结果;

加密/解密算法:由DBMS系统提供。多数不提供添加自己算法的接口,因此算法选择比较受限制。

在DBMS内核层实现加密需要对数据库管理系统本身进行操作,这种加密是指数据在物理存取之前完成加密/解密工作。优点是加密功能强,并且加密功能几乎不会影响DBMS的功能,可以实现加密功能与数据库管理系统之间的无缝耦合。由于与DBMS系统结合紧密,可以提供对各种粒度加密的灵活性,灵活的加密配合DBMS的访问控制、授权控制,不失是一种有效的数据库数据保护方案。另外,这种层次的加密对于应用程序来说是透明的。其缺点是加密运算在服务器端进行,加重了服务器的负载,而且DBMS和加密器之间的接口需要DBMS开发商的支持。

(3)在DBMS外层执行加密/解密

在DBMS外层执行加密/解密包含两种实现方式:第一种方式如图2(a)所示,是在应用程序中实现,加密时调用应用程序中的加密模块来完成数据的加密工作,然后把密文数据传送到DBMS存储;解密时把密文数据取出到应用程序中,然后由应用程序中的解密模块将数据解密并给出结果。第二种方式如图2(b)所示,是直接利用操作系统提供的功能实现加密,这种加密方式是在文件级别上的加密,直接加密数据库文件。

在DBMS外层实现加密的好处是不会加重数据库服务器的负载, 采用这种加密方式进行加密,加解密运算可在客户端进行,它的优点是不会加重数据库服务器的负载并且可以实现网上传输的加密,缺点是加密功能会受到一些限制,与数据库管理系统之间的耦合性稍差。

(4)不同层次实现数据库加密效果比较

在DBMS内核层和DBMS外层加密的特点如表1所示:

由表可知:在DBMS内核层执行加密/解密,不会增加额外的处理负担,对本身性能影响小;实现了密钥与密文的分离,安全程度相对较高;算法由应用程序提供,选择性大。

DBMS外层加密主要存在着可用性与安全性的矛盾;加密粒度受DBMS接口支持的限制,灵活性不够强;安全升级时,应用程序改动比较大;对于密文数据,DBMS本身的一些功能会受到影响。

4.2 加密粒度选择

数据库的加密粒度指的是数据加密的最小单位,主要有表、字段、数据元素等。数据库中执行加密,加密粒度越小,则可以选择加密数据的灵活性就越大,但是产生的密钥数量也大,带来管理方面问题。数据库中加密粒度的选择要根据需要,充分衡量安全性和灵活性等需求。选择的过程中,由于数据库中存储的数据包括非敏感数据,因此,可以只选择敏感数据部分进行加密,从而加密粒度越小,加密执行消耗资源就少,投入费用就少。

4.3 算法选择

数据库加密技术的安全很大程度上取决于加密算法的强度,加密算法直接影响到数据库加密的安全和性能。因此,加密算法的选择在数据库加密方案中也显得举足轻重。传统的数据加密技术包括以下三种:

(1)对称加密

也称为共享密钥加密。对称加密算法是应用较早的加密算法,在对称加密算法中,数据发信方将明文(原始数据)和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。收信方若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。由于对称加密算法算法公开、计算量小、加密速度快、加密效率高,因此它是最常用的加密技术。主要的对称加密算法有DES、IDEA和AES。

(2)非对称加密

又称为公钥加密。非对称加密算法使用两把完全不同但又是完全匹配的一对钥匙――公钥和私钥。非对称加密算法的基本原理是,如果发信方想发送只有收信方才能解读的加密信息,发信方必须首先知道收信方的公钥,然后利用收信方的公钥来加密原文;收信方收到加密密文后,使用自己的私钥才能解密密文。显然,采用非对称加密算法,收发信双方在通信之前,收信方必须将自己早已随机生成的公钥送给发信方,而自己保留私钥。由于非对称算法拥有两个密钥,因而特别适用于分布式系统中的数据加密。常用的公钥加密算法是RSA,它不但可以用来加密数据,还可用来进行身份认证和数据完整性验证。

(3)混合加密

由于对称加密算法更简单,数据的加密和解密都使用同一个密钥,所以比起非对称加密,它的速度要快得多,适合大量数据的加密和解密;主要缺点也是由于使用相同的密钥加密和解密数据引起的,所有的数据发送方和接收方都必须知道或可以访问加密密钥,必须将此加密密钥发送给所有要求访问加密数据的一方,所以在密钥的生成、分发、备份、重新生成和生命周期等方面常存在安全问题。而公钥加密属于非对称加密,不存在密钥的分发问题,因此在多用户和网络系统中密钥管理非常简单,但由于它主要基于一些难解的数学问题,所以安全强度没有对称加密高,速度也比较慢。

为了充分发挥对称加密与非对称加密的优势,混合加密方案被提出。在混合加密方案中,加密者首先利用一个随机生成的密钥和对称加密算法加密数据,然后通过使用接收者的公钥把随机密钥进行加密,并与密文一起传送给接受者。接收者通过自己的私钥首先解密随机密钥,再利用其解密密文。此方案既利用了对称加密安全强度高、速度快的特点,也利用了非对称加密密钥管理简单的特性。“一次一密”的加密是最安全的一种加密技术,加密者在每次加密时都使用与明文长度一样的随机密钥,并且每个密钥都不重复使用。但在数据库加密中,由于密钥的产生和保存都存在很大的困难,因此在实际应用中并不常用。

5 数据库加密后对系统的影响

加密技术在保证数据库安全性的同时,也给数据库系统带来如下一些影响:

(1)性能下降:数据加密后,由于其失去了本身所固有的一些特性,如有序性,相似性和可比性,这样导致对加密数据的查询,往往需要对所有加密数据先进行解密,然后才能进行查询。而解密操作的代价往往很大,这样使得系统的性能急剧下降。

(2)索引字段的加密问题:索引的建立和应用必须在明文状态下进行,这样才能够保证索引文件中键的有序性,以便提高查询性能。否则,索引将失去作用。

(3)加密字符串的模糊匹配:对加密数据上的大量模糊查询,例如,当SQL条件语句包“Like”时,很难进行处理。

(4)加密数据库的完整性:当数据库加密后,实体完整性不会被破坏,而引用完整性难以维护。

(5)加密数据的存储空间增加问题:对数据库加密,通常采用分组加密算法,这有可能导致数据加密后的存储空间增加。

(6)密钥管理问题:在现代密码学中算法的安全性都是基于密钥的安全性,而不是基于算法的细节的安全性。对数据库采取加密技术来保证其安全性,但是在现实生活中,如何保证密钥本身的安全性又是一件非常困难的事情心。在数据库管理系统中,由于数据的共享性和存储数据的持久性等原因,要求更加灵活和安全的密钥管理机制。

参考文献:

[1] 万红艳.一种数据库加密系统的设计与实现[J].黄石理工学院学报,2007,23(3):27-29.

[2] 赵晓峰.几种数据库加密方法的研究与比较[J].计算机技术与发展,2007,17(2):219-222.

[3] 王正飞,施伯乐.数据库加密技术及其应用研究[D].上海:复旦大学,2005.

[4] 庄海燕,徐江峰.数据库加密技术及其在Oracle中的应用[D].郑州:郑州大学,2006.

[5] 黄玉蕾.数据库加密算法的分析与比较[J].科技情报开发与经济,2008,18(2):159-161.

收稿日期:

作者简介:秦晓霞(1982―),女,湖北荆州人,硕士研究生,主要研究方向:数据库技术及应用;李文华(1965―),男,湖北人,副教授,主要研究方向:网络数据库应用、微机监控系统开发;罗剑芬(1984―),女,湖北黄冈人,硕士研究生,主要研究方向:数据库技术及应用。

上一篇:多媒体课件制作中的数字音频处理技术 下一篇:Linux高性能计算集群的设计与实现