APP下载

一种基于云计算平台的数据库加密保护系统

2015-01-28许成鹏朱志祥

电子设计工程 2015年19期
关键词:密文字典引擎

许成鹏,朱志祥

(西安邮电大学 陕西 西安 710061)

以云计算为代表的新趋势正促使信息产业从提供独立的软硬件产品走向提供社会化、集约化和专业化的信息服务[1]。然而云计算发展面临许多关键性问题,而安全问题首当其冲[2]。并且随着云计算的不断普及,安全问题的重要性呈现逐步上升趋势[2-3]。在云计算多租户模式下,不同的用户共用一套业务系统,不同的业务系统共享相同的硬件资源,由此带来诸多信息安全的问题,例如非法用户对业务数据破换、窃取、非法访问和修改等等。传统行业的信息应用系统仍然是将大量业务数据存储在关系数据库中,例如电信、银行的业务数据数据库中存储了大量的个人数据,对这些敏感数据增加安全措施,防止数据泄露也是数据安全的重要方向[4]。因此,利用云计算能够有效管理计算资源的优势,实现云平台上数据库敏感数据的加密保护变得的急为迫切[5-8]。

1 设计思路

云计算平台中租户数据的安全需要从数据传输过程、处理过程和数据存储三个过程考虑,数据库加密保护系统是用来保障租户数据的存储安全。该系统位于应用系统和数据库服务器之间,它首先将应用系统的业务数据按照用户需求进行加密后存储到数据库系统中,当应用需要从数据库系统读取数据时,再根据之前的数据加密规则进行解密返回明文数据。因此,该系统对于用户和应用系统是透明的。数据库加密保护系统加密的颗粒度是字段,由于数据表中各字段信息之间价值有区别和利于用户在安全和效率之间作出权衡,并不对全部字段进行加密,而是选择敏感信息字段进行加密。

为了防止未授权用户非法访问或者用户访问超越其权限的业务数据,对数据进行篡改或窃取,数据库加密保护系统需要采用访问控制机制,同时对业务数据按用户ID单独加密存储;通过统一的身份认证和密钥管理中心实现各个类型的应用的访问控制和管理具体应用的每个密钥,以便于与云计算中用户接入控制、数据传输过程和数据处理过程的安全防护措施保持一致。在数据库DBMS外层实现数据的加脱密服务和数据事务支持[9-11],会遇大数据量并发访问的瓶颈问题,数据库加密保护系统通过IaaS云平台资源管理接口创建虚拟化的加脱密引擎池,将加脱密功能以服务的方式提供,将其虚拟化和分布化来解决以上问题。

2 系统设计

数据库加密保护系统由应用交互模块、任务管理模块、资源监控模块、加脱密引擎池、IaaS云平台交互接口和密钥管理接口六部分组成,如图1所示。应用交互模块实现与应用服务器进行交互的接口,一方面接受应用服务器的SQL请求提交,对SQL语句进行解析,另一方面将收集的执行结果返回给应用服务器。任务管理模块解析各种数据库访问请求,通过访问控制安全审核,将允许访问的SQL请求分解为多个执行子任务,并对这些子任务进行发布、维护、监视和更新等控制管理工作。资源监控模块从IaaS云平台获取虚拟机和物理机的信息,并将这些信息作为任务管理模块任务分发部署和运行的依据;另外一个重要的工作是响应任务管理模块执行子任务申请虚拟机的请求,与IaaS云平台结合提供加脱密引擎的创建、销毁和资源回收等服务,实现虚拟加脱密引擎按需分配功能。加脱密引擎池系统最核心的部分,由基于虚拟化技术动态创建的多个加脱密引擎组成,它负责为应用服务器的业务系统提供加脱密服务和数据安全访问服务。

图1 数据库加密保护系统结构图Fig.1 Structure diagram of the database encryption protection system

2.1 密钥管理

数据库加密保护系统中使用的密钥分为三类:用户密钥、表密钥和工作密钥;用户密钥是。用户密钥为主密钥,是由认证与密钥管理中心产生一个非对称密钥对,其中的私钥主要用以实现应用和数据的访问控制,它被存储在用户的物理令牌(例如USBKEY)中,公钥存储在认证与密钥管理中心;公钥用来加密表密钥,私钥用来解密密文表密钥,确保只有持有私钥的合法用户解密用公钥加密的表密钥,可以提高密钥管理的安全性和可靠性。表密钥,由认证与密钥管理中心负责产生,一个表密钥对应一个关系数据库中的数据表,由公钥加密并存储在认证与密钥管理中心当中,表密钥经过公钥加密才存贮。工作密钥通过表密钥和工作密钥生成函数动态生成,工作密钥用来加密数据库中数据表的字段数据;工作密钥使用完后进行清理,减少了大量工作密钥存储所带来的系统资源消耗,并降低密钥静态存储所带来的信息泄露风险。由于主密钥由用户个人保管,认证与密钥管理中心只需要存储数量较少的密文表密钥,用户通过唯一的主密钥对管理表密钥,通过少量表密钥来管理大量的工作密钥,因此密钥管理的效率和安全性得到了优化和提升[12]。

2.2 加脱密引擎

加脱密引擎是数据库加密保护系统的重要组成部分,它介于应用服务器的业务应用系统与数据库服务器之间,负责完成数据库信息的加脱密处理,对应用开发人员和操作人员来说是透明的,数据加脱密引擎的虚拟机资源由通过加资源监控模块进行分配和管理,它的执行的任务由任务管理模块分配和监控。数据库加脱密引擎由五大模块组成:加脱密处理服务模块、数据签名与验签、数据库安全访问接口、数据加密字典、密钥管理接口模块;其结构如图2所示。

图2 加脱密引擎结构图Fig.2 Structure diagram of the encryption and decryption engine

2.3 加脱密引擎池

当加脱密引擎资源消耗非常大时候,使用已建立的资源池是一种非常好的方式。将加脱密引擎在虚拟机中加载,多个虚拟加脱密引擎组成一个池,在初始化时首先建立由一定数量待用或休眠虚拟主机组成的虚拟加脱密引擎池,当有加脱密请求时并且现有资源无法满足时,任务管理模块根据当前队列调度情况,按照资源调度策略从待用主机池中指定一个主机,并通过虚拟加脱密引擎模板在其上面创建一个虚拟加脱密引擎,按加脱密请求的能力要求配置虚拟加脱密引擎的能力,然后,将其挂在在用加脱密引擎池中。不同应用之间加脱密引擎原则上不能共用,当一个加脱密引擎负荷为零,可将该引擎从池中移出,销毁虚拟机,回收资源,流程如图3所示。

图3 加脱密引擎池工作流程图Fig.3 Flow diagram of engine pool running

2.4 建立加密字典

在实际应用中,应用系统创建数据库的表之后,用户通过数据库加密保护系统的配置管理图形化界面的加密字典管理功能,定义需要保护的数据表和该数据表中需要加密字段数据。加密字典管理功能将把这些用户定义信息存入加密字典中[12]。

加密字典管理做为加脱密引擎的一个功能模块,主要功能包括字典配置、加密定义、表信息检索、密文表配置、数据转化等模块组成。具体功能模块要求如下:

1)字典配置,用于完成应用系统访问数据库加密保护系统之前进行加密字典的初始化工作。当加脱密引擎工作时,直接调用加密字典数据,从而加快加脱密速度,提高系统运行效率。

2)加密定义,用于处理数据库采用加密手段后,对原数据库的完整性和一致性会产生某些影响,例如,加密前后的数据类型不同而拒绝数据插入,这个问题可以通过建立密文表存放密文数据,并将需要加密的字段数据类型定义二进制数据类型来解决。当用户需要时,引擎再将密文数据脱密并转化成用户所需要类型数据。这些加密时所需的信息必须通过用户界面进行定义设置并保存到数据库中。通常主键、外键、索引等字段信息不被加密。

3)表信息检索,用于从数据字典中检索出某个表的各类信息,包括表名、表标识、字段、主键、外键、索引等等。以表名为输入,输出表的各种信息数据,包括被保护表的加密定义。

4)密文表配置,用于为“加密定义”提供维护加密字典信息、构造密文表、删除密文表等功能。

5)数据转化,是将已有大量业务数据的明文数据库进行加密保护时进行的初始化工作。

2.5 主要流程

云计算平台上数据库加密保护系统中用户通过客户端访问应用服务器时,用户通过私密获得应用系统持续访问的权限令牌,由应用服务器向数据库加密保护系统发起SQL请求,数据库加密保护系统将请求进行任务分解,创建虚拟引擎访问后台数据库。数据库加密保护系统实现用户数据保护的流程如图4所示。

图4 用户数据保护流程图Fig.4 Flow diagram of protecting user data

3 技术实现

根据以上设计,笔者采用JAVA语言实现了数据库加密保护系统,通过对JDBC接口进行二次封装实现统一数据访问,采用开源云平台软件OpenStack实现的IaaS云平台。

1)IaaS云平台资源监控接口,OpenStack是一款开源的IaaS云平台软件,它拥有非常活跃的大社区,开发进度非常迅速,但是,在它用于生产之前还需要许多的开发努力。通过开源集群管理工具xCAT对OpenStack云平台中的资源进行监控和管理,包括虚拟机的CPU使用率、内存使用、网络流量和磁盘读写情况,同时可以进行数据的汇总和统计。将xCAT与OpenStack集成融合为上层应用提供API形式的虚拟机资源监控管理服务。

2)统一数据访问服务,在应用程序的设计中,数据库的访问是非常重要的,为了确保程序有良好的封装性与可维护性,通常的做法是集中完成对数据库的访问。Windows环境中采用微软“发明”的OLE DB数据连接技术,可以支持对多数关系数据库的访问。Linux/Unix也有类似的技术JDBC,它可以为多种关系数据库提供统一访问,是由一组用Java语言编写的类和接口组成。另外一点相当重要的,各种数据库都对标准SQL做了大量的扩充,要确保统一访问,必须使用标准的SQL语句。

加脱密引擎的数据库访问部分对原有的JDBC访问接口进行了再次封装,与数据库加密保护系统的SQL语法分析功能结合,建立与数据库的连接,具备简易、通用、高效的功能。

3)在实现数据库加密的实践过程中,发现对于等量的数据进行加密和脱密速度的比较,解密的速度要比加密快得多。得出这种结果的原因并不复杂,是由于字段数据加密时需要做包括创建密文表、动态创建密文表字段、生成表密钥等大量的初始化工作;而脱密时直接调用存储在加密字典中的参数,不需要重新生成;如此脱密的执行效率就能够提高不少。因此,在创建加脱密引擎时,需要区分任务类型,负责加密任务的引擎比负责解密的引擎资源分配多。

4 实验应用

该系统在云平台中的应用场景如图5所示,用户使用具备VPN功能的客户端,客户端(云端)通过VPN建立与云平台的安全通道,数据经VPN安全通道进入平台安全域下的虚拟主机(应用系统)后,再通过VPN安全通道与数据库加密保护系统建立VPN安全通道。不同的用户通过VLAN进行逻辑隔离。因此数据从客户端到平台,再由平台到安全域的虚拟主机(应用系统),然后再由虚拟主机(应用系统)到数据库加密保护系统是安全的。

图5 应用场景Fig.5 Application scenarios

5 结 论

本文介绍了云计算环境下数据库加密保护系统的设计和应用。对数据库加密保护系统进行了结构设计并对各功能模块进行了详细的说明,同时结合实践讨论了实现数据库加密保护系统过程中需要解决的一些关键问题及其解决方案。根据本文理论建立的数据库加密保护系统经过实验证明工作状况稳定,性能基本达到设计需求。数据库加密保护系统具有一定的科研意义和工程应用价值。

[1]李德毅.云计算支持信息服务社会化、集约化和专业化[J].重庆邮电大学学报,2010,22(6):698-702.LIDe-yi.Cloud computing supportssociality,intensivenessand specialization of information service[J].Jeurnal of Chongqing University of Posts and Telecommunications,2010,22 (6):698-702.

[2]冯登国,张敏,张妍,等.云计算安全研究[J].软件学报,2011,22(1):71-83.FENG Deng-guo,ZHANGMin, ZHANG Yan,et al.Study on cloud computing security[J].Journalof Software,2011,22(1):71-83.

[3]张培颖.2012中国云安全调查报告 [EB/OL].http://www.searchcloudcomputing.com.cn/showcontent_64418.h-tm,2012.

[4]王茜,朱志祥,史晨昱,等.应用于数据库安全保护的加解密引擎系统[J].计算机技术与发展,2014,24(1):143-146.WANG Qian,ZHU Zhi-xiang,SHIChen-yu,et al.Encryption and decryption engine system applying to database security and detection[J].Computer Technology and Development,2014,24(1):143-146.

[5]Santos N,Gummadi K P,Rodrigues R.Towards trusted cloud computing[J].in Proceedings of the 2009 conference on Hot topics in cloud computing[R],2009.

[6]Sudipto Das,Divyakant Agrawal,Amr El Abbadi.G-Store:AScalable Data Store for Transactional Multi key Access in the Cloud[R].In ACM SoCC2010,2010.

[7]Sudipto Das,Divyakant Agrawal,Amr El Abbadi.ElasTraS:An Elastic,Scalable, and Self Managing Transactional Database for the Cloud[R].Technical Report 2010-04, CS, UCSB,2010.

[8]Carlo Curino,Evan RC,Jones,Raluca Ada Popa,Nirmesh Malviya.Relational Cloud:ADatabase-as-a-Service for the Cloud[R].CIDR2011,2011.

[9]徐江峰,马瑶.一种基于动态密钥的数据库加密方案[J].微计算机信息,2009,25( 12-3):12-13.XU Jiang-feng,MA Yao.Ascheme of database encryption based on dynamical secret[J].Microcomputer Information,2009,25(12-3):12-13.

[10]怀艾芹.基于DBMS外层的网络数据库加密系统的研究与设计[J].电脑开发与应用,2011,24(4):29-31.HUAI Ai-qin.Research and design of network database encryption system based on external DBMS[J].Computer Development&Applications,2011,24(4):29-31.

[11]陈睿.密文数据库系统的密钥管理与加脱密引擎[J].计算机与现代化,2009(7):57-59.CHEN Rui.Key management and database encryption engine in encryption database system[J].Computer and Modernization,2009(7):57-59.

[12]邹旎彬.数据库加密系统的设计与实现[D].南京:东南大学,2005.

猜你喜欢

密文字典引擎
一种支持动态更新的可排名密文搜索方案
基于模糊数学的通信网络密文信息差错恢复
字典的由来
大头熊的字典
蓝谷: “涉蓝”新引擎
一种基于密文分析的密码识别技术*
一种基于密文分析的密码识别技术*
正版字典
无形的引擎
基于Cocos2d引擎的PuzzleGame开发