Hadoop作为一个开源的分布式编程框架,已经逐渐成为计算机行业的最新趋势。其分布式文件系统(HDFS)可以存储大量的数据,容错性,吞吐量大。然而,目前的HDFS不支持云中的数据加密,这使得数据的隐私成为一个至关重要的安全问题。为此,我们提出了一种基于HDFS的混合加密方法。
一、HDFS数据加密。
为了实现数据存储的持久性和阅读的便利性,HDFS将文件分为预定数据大小的数据块格式,集群分为主节点和多个存储块文件的数据节点。主节点是整个云存储服务的入口,元数据包含的信息包括命名空间、访问控制信息、文件块位置和文件块的对应关系等。数据节点用于存储云数据文件,每个被客户端分割的文件块都有唯一的识别。
1.系统架构。
我们的安全目标是防止攻击者在入侵数据节点后窃取文件信息。如图所示,将加密和解密模块放入数据节点中,模块使用AES算法在编写数据块之前完成加密操作;相反,在阅读数据块之前进行解密操作。数据块使用存储在数据节点上的相同密钥进行加密和解密操作。数据节点中实现了密钥管理模块。与数据节点与主节点之间的通信协议相比,客户端与数据节点之间增加了验证协议和密钥交换协议。
2.密钥管理。
如果密钥以明文的形式存储在数据节点上,则不能保证仅通过加密文件操作就能保证用户的隐私,因为攻击者必然能够在恶意攻击数据节点后获取明文密钥信息,从而完成数据文件的解密操作。为了有效地解决这个问题,使用不对称加密算法RSA加密AES密钥,然后存储在数据节点中。客户端负责生成RSA密钥对并存储私钥,而公钥则存储在元数据中。图2显示了混合加密方案的基本过程,其中待加密文件分为B1、B2、BN,每个数据块都有相应的AES密钥kbn。
Hadop系统的数据隐私加密功能。
3.系统实现。
Java库函数中的JEC(Javacryptographyextension)被用来实现加密算法。CFB模式被选择在AES加解密算法中,该模式的数据块被细分为连续的16B块,最后不到16B的部分没有得到补充。这种选择的原因是CFB模式满足了AES加密后数据块长度不变的特点,即默认尺寸(64MB)的数据节点数据块在AES-CFB加密后不会改变长度,从而破坏整个系统的基本环境设置。
(1)加密方案。
加密模块被添加到数据节点代码中生成文件代码段的位置。图3描述了加密过程的时间顺序。客户端在初始化时生成RSA密钥对,然后将公钥上传到主节点。当客户端要求主节点创建文件时,主节点发回包含数据节点链表和客户端RSA公钥的元数据。对于每个文件块,客户端将公钥从管道发送到第一个数据节点,然后将数据块分包上传。接收新块后,数据节点生成AES会话密钥加密数据块文件,而之前的RSA公钥加密AES会话密钥。最后,加密后的文件块和加密后的AES密钥独立存储在数据节点的本地磁盘中。后续的数据节点通过管道接收加密后的文件块信息,无需重复加密,节省服务器资源。
需要注意的是,HDFS文件系统会定期检查存储在数据节点中的CRC冗余校验码,以保证存储在云中的数据的可靠性,防止存储时间长导致的数据故障。客户端在发送数据之前,为每个数据块计算一个512B的CRC冗余校验码,并将其上传到数据节点中。数据节点将定期计算磁盘中数据块的CRC冗余校验码,并与最初的CRC冗余校验码进行比较,以确保文件的可靠性。由于加密数据块的CRC32冗余校验码必须与明文不同,加密后需要重新计算一个新的CRC冗余校验码,以应对这一机制。
(2)解密方案。
如图4所示,在数据节点接收到客户端的阅读数据请求后,将首先发送到客户端阅读数据块对应的AES密钥的密文。客户端用RSA私钥解密,然后将AES密钥明确发送回数据节点。最后,数据节点完成数据块的解密,然后发送回客户端。
二、性能测试。
1.测试环境。
实验在一个只有两台机器的环境中进行。主节点硬件配置为Intelxeon8-core2.00GHz、10GB内存、1TB硬盘。数据节点硬件配置为Intelxeon16-core2.20GHz.20GB内存,2TB硬盘。数据副本为1。
2.改进系统与原生系统的对比测试。
在上述加解密方案中,系统成本可分为两部分。一部分是数据块加解密操作的成本,另一部分是关键管理和CRC冗余验证码的重新计算。测试包含加解密操作的系统总成本和不包括加解密的新系统架构成本,并与原始系统进行详细比较。
(1)加密试验。
在加密测试过程中,我们上传了不同尺寸的文件,比较了包含加密操作的新系统和原始系统在写作操作下的吞吐量。如图5所示,新系统和原生系统的吞吐量分别在上传512MB和256MB时达到顶峰。性能的衰减随上传文件块的大小而变化。当文件大小为256MB时,衰减最大,达到53%;当数据块大小为8MB时,衰减最小,小于33%。
显然,性能的衰减主要是由于加密操作的引入,因为如果新架构的系统不进行加密操作,系统成本的增加将不到2%。由于大量的AES加密操作消耗了一定数量的CPU资源,原本专注于HDFS系统调度的CPU不得不增加其在操作中的成本。在后续研究中,将引入通用计算技术(GPGPU),彻底改变HDFS系统吞吐量大幅下降的现象。
(2)解密试验。
通过与加密测试相对应的测试方法,阅读在加密测试过程中上传到数据节点的文件,以评估解密过程的性能成本。如图6所示,读取速度是写入速度的1.4倍,因为磁盘的读取速度高于写入速度。由于解密操作和加密操作占用的CPU资源相同,解密阶段的性能衰减比加密阶段高75%,但新架构带来的系统额外费用仍在2%以内。
Hadoop的小知识。
Hadoop是Apache基金会开发的分布式系统基础设施。