针对虚拟化平台下数据防泄漏系统的要求,为此我们借助于可信计算技术,提出了一种eCrytpfs文件系统的透明加密系统,该系统增加了与自定制TPM密钥管理模块兼容的守护进程模块,并修改了Cryptfs用户空间的密钥管理部分;取消了多用户模式,增强了整个系统的安全性。

一、传统加密文件系统

1、传统的加密文件系统

CFS实现了一个网络文件系统(network filesystem,NFS)服务器。由于其加密解密操作在用户层完成,因此要频繁地在用户层与核心层之间进行数据交换,效率低下。TCFS实现了一个NFS客户端,其加密解密操作在核心层完成。TCFS系统的安全性依赖于用户登录密码,而且加密密钥存放在磁盘上,这使得系统的安全性有所降低。AFS是分布式加密文件系统,数据在该系统服务器上的明文存储方式存在很大的安全隐患。同时,这种方式使系统中的每一台服务器都要足够安全,否则,只要有一台服务器被入侵,整个系统的安全都将受到威胁。

Windows EFS只能在Window s操作系统的NTFS卷上使用,具有一定的局限性,此外,如果需要重装操作系统,要同时备份加密文件和密钥证书,否则,重装系统后就无法再访问加密文件。

2、eCryptfs文件系统

Linux采用虚拟文件系统(virtual file sy stem,VFS)来管理底层文件系统。VFS为Linux处理不同的文件系统提供了统一的接口。

eCry ptfs是Linux内核2.6.19版本中引入的一个企业级加密文件系统,为应用程序提供透明、动态、高效和安全的加密功能,它位于VFS与底层文件系统之间。对于VFS来说,eCryptfs扮演了标
准文件系统的角色,但它是将VFS传递下来的系统调用加上加密解密操作,再传递到下层文件系统。

eCry ptfs为每一文件随机产生一个对称文件加密密钥(file encryption key,FEK)。eCry ptfs使用用户口令或TPM的公钥对FEK进行加密保护;加密FEK的口令或公钥称为文件加密密钥(file eCry ptfs tion key encryption key,FEKEK),加密后的FEK则称为加密的文件加密密钥(encrypte file encry-rtion key,EFEK)。

虽然eCryptfs的加密解密效率较高,满足了透明加密解密的要求,但它与数据防泄漏系统中的自定制TPM密钥管理模块不兼容;而且eCry ptfs运行在多用户模式下,低权限的用户就可以使用一些现有的技术提升自己的权限从而入侵系统关键区域。针对这些问题,本文提出了MeCryptfs加密系统。

二、MeCryptfs加密系统设计方案

1、系统模块结构

文件系统模块由用户空间模块和内核模块构成;守护进程模块由用户操作命令子模块、密钥处理子模块和脚本程序子模块构成。

用户操作命令子模块主要提供给用户密钥请求、更新、销毁命令。密钥处理子模块与下层密钥管理模块相连接;它根据用户操作命令调用相应的函数,获取密钥或相关信息,然后调用脚本程序子模块完成相应操作,脚本程序子模块调用了相关系统命令,使文件系统模块完成相应操作。用户空间模块修改了原eCryptfs系统的密钥管理部分,更加精炼、安全、易维护,内核空间模块产生文件加密密钥,并调用底层文件系统完成文件的读写等操作。

2、密钥管理模块

MeCryptfs使用的密钥是由数据防泄漏系统中的密钥管理模块进行管理的。

自定制的TPM密钥管理模块使用TPM对加密系统使用的会话密钥进行加密保护,大大增加了密钥的安全性。

密钥管理模块主要负责接收密钥处理命令,调用相应的TPM命令,完成密钥的处理。其中“密钥信息”、“返回信息”和“错误类型”是一个联合体。

3、密钥处理方案

密钥处理是MeCryptfs中最重要的部分,如图3所示。它主要分为3个操作:密钥请求操作、密钥更新操作和密钥销毁操作。

MeCryptfs在工作时,首先用一个会话密钥将用于存储文件密文的隐私目录挂载到存储对应明文的工作目录上,这两个目录合称为P/W目录对。

1)密钥请求操作过程:

(a)守护进程与密钥管理模块交互,获得密钥并将其写入临时密钥文件。

(b)守护进程发出挂载文件系统的命令。

(c)文件系统模块读取密钥,删除临时密钥文件并利用此密钥完成挂载。

2)密钥更新操作过程:

(a)守护进程与密钥管理模块交互获取新的密钥,并将其写入临时密钥文件。

(b)守护进程发出创建新P/W目录对的命令,文件系统模块完成创建操作。

(c)守护进程发出在新P/W目录对上挂载文件系统的命令,文件系统模块读取密钥,删除临时密钥文件并完成挂载。

(d)守护进程发出复制旧P/W目录对中文件到新P/W目录对中命令,文件系统模块完成复制操作。

(e)守护进程发出卸载和删除旧P/W目录对的命令,文件系统完成卸载和删除操作。

(f)守护进程发出将新P/W目录对名称改为旧P/W目录对名称命令,文件系统模块完成改名操作。

3)密钥销毁操作过程:

(a)守护进程与密钥管理模块交互,传送密钥销毁的命令和结果。

(b)如果销毁成功,守护进程发出卸载文件系统和删除隐私目录的命令,文件系统模块完成卸载和删除。

(c)守护进程发出创建同名隐私目录的命令,文件系统模块完成创建操作。

4、面向虚拟化平台的透明加密系统的实现

面向虚拟化平台的透明加密系统需要编码实现的部分主要有守护进程模块以及对eCryptf's用户空间模块的修改。

1)守护进程模块的实现

用户命令操作子模块向用户提供了操作MeCryptf's的接口,主要包括3个命令:请求、更新、销毁密钥。它们调用密钥处理子模块中的相关函数,其基本流程为发送命令包、接收应答包、解析应答包、调用脚本程序子模块。守护进程模块和密钥管理模块通过管道进行数据包的传送,脚本程序子模块通过一系列系统命令对MeC-yptfs的文件系统模块进行操作,以完成密钥的处理。

2)eCryptfs用户空间模块的修改

密钥由密钥管理模块产生,MeCryptfs文件系统模块中的用户空间模块从临时密钥文件中获取密钥,代替原来的用户输入。

三、面向虚拟化平台的透明加密系统结果分析与讨论

本文对MeCryptfs工作性能进行了测试,目的是分析本系统对性能下降的影响程度。测试环境为:hiter Pentium M处理器,1.70 GHz/768 Mb内存/Ubuntu 9.04操作系统,Linux 2.6.30内核/ext3文件系统。测试在是否挂载MeCryptfs的情况下,复制数据的时间消耗,测试选用的加密算法是高级加密密标准(advan ced en cr yption st an dard,AES),密钥长度128位。

在复制699.3Mb的大数据时,使用MeCryptf's的情况下,时间消耗增加了25.5%,带宽下降了20.35%,性能下降较少,在复制30 Mb这样的小数据时,带宽下降了82.99%,性能下降较多,但因其本身消耗时间较少,用户仍可承受。TCFS与ext3相比其读写带宽分别下降了95.65%和97.63%。与TCFS相比,MeC-yptfs的系统负载要小很多。

小知识之虚拟化

虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。