容灾系统中数据透明加密设计
2015-12-23喻崇仁牛中盈杨嘉伟
喻崇仁,牛中盈,杨嘉伟,田 鹏
(1.中国航天科工集团第二研究院七〇六所,北京100854;2.中国航天科工集团第二研究院院科技委,北京100854)
0 引 言
当前,容灾系统利用远程复制技术将生产中心数据备份到异地备份中心,有效确保了业务数据的抗毁性,由于数据是以明文形式存储,并且生产中心通过广域网发送给异地备份中心的数据也是明文,这就给不法分子窃取机密数据创造了条件[1,2]。
本文设计了一种面向容灾的堆叠式数据透明加密框架,采用虚拟化技术,结合堆叠式文件系统分层开发思想,在系统容灾层之上构建了数据加密层,并在数据加密层虚拟设备驱动程序中完成了对数据自动加解密操作,实现了容灾系统中数据的加密存储和在网络中加密传输,有效保护了数据的机密性。设计了一个数据并行加密机制p-dmcrypt(parallel dm-crypt),在驱动程序中实现了对数据并行加密处理,有效提高了数据整体加密速率。
1 相关研究
从加密实现的层次来看,当前存储系统中数据加密方式主要有应用程序层加密、存储介质层加密、文件系统层加密和设备驱动层加密。
应用程序层加密是通过加密工具软件对数据进行加密。该方式对用户不透明,进行加解密操作时都需要用户手动输入密钥,使用起来较为繁琐,用户一旦忘记密钥,被加密的文件将永远无法读取。此外,在数据加密过程中系统产生的缓存文件内包含了大量明文数据,容易被攻击者窃取。
存储介质层加密是基于硬盘扇区的加密,对整个硬盘所有bit位都进行加密。该方式能够提供最高安全等级并且对用户透明,但由于加密数据量大,造成系统性能开销大,不适用于需要进行大规模数据访问的存储系统。
文件系统层加密是将加解密功能集成到文件系统中,开发加密文件系统。该方式支持文件粒度的加密,能够指定对哪些文件加密,对哪些文件不加密,并且对文件系统包括元数据在内的所有信息进行加密[3],具有很高的安全性。但该方式通常是在修改固定版本的文件系统或操作系统源码基础上实现的,如TCFS修改了NFS内核代码,且仅适用Linux 2.2.17及以前的操作系统版本,NCryptfs修改了Linux内核中的目录缓存和进程管理程序[4],TransCrypt修改了底层文件系统的超级块结构并向内核中加入了对非对称密码算法的支持[5]等,因此该方式具有可移植性差的弊端。
设备驱动层加密是在磁盘空间中划分出一部分空间作为虚拟分区,该分区只有具有合法权限的用户才能进行访问,虚拟分区的驱动程序在处理I/O 请求过程中利用加解密模块对请求数据进行透明加/解密操作。本文就是在设备驱动层对数据进行加解密操作,该方式虽然不能指定对哪些数据不进行加密处理,但在系统的性能和安全性上得到了很好的平衡,相对于开发加密文件系统,该方式实现起来较为容易并且可移植性强。
2 方案设计
2.1 面向容灾的堆叠式数据加密框架设计
在设计系统的加密框架过程中,本文借鉴了堆叠式文件系统的开发思想,并且利用了device mapper[6]虚拟化技术。堆叠式文件系统采用模块化设计和增量式开发方式,通过在虚拟文件系统和底层文件系统之间插入多个独立开发的层 (layer)来构建复杂的文件服务,层与层之间相互独立,任何层都可以添加新的服务,已有的层自动适应并支持这些功能[7]。新增的层可以很容易的从一个文件系统堆栈中添加和删除,具有良好的扩展性。device mapper是Linux 2.6内核中内置的一种从逻辑设备到物理设备的映射机制,通过该机制可以灵活管理系统中所有真实或虚拟的块设备,利用device mapper中的3 个对象 (mapped device、mapping table和target device)和target driver插件一起能够构成一个可迭代的设备树,在target driver插件中可以实现用户自定义功能。
在此基础上,本文设计了一种面向容灾的堆叠式数据透明加密框架,如图1所示,框架中以新建虚拟卷的形式在虚拟卷设备驱动中实现了系统新增的自定义功能,使系统具备了良好的扩展性。
图1 面向容灾的堆叠式数据加密框架
(1)生产中心部署情况
该加密框架在生产中心的逻辑卷上建立了容灾卷和加密卷两个虚拟设备,以实现向生产中心添加容灾层和数据加密层的目的,容灾层和数据加密层之间相互独立,每层实现单一的数据容灾或加密功能。
数据加密层:该层提供的数据加密功能在加密驱动程序中实现。当加密驱动接收到写请求时,先把请求数据进行加密处理,然后把该写请求转发给下层容灾卷;当接收到读请求时,直接把该请求转发给下层容灾卷进行处理,对于容灾卷返回的数据,先进行解密处理,再传递给上一层。
容灾层:该层提供的数据容灾功能在容灾驱动程序中实现。当容灾驱动接收到写请求时,会把请求数据写入下层逻辑卷的同时将数据通过网络发送给远程备份中心;当接收到读请求时,直接把该请求转发给下层逻辑卷进行处理,之后把下层逻辑卷返回的数据传递给上层加密卷。由于该层处于数据加密层之下,该层接收到的写请求数据都是经过加密处理后的数据,因此发送给远程备份中心的都是密文数据。
(2)备份中心部署情况
该加密框架在备份中心的逻辑卷上建立了虚拟容灾卷,以实现向备份中心添加容灾层的目的。
容灾层:与生产中心的容灾层对于写请求的处理方法不同,备份中心的容灾层在接收到生产中心发来的数据后,首先构造对应的写请求,然后把请求数据写入下层逻辑卷。
当生产中心因自然灾害或计算机软硬件故障造成本地数据不可用时,我们需要根据备份中心的数据进行灾后数据恢复。由于存储在备份中心逻辑卷中的数据都是密文,因此要先在备份中心逻辑卷上建立加密卷,加密密钥与当初在生产中心创建加密卷使用的密钥一致,之后才能从逻辑卷中读取出明文数据。
2.2 数据并行加密机制设计
Linux内核中内置了dm-crypt[8]加密机制,该机制通过在逻辑卷上创建虚拟设备,在虚拟设备驱动程序中实现数据加密功能。驱动程序内部采用单线程操作,对于接收到的每个读写请求顺序执行解密/加密操作,处理流程如图2所示。由于在数据加解密过程中通常需要进行大量复杂的运算,故该过程会对系统的IO 吞吐率会造成很大影响。本文在参考分析dm-crypt加密机制的基础上,设计了一个数据并行加密机制p-dm-crypt,在加密驱动程序中实现了对数据加密的并行处理,有效降低了数据加密操作对系统写性能的影响。该机制主要针对数据加密系统写性能较差的缺点,在加密驱动程序中对写请求采用多线程并行执行,对读请求依然采用单线程顺序执行,具体的写请求处理流程如图3所示。
图2 dm-crypt机制中读写请求处理流程
图3 p-dm-crypt中写请求处理流程
加密驱动模块在被加载到内核时会创建n个写请求处理线程,并把线程都置于睡眠状态,当驱动程序截获到写请求时,把请求加入到全局链表wbio_list中并唤醒所有写请求处理线程,写请求处理线程首先从wbio_list中取出一个写请求,调用数据加密函数对请求数据进行加密处理,之后把该写请求转发给下一层进行处理。
3 实验与分析
本文实现了一个具有数据透明加密功能的容灾原型系统,并对系统性能进行了测试。测试平台包括两台PC 机(intel 2.66GHz处理器,4GB DDR3内存,希捷1TB硬盘,OS为Red hat Linux 2.6.18),两台磁盘阵列 (intel 2.93GHz处理器,4GB DDR3 内存,5 块希捷1TB 硬盘),一台千兆以太网交换机。在搭建测试环境时,一台磁盘阵列对应一台PC 机,在磁盘阵列上新建一个raid5[9,10]逻辑卷,并以iscsi target[11,12]形式分配给对应PC机用作本地逻辑卷,两台PC机中一台部署生产中心软件,一台部署备份中心软件。
实验1:测试加密驱动程序中写请求处理线程的最优个数。使用10个dd线程同时向系统加密卷的不同位置写入数据,随着加密驱动中写请求处理线程数不断增加,系统聚合写带宽测试结果如图4所示。
从图4可以看出,在加密驱动中写线程数从1增加到4的过程中,系统聚合写带宽随着写线程数的增加而增加,但在写线程超过4个以后,系统聚合写带宽随着写线程数的增加而减小。这是因为采用多线程并行加密数据理论上能够提升数据整体加密速率,提高系统的写性能,但是随着线程数的增加,CPU 调度处理开销会不断增大,当写线程超过4个时,系统的写性能反而因CPU 调度处理开销过大而下降。由测试结果可知,加密驱动程序中写请求处理线程的最优个数为4个。
图4 加密驱动中最优写线程数测试结果
实验2:测试使用p-dm-crypt加密机制的原型系统较使用dm-crypt加密机制的系统在写性能方面的优劣。在测试时,p-dm-crypt加密驱动中写请求处理线程数设置为4,每次测试都使用10个dd线程同时向系统加密卷的不同位置写入数据,采用两种加密机制的系统聚合写带宽测试结果见表1,其中每个测试结果为5次测试的平均值。
表1 系统聚合写带宽测试结果/ (MB/s)
从表1可以看出,使用p-dm-crypt机制的系统写带宽普遍比使用dm-crypt机制的系统高,这是因为在dm-crypt机制中对数据加密操作使用单线程顺序处理,加密时间开销较大,而在p-dm-crypt机制中采用了多线程技术,对数据加密操作实现了并行处理,减少了总体加密时间开销,降低了加密操作对系统性能的影响。通过计算不同bs大小下采用不同加密机制的系统写带宽比值可知,采用p-dm-crypt机制的系统写性能较采用dm-crypt机制提升了18%左右。
4 结束语
本文针对容灾系统中保护数据机密性的需求,设计了一种面向容灾的堆叠式数据透明加密框架,通过在虚拟容灾卷之上构建虚拟加密卷,在虚拟加密卷的驱动程序中实现了对数据自动加解密操作,确保了容灾系统中数据的加密存储和在网络中的加密传输。针对数据加解密操作时间开销大,影响系统IO 吞吐率的问题,设计了一个数据并行加密机制p-dm-crypt,在加密驱动程序中实现了对数据的并行加密处理,提高了数据整体加密速率。在原型系统上的测试结果表明,相比于使用dm-crypt加密机制的系统,使用p-dm-crypt的系统在写性能方面提升了18%。
当前系统采用软件加密方式对数据进行加密,虽然p-dm-crypt加密机制提高了数据加密的速率,但与硬件加密速率相比还有一定差距,下一步工作是在系统中使用硬件加密方式,并针对I/O 级小数据块加密速率慢的问题,采用合并请求的预处理方式来提升系统加密效率,即在加密驱动程序中首先将多个写请求数据合并,把合并后的数据提交给加密卡进行加密处理,待加密完成后将密文拆分给对应的写请求,之后把写请求顺序转发给容灾层。
[1]Tipton H F,Krause M.Information security management handbook [M].Boca Raton:CRC Press,2012:163-166.
[2]Omar H Alhazmi,Yashwant K Malaiya.assessing disaster re-covery alternatives:On-site,collocation or cloud [C]//23rd IEEE International Symposium on Software Reliability Engineering Workshops,2012:19-20.
[3]Modi D,Agrawalla R K,Moona R.TransCryptDFS:A secure distributed encrypting file system [C]//International Congress on Ultra Modern Telecommunications and Control Systems and Workshops,2010:187-194.
[4]KANG Xiaowen.Research of key technologies for backup of disaster tolerant data based on virtual storage [D].Zhengzhou:PLA Information Engineering University,2009 (in Chinese).[康潇文.基于虚拟存储的容灾数据备份关键技术研究 [D].郑州:解放军信息工程大学,2009.]
[5]HE Lianyue,LIAO Xiangke,FU Songling.KSEFS:A serveroriented encrypted file system supporting cypertext sharing [J].Computer Engineering &Science,2011,33 (7):1-5 (in Chinese).[何连跃,廖湘科,付松龄.KSEFS:支持加密共享的服务器加密文件系统[J].计算机工程与科学,2011,33 (7):1-5.]
[6]Maclean L.Understanding device-mapper in Linux 2.6kernel[EB/OL].[2010-01-06].http://www.askmaclean.com/understanding-device-mapper-in-linux-2-6-kernel.html.
[7]PEI Canhao,XIE Changsheng,HUANG Jianzhong.Kernel-level cryptographic file system based on read/write optimization [J].Computer Engineering,2010,36 (15):137-139 (in Chinese).[裴灿浩,谢长生,黄建忠.基于读写优化的内核级加密文件系统[J].计算机工程,2010,36 (15):137-139.]
[8]Morris J.Linux kernel security overview [C]//Kernel Conference Australia Brisbane,2009.
[9]Thomasian A,Xu J.RAID level selection for heterogeneous disk arrays[J].Cluster Computing,2011,14 (2):115-127.
[10]Saeed T.Raid5recovery in a high availability object based file system:U.S.Patent 8,458,515 [P].2013-06-04.
[11]Wang J,Yao X,Mitchell C,et al.A new hierarchical data cache architecture for iSCSI storage server [J].IEEE Transactions on Computers,2009,58 (4):433-447.
[12]Lindgren K,Lynn J,Spry A J.Methods for defining and naming iSCSI targets using volume access and security policy:U.S.Patent 7,568,216 [P].2009-07-28.