APP下载

基于三维零件资源库的数据库加密技术

2015-06-15梁时英

自动化仪表 2015年4期
关键词:加密算法密文解密

郭 娟 梁时英

(石家庄职业技术学院现代教育技术中心,河北 石家庄 050081)

基于三维零件资源库的数据库加密技术

郭 娟 梁时英

(石家庄职业技术学院现代教育技术中心,河北 石家庄 050081)

针对基于B/S模式的三维零件资源库系统所面临的数据安全存储问题,设计了一款基于DBMS外层加密的数据库加密引擎。在加密粒度上采用了字段加密的手段,同时对称加密算法的加密模式引入了随机元的CBC模式,解决了相同原文密文相同的隐患。在密钥保护上采用了PKI技术,将对称加密与非对称加密进行了有机的结合,解决了密钥安全管理的问题。应用实践表明,该系统能够对三维零件资源库中的数据进行有效的保护。

数据库加密 B/S结构 加密/解密 公开密钥基础设施(PKI) 密钥管理 AES

0 引言

随着企业信息化的迅猛发展,越来越多的业务系统被放到互联网上使用,在提升效率的同时,也造成了很多的安全隐患。目前对信息系统采用的安全手段往往是一些网络隔离、认证、鉴权的手段,所以对于一个安全的数据库来说以上措施都是非常必要的,但是真正要面对那些经验丰富的外部攻击者或者内部管理员等,数据库加密便成为了最后一道防线。因此,如何才能保证和加强数据库的安全性和保密性,是三维零件资源系统亟需解决的关键问题。

1 数据库加密技术

不同于文件系统,数据库系统尤其是结构化数据库系统,是数据多关联、低冗余、高并发的系统。对数据库数据进行加密,在保证数据安全的基础上,数据库数据的关联性不能丢失,冗余度不能变高,并发数不能降低。因此,对数据库进行加密时,需要考虑以下几个问题[1]。

1.1 数据库加密层次的选择

数据库加密有三种层次,分别是操作系统层、数据库管理系统(database management system,DBMS)内核层和DBMS外层[2-4]。这三种不同的层次在实现复杂性、效率、灵活性等方面有所不同,具体说明如下。

① 在操作系统层面加密

很多操作系统可以在文件系统上进行加密,如文件过滤驱动等手段。当向文件中写入数据时,在驱动层将数据进行加密再写入;当从文件中读取数据时,在驱动层将数据进行解密再读出。因为加解密操作是在驱动层完成,数据加解密的效率比较高,同时对数据库的检索、排序等功能完全没有影响。不足之处是,对数据库文件整体进行驱动层的加密,只能采用一个密钥,而数据库中数据项、记录等属于不同的用户,也只能采用同一个密钥进行加密。因此,在操作系统层进行加密,一旦加密采用的唯一主密钥出现问题,将带来所有用户的泄密问题。此外,在操作系统层面进行加密,密钥的管理往往由操作系统进行管理,其对操作系统的密钥管理手段的依赖性比较强。

② DBMS内核层加密

这种方式与操作系统层面加密比较类似。其对数据也是进行透明的加解密,在保证数据以较高效率的同时,对数据库的检索、排序等功能没有任何影响。较操作系统层面的加密,DBMS内核层加密的改进之处在于密钥的管理不再依赖于操作系统,而是由DBMS内核完成。但是其使用的主密钥仍然是单一的,密钥管理不够灵活,没有从本质上解决操作系统层面加密所面临的安全问题。另外,这种加密方式需要很多数据库系统的内部接口,往往只能够由数据库厂商来提供,第三方很难完成。

③ DBMS外层加密

这种方式是将加密引擎放置在DBMS的外层,对数据库输入、输出的数据进行过滤,根据需要对输入的部分数据进行加密,对输出的部分数据进行解密。这种方式的加密操作是针对数据库内部的数据完成,可以结合公开密钥基础设施(public key infrastructure,PKI)技术,实现更加灵活的密钥管理策略,从而有效提升数据的安全性。同时,相对于前两种技术这种方式也更具通用性。DBMS外层加密模式的不足之处在于数据库功能上会受一些限制,如对加密数据的检索。因此,采用这种方式,设计一款对数据库功能影响最小的加密引擎是很关键的。

综上所述,在DBMS外层加密是可行的。本文讨论的是该方案实现的技术。

1.2 加密粒度的选择

数据库加密的粒度一般分为文件级、记录级、字段级和数据项级[6]。操作系统层面加密与DBMS内核加密采用的是文件级的加密方式,而DBMS则需要考虑更细的数据库加密粒度,如记录级、字段级和数据项级。这三种方式比较如下。

① 记录级加密:是将数据表中的整条记录作为加密对象,其实现相对简单。但是这种方式对数据库的功能影响较大。如记录中的关联字段被加密,在没有逐条解密的情况下,将无法完成数据库的有效检索,而每次检索时对数据进行逐条解密,又会极大地影响效率。记录级加密无法同时兼顾效率与安全。

② 字段级加密:是以数据表中的字段为加密对象,其灵活度较记录级更高,效率也高,同时系统性能影响相对也很小。不过字段级加密必须选择好的加密算法,避免同一值的加密结果是相同的,从而造成统计上的缺陷,形成字典攻击。

③ 数据项加密:就是以记录中的每个数据项作为加密对象。但是这种方式对于密钥的要求是庞大的,效率也比较低。

综上考虑,为了获取更高的效率以及安全性,本系统采用字段级加密。加密算法采用高级加密标准 (advanced encryption standard,AES),加密模式上采用了密码分组链接(cipher block chaining,CBC)模式,每次加密时均加入初始化向量(initial vector,IV)。这样就可以消除密文的统计学隐患[5]。

1.3 密码算法及密钥管理

现代密码学常用的密码算法有两大类,分别是对称加密算法与非对称加密算法[7]。

① 对称加密算法:加解密采用同一个密钥,具有加密速度快、密文长度不扩张的优点。但是加解密双方缺乏有效的密钥交换手段。

② 非对称加密算法:采用一对密钥,其中一个密钥公开,另一个密钥保密,并且无法由公开的密钥推导出私密的密钥。这种算法可以安全地传递密钥,并且可以通过PKI体系对密钥进行有效的管理。但是非对称加密算法对数据加密的速度很慢,并且会造成密文长度的大幅度增加。

通常会将这两种算法结合在一起使用,采用一种称作“数字信封”的技术,在对数据进行加密时采用对称算法,而对称密钥的保护则需要通过非对称算法来完成。这种技术既可以保证加密的效率,又可以对密钥进行安全的管理。

2 数据库加密系统结构设计

三维零件资源系统基于B/S模式,采用三层架构,即表示层、业务逻辑层和数据服务层。

表示层是用户与系统进行交互的接口,用于将系统的功能界面呈现给用户以及从用户端收集输入信息、反馈系统处理结果,并可以将合法用户想要查询的结果进行展示。

业务逻辑层集中处理系统中所有业务功能,根据合法用户使用的不同功能以及提交的参数,调用系统中的相应功能模块,以完成用户所请求的业务流程。整个系统的加密/解密主要在该层实现。

数据服务层指的是数据库服务器,其主要由一个数据库管理系统来实现,负责与业务逻辑层进行交互。用户信息、数据库中的密文用户信息、加密后的密钥以及加密时用到的IV都存放在这一层。

加密系统处于应用程序和ADO.NET 中间,即通常所称的数据库访问中间件(database access middle ware,DAMW),它是基于ADO.NET平台的面向对象的数据组件。首先,用户在客户端通过浏览器向服务器发送请求,当请求达到服务器端时,加密系统就会截取对数据库的访问请求。如果是数据,中间件便会将数据交给加密/解密模块,经过加密后提交给ADO.NET,最后,将数据以密文的形式存储在数据库中。如果是数据查询,则由ADO.NET读取后,将加密的数据经解密后提交给客户端。该数据库加密系统可以选择性地对数据进行加解密操作。对于那些没有加密请求的数据,系统不会做加密处理,系统也会过滤掉那些请求,这就大大提高了效率。即使非法用户闯入三维零件资源系统,并且绕过数据库安全系统,通过 ADO.NET访问被加密的保密数据,但由于无法得到加密方法和密钥而无法解密。系统结构如图1所示。

图1 数据库加密系统总体结构

基于B/S模式的三维零件资源系统,其所有的功能都在Web服务器上实现。系统用户只需要在客户端安装浏览器就可以使用,除此之外不需要安装任何客户端软件。数据加密在服务器与数据库之间实现,这样可以简单并且快速地执行请求,加强了系统的通用性和扩展性。结合一定的访问控制机制,最终使系统的安全性得到了提升。

3 加密系统实现

根据以上设计,我们对三维零件资源系统进行了加密实现,系统采用基于B/S模式的三层结构。以Visual Studio 2008 作为开发平台,实现ASP.NET程序的开发,中间层加/解密以及数据库连接用C#和ADO.NET进行开发,后台数据库采用的是SQL Server 2005。在PKI技术的选择上,采用openssl进行密钥对的生成,同时加解密算法、密钥生成也通过openssl实现。

本文所述数据库加密系统主要分为用户安全认证、数据库安全连接、密钥生成及管理、数据库加/解密引擎等模块。

3.1 密钥生成与管理模块

密钥生成与管理模块主要负责生成和管理数据库加密引擎中使用的密钥,其中对称加密算法与非对称加密算法需要结合使用,具体如下。

① 系统每注册一个用户时,该模块调用openssl为该用户生成一个非对称的密钥对。该密钥对的私钥K1存储在USB Key中,从而进行有效的保护,而公钥K2则以数字证书的一部分存储在数据库中。

② 当系统需要对明文数据P进行加密时,由该模块生成一个对称密钥K。

③ 使用对称密钥K,采用对称加密算法AES,采用CBC模式对明文数据P进行对称加密操作,得到密文C。

④ 使用密钥拥有者的公钥K2,通过RSA算法,对对称密钥K进行加密,得到加密的对称密钥CK,并将CK存储在数据库中。

⑤ 用户解密数据时,首先用自己的私钥K1,通过RSA算法,对加密后的对称密钥CK进行解密,得到明文对称密钥K。

⑥ 然后用K,采用AES算法,采用CBC模式解密密文C,得到明文P。

在上述过程中,数据的加/解密是由对称密钥C完成的,而C在整个工作过程中以密文的方式存储在数据库中,从而保证了数据的安全。

数据加/解密流程如图2所示。

图2 数据加解密流程

3.2 加/解密引擎

数据库加/解密引擎主要由SQL语句分析模块和数据加/解密模块两个模块组成。SQL语句分析模块是对用户提交的SQL语句进行分析,用户请求是以SQL语句的形式向系统提交的。数据库的加/解密模块是整个加密系统的核心部件,数据库信息的加密和解密处理都是在这一部分完成的。由于是在后台完成,对用户来说是透明的。

首先,由用户接口程序根据用户的请求来判断接下来进行什么操作。如果需要加密,则调用密码算法及密钥管理模块对数据进行加密,以密文的形式存放在数据库中;同时,调用RSA中的加密函数对密钥作加密处理并进行存储。若需要解密,首先,从数据库中取出加密的对称密钥并解密,并用该密钥解密数据得到明文。具体流程如图3所示。

图3 数据库加/解密引擎流程框图

4 结束语

本文根据三维零件资源库的需求,提出了基于DBMS外层的数据库加密方案,并且建立了一套完整的加密机制。系统中的数据经过加密处理以密文的形式存放在数据库中。另外,本系统所采用的是对称密钥与非对称密钥相结合的加密方式。数据密钥以密文的方式进行存放,而私钥则存放在USB Key中,有效地

解决了密钥的安全管理问题。在对数据库字段进行加密时,采用了CBC模式,避免了重复密文的出现,有效地解决了字典攻击等潜在隐患。因为数据库安全是三维零件资源库系统运行的前提,目前只是做了一些阶段性的工作,还有很多细节需要进一步研究。

[1] 刘勇.网络数据库加密技术研究与实现探析[J].计算机光盘软件与应用,2014,20(4):44-45.

[2] 吴兴惠,周玉萍,明秀君.基于混合密码算法的数据库加密技术研究[J].海南师范大学学报:自然科学版,2010,23(2):161-164.

[3] 赵卓,刘博,厉京运.基于DBMS外层的数据库加密系统研究与设计[J].计算机工程与设计,2008,29(12):3030-3033.

[4] 孟凯.数据库加密系统的设计与实现[D].太原:太原理工大学, 2012.

[5] 杨小东,王毅. AES密钥扩展新方法[J].微电子学与计算机,2012,29(1):102-104.

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

[7] 钱靓靓.浅析电子信息安全技术PKI[J].电子世界,2014,8(3):23-29.

Database Encryption Technology Based on Three Dimensional Parts Resource Library

Aiming at the security issue of data storage of which the three dimensional parts database resource system based on B/S mode is facing, the database encryption engine based on DBMS outer layer encryption has been designed. The field encryption means is adopted in encryption granularity; in addition, the symmetric encryption algorithm encryption mode introduces the random element CBC mode to solve the hidden trouble of the same plaintext with the same ciphertext. PKI technology is used in key protection; symmetric encryption and asymmetric encryption are combined organically, to solve the issue of key security management. The practical application shows that the system can effectively protect the data in three dimensional parts library data resource.

Database encryption B/S structure Encryption / decryption PKI Key management Advanced encryption standard (AES)

郭娟(1976-),女,2000年毕业于东华理工大学计算机应用专业,获硕士学位,讲师;主要从事计算机应用的研究。

TP309

A

10.16086/j.cnki.issn1000-0380.201504013

修改稿收到日期:2014-10-09。

猜你喜欢

加密算法密文解密
一种支持动态更新的可排名密文搜索方案
基于模糊数学的通信网络密文信息差错恢复
基于DES加密算法的改进研究
炫词解密
解密“一包三改”
基于网络报文流量的协议密文分析方法
密钥共享下跨用户密文数据去重挖掘方法*
炫词解密
DES加密算法的实现
基于整数矩阵乘法的图像加密算法