APP下载

基于HDFS的云存储安全技术研究

2013-09-11琦,凌

计算机工程与设计 2013年8期
关键词:加解密密文解密

余 琦,凌 捷

(广东工业大学 计算机学院,广东 广州510006)

0 引 言

云存储作为未来信息存储的一种重要方式,其数据安全性问题也是人们关注的焦点。HDFS(hadoop distributed file system)是一个应用广泛的云计算开源分布式文件系统,支持高容错且可以部署在低成本的计算机上,提供高吞吐量的访问,适用于一些具有大量数据处理的应用程序。但是HDFS存在许多安全性方面的问题,如:用户认证问题、DataNode认证问题、文件存储与传输的机密性问题。目前,国内外对于云存储安全方面的研究还比较少。维护数据完整性,Cachin等[1]曾提出采用加密工具的方法。Bower等[2]提出分布式加密系统解决数据机密性问题。Weatherspoon的 Antiquity[3]与 Kotla的 SafeStore[4]都是典型的研究数据可恢复机制的系统。在国内,针对云计算安全问题,冯登国[5]等学者曾提出相应的安全机制和安全策略,清华大学侯清铧[6]等设计了一种基于SSL安全连接和DaoLi安全虚拟监控系统保护用户数据安全性的解决方案。本文根据HDFS文件读取与写入的特点,提出基于HDFS输入输出流、在客户端完成数据加解密的安全技术方案,实现了以密文形式进行数据传输与存储,解决了HDFS数据泄露和篡改的问题。

1 HDFS文件安全传输存储体系

HDFS存在数据完整性校验机制,HDFS会对写入的所有数据计算校验和,并在读取数据时验证校验和。客户端 (即clientnode)在向HDFS写入数据时会计算并写入数据的CRC-32(循环冗余校验)校验和,然后将数据及其校验和发送到由一系列datanode组成的管线,datanode负责在验证收到的数据后存储数据及其校验和。clientnode从datanode读取数据时,同样需要验证校验和,将其与datanode中存储的校验和进行比较来完成数据校验。根据HDFS的完整性校验机制的特点,本文按以下流程设计基于HDFS文件读写的加解密机制。当客户端向HDFS写入文件数据时,加密操作在clientnode计算校验和之前执行;当客户端从HDFS读取文件数据时,解密操作在clientnode计算校验和并完成密文文件读取后执行。

如图1所示,在HDFS文件写入过程中,clientnode通过对DistributedFileSystem对象调用create()函数来创建文件。DistributedFileSystem对namenode创建一个RPC调用。在文件系统的命名空间中创建一个新文件,此时该文件还没有相应的数据块。如果需要对存入HDFS的文件进行加密,clientnode首先应当从 (PublicKeyLibrary)公钥库中获取当前用户的公钥,执行encrypt操作,获得存储文件加密后的密文文件。此时clientnode计算出密文文件的校验和,DistributedFileSystem向clientnode返回FSdataOutputStream后,clientnode开始写入密文文件及其校验和。由FSdataOutputStream封装而成的DFSOutputStream将clientnode写入的数据分成一个个数据包,并写入内部队列,称为 “数据队列” (data queue)。clientnode将这些数据包发送至一系列datanode组成的管线,管线中的最后一个datanode负责验证校验和。

图1 HDFS文件写入过程

如图2所示,在HDFS文件读取过程中,clientnode通过调用FileSystem对象的open()方法来打开希望读取的文件,这个对象是分布式文件系统的一个实例。DistributedFileSystem通过RPC调用namenode,以确定文件起始块的位置。DistributedFileSystem返回FSDataInputStream给clientnode并读取数据。clientnode通过反复的对FSDataInputStream对象调用read()方法,可以完成对datanode数据的读取。如果需要从HDFS中读取密文文件,则需要一个对文件进行解密的过程,clientnode需要对FSDataInput-Stream进行读取,获取密文文件后,通过自己掌握的私钥完成对密文文件的解密操作,获取文件明文。

图2 HDFS文件读取过程

2 云存储安全技术设计

本文选择 AES (advanced encryption standard)作为文件加密算法,它具有密码使用相对简单以及加密速度相对较快等优点,但是AES存在密钥分配和保密管理方面的问题。RSA作为一种非对称加密算法,不需要秘密分配密钥,并且密钥的安全管理也相对较容易。此外面对HDFS庞大云存储用户群体,作为公开密钥密码体制中十分重要的一种算法,RSA还可以完成用户认证和数字签名。本文提出将两种加密算法相互结合,运用于HDFS中文件传输和存储的加密,可充分利用AES和RSA两种算法的优点。

2.1 文件加解密设计

文件数据在传输过程中经AES加密处理后,需对加密密钥做RSA加密,得到的密钥密文与文件经过加密后的密文相绑定 (云端密文文件存储格式如图5所示),通过系统分块并存储于HDFS的各存储节点,这样不但提高了系统的存储效率,也可以解决单钥密码的密钥分发问题。在读取并下载HDFS上的文件时,需要从存储密文中抽取AES密钥密文,通过用户的私钥进行解密获得密钥明文后,再对文件密文解密获得文件明文。具体过程如下:

(1)如图3所示,在文件加密上传过程中,用户登录云存储系统,向HDFS发送传输文件请求时,并确定选择加密传输,同时由客户端随机密钥生成器生成一个128bit的AES加密密钥key。

(2)在客户端对用户需要传输的文件Plaintext用生成的AES密钥进行加密获得文件密文Cipher。

(3)使用该用户的2048bit的RSA公钥对该文件的加密密钥key进行加密,获得密钥密文KEY。

(4)将密钥密文KEY与文件密文Cipher相绑定,按照文件密文储存格式加上相应的标记位和数据长度标识,存储于HDFS文件系统。

(5)如图4所示,在文件解密下载过程中,当用户从云端HDFS文件系统下载文件时,在获得从HDFS系统传输至客户端的文件后,系统首先判断文件的第1比特,若为0,表示文件为明文存储,去掉标记位后即可还原为原始文件。若为1则表示文件为密文文件,需对其进行解密。

(6)首先应提取文件中128字节 (RSA加密后的大小)的AES密钥密文KEY,通过用户个人的RSA私钥可解密成为AES的明文密钥key。

(7)通过获得的AES密钥key对存储文件密文的Cipher部分进行AES解密,获得存储文件明文。

2.2 文件存储格式分析

云端文件的存储格式分为明文存储和密文存储两类。如图5所示。

图5 文件存储格式分类

存储格式的第1比特为0,表示文件以明文存储;若为1,表示文件以密文存储。当文件以密文形式存储时,在密文前需要增加128字节用于放置经过RSA加密后AES密文密钥KEY,4个字节用于表示文件的有效数据长度,Cipher代表AES加密后的密文。(由于通过AES文件加密,每1024Byte的明文字节流通过加密后变为1040Byte的密文字节流,因此Cipher部分长度相对于原有的文件明文也有所增长)。

3 安全性分析

首先对于文件传输时使用的AES算法进行分析,在未知AES密钥的前提下,可通过以下几种攻击方法对AES安全性进行分析。

(1)穷举攻击:穷尽密钥搜索的平均复杂度为2k-1(k为密钥长度)次AES加密,针对本方案中的128bit密钥,需要进行2127次AES加密,计算量十分庞大,因此这种攻击方法是无效的。

(2)差分攻击:AES算法采用的宽轨迹策略可有效抵抗差分分析,算法的4轮变换后的差分轨迹预测概率小于或等于2-150,8轮变换后也小于或等于2-300。因此可以确定足够大的轮数,使所有差分轨迹都小于1/2n-1(n位分组块的),从而使差分攻击失效。

(3)内插攻击:AES算法中F256域,其展开式为:

由于展开式十分复杂,这种攻击方法也是无效的。

由以上分析可以看出,在未知AES密钥的前提下,AES算法对目前已知的攻击具有较好的免疫性。并且由于HDFS是将用户的文件按一定大小分片存储,可进一步增加系统的安全性。因此制约其安全性的瓶颈主要在于AES文件加密密钥的安全性,如何管理和存储文件加密密钥是决定方案安全性的重点。在本文设计的技术方案中,对文件传输存储,采用一次一密钥,存储的每一个文件都有其不同的AES密钥,且该AES密钥对于用户是透明的。此外由于采用RSA算法对每个文件的AES密钥进行加密,将加密的AES密钥密文与文件密文绑定并存储于HDFS,用户在整个过程中只需要保管好自己的RSA私钥即可。由于以上加密是在客户端 (clientnode)上完成的,因此实现了文件的密文传输与密文存储。下面将对RSA的安全性进行分析[7]。

RSA的安全性依赖于大数的因子分解,这样攻击RSA系统的难度就是大整数因子分解的难度。Schroeppel算法作为一种较优越的因子分解算法,经常被研究者用来分析大数因子分解问题。表1为采用Schroeppel算法分解不同长度十进制数n的因子时所需要的运算次数。

表1 用Schroeppel分解因子算法的运算次数

对于RSA系统,如果n的长度更长,因子分解越困难,一般来说,每增加10位二进制数,分解的时间就要加长一倍,密码就越难以破译,加密强度就越高。RSA通常选取的密钥长度为512,1024,2048bit。在本文设计的云存储安全技术方案中,由于RSA加密的对象为16字节的AES密钥,因此本方案选择2048bit的密钥,就目前而言具有很高的安全性。

4 实验结果分析

在基于HDFS云存储数据传输过程中引入加解密机制后,除了提高数据安全性之外,应该纳入考虑的主要有以下两个方面:①加密与解密对于文件速率造成的影响;②加密与解密对于客户端主机性能所造成的影响。本文中的技术方案是在客户端完成文件的加密与解密,文件由明文加密变为密文后,其长度将发生变化。根据2.2中的文件存储格式分析,除需要对每个密文文件的文件头添加128Byte用于存储AES密文密钥外,在进行AES文件加密时,每1024Byte的明文字节流通过加密后将变为1040Byte的密文字节流。综上,密文文件长度相比于加密前明文长度约增长1.56%,因此通过加密,对于HDFS中namenode和datanode会造成约1.56%的额外的开销。对于HDFS中的clientnode,主要是增加了对于文件的加密与解密的时间开销和性能损失。文件加解密操作对整个文件传输速率的影响主要表现在两个方面:①对传输文件采用AES加解密所用的时间;②对AES密钥采用RSA加解密所用的时间。

本文实验中搭建的Hadoop集群由1台namenode和3台datanode共4台服务器组成,客户端 (clientnode)通过namenode来提交数据。4台服务器的配置为:Intel酷睿2双核G630@2700MHzCPU;网络环境为NetLink BCM5784MGigabit Ethernet;Hadoop 版 本 为 hadoop-1.0.3;Linux版本为ubuntu 11.10;JDK采用1.6.0_17。客 户 端 配 置 为 Pentium/ (R)Dual-Core CPU E5200@2.5GHz。

表2列出了用AES加密不同大小、不同类型文件以及HDFS传输该文件所用时间的实验数据。

表2 AES加密时间对比

采用RSA加密AES明文密钥的时间,这里也做了相应的测试。其中128bit的AES密钥采用RSA加密平均耗时499ms,解密平均耗时32ms。

由以上测试数据可见,文件通过AES加密或者解密耗时与文件类型无关。本文提出的安全方案中RSA算法对于AES密钥进行加解密时间相对较短,对于文件传输总的时间损耗和用户体验影响不大。AES文件加密耗时相对较长,会对HDFS造成较大的额外时间开销。除了对整体传输速率的影响外,加解密对于客户端主机性能的影响也十分重要。以上表中的165.617MB文件为测试用例,表3,表4,图6,图7为测试结果。

表3 客户端向HDFS上传文件时性能数据

表4 客户端从HDFS下载文件时性能数据

表3和图6表现了客户端在原始、加入加密操作后两种状态下CPU占用率与上传速度之比。表4和图7表现了客户端在原始、加入解密操作后两种状态下CPU占用率与下载速度之比。由表3和表4可见,在HDFS传输过程中加入加解密机制,CPU占用率平均会增加22%~25%,总体文件传输速率会降低30%~35%。由图6和图7可见引入加解密机制后,客户端引入了3倍多的性能损失。

由以上结果分析可得,加解密机制虽然会给客户端主机带来一定的性能损失,但是保障了数据的机密性,从用户数据安全性的角度考虑是可以接受的。实现加解密之后,由于加密和解密的时间损耗将会造成传输速率的下降。针对这种情况本文提出两点改进:

(1)如图8中实现的用户操作界面,用户可自主选择是否对文件进行加密。重要的文件一般是以文本或图片的形式存在,这些文件一般长度较小,可选择加密存储。对于长度较大的文件,如视频、音频等文件,用户可根据实际需要自主选择是否加密存储,重要性较低的文件选用明文存储可提高文件的存取效率。

图8 用户操作界面

(2)对于使用云存储用户而言,文件的传输与存储过程是透明的。因此针对大文件的存储传输,客户端可设置相应的传输加密缓冲区。在用户提交传输请求后,文件的加解密以及传输操作在后台完成,客户端只在传输完成后给出提示信息即可,可以改善用户体验。

5 其他工作

目前存在并被广泛使用的云存储分布式文件系统,包括 Google Cloud的 Google File System,Amazon Cloud的Simple Storage Service,MicroSoft Azure的 Live Service和IBM Blue Cloud的 Hadoop Distribute File System 等,都是提供的文件存储功能,并没有通过对用户文件进行加密保护其数据私密性的功能。清华大学候清铧等提出一种基于SSL安全连接和Daoli安全虚拟监控系统的保护云存储平台上用户数据私密性的解决方案。该方案中,用户与分布式文件系统进行数据交互时采用SSL安全连接来保障数据传输的私密性和安全性,通过在客户端和元数据服务器 (或块数据服务器)上部署Daoli安全虚拟监督系统,将用户数据与操作系统隔离开来,确保用户数据在分布式文件系统中存储的安全性。由于需要在客户端和分布式文件系统中部署SSL和Daoli安全虚拟监督系统,会给客户端和整个分布式系统带来性能损失。

在本文提出的解决方案中,在客户端完成文件的加密与解密,具备以下特点:①可以保障用户文件数据的传输安全性和存储安全性;②由于是在HDFS Clientnode计算校验和之前完成加密,所以加密操作不会破坏HDFS原有的数据完整性校验机制;③在整个分布式文件存储体系中,将文件的加密与解密操作分散至各客户端。这样虽然会给客户端带来一定的性能损失,但基本不会给HDFS的namenode和datanode带来额外的性能损失。这样可以使整个分布式文件系统在采用数据私密性保护后,面对多用户、大规模的访问和文件存取时不会存在较大性能损失;④当前版本的HDFS中,客户端用户身份是通过宿主操作系统给出,HDFS客户端用户身份认证机制还存在很大缺陷。本文提出的方案引入RSA算法及其公钥库,可为这一问题的解决创造前提。

6 结束语

本文根据HDFS数据输入输出和完整性校验的特点,在HDFS的客户端采用AES算法加密用户上传的文件,保障云存储用户数据的机密性;通过RSA算法保障AES密钥的安全性,同时可解决AES单钥密码的分发与管理的问题;设计云端文件的两种存储格式,实现加密用户自主选择;通过性能测试的结果可验证方案的可行性。在本方案的基础上可通过设置加密缓冲区来完善用户体验,同时也可以进一步引入PKI技术,实现HDFS用户的CA认证和数字签名,从而进一步提升HDFS的安全性。

[1]Cachin c,Keidar I,Shraer A.Trusting the cloud[J].ACM SIGACT News,2009,40 (2):455-461.

[2]Bower K D,Juels A A.HAIL:A high availability and integrity layer for cloud storage [C]//Proceedings of the 16th ACM Conference on Computer and Communications Security.New York,USA:ACM,2009:489-501.

[3]Weatherspoos H,Eaton P,Ubiatowiz J.Antiquity:Exploiting a secure log for wide-area distributed storage[C]//Proceeding of the Second ACM European Conference on Computer Systems,New York,USA:ACM,2007:78-89.

[4]Kotla R,Alvisi L,Dahlin M.SafeStore:A durable and practical storage system [C]//Proceeding of the 12th USENIX Annual Technical Conference.Berkeley,USA:USENIX Association,2007:129-142.

[5]FENG Dengguo,ZHANG Min,ZHANG Yan,et al.Study on cloud computing security [J].Journal of Software,2011,22(1):71-83 (in Chinese).[冯登国,张敏,张妍,等.云计算安全研究 [J].软件学报,2011,22 (1):71-83.]

[6]HOU Qinghua,WU Yongwei,ZHENG Weimin,et al.A method on protection of user data privacy in cloud storage platform [J]Journal of Computer Research and Development,2011,48 (7):1146-1154 (in Chinese). [侯清铧,武永卫,郑纬民,等.一种保护云存储平台上用户数据私密性的方法[J].计算机研究与发展,2011,48 (7):1146-1154.]

[7]XIE Jianquan,YANG Chunhua.Several possible parameters options causing encryption failure in RSA algorithm [J].Computer Engineering,2006,32 (16):118-120 (in Chinese).[谢建全,阳春华.RSA算法中几种可能泄密的参数选择 [J].计算机工程,2006,32 (16):118-120.]

[8]ZHANG Huanguo,WANG Zhangyi.Introduction to cryptography [M].2nd ed.Wuhan:Wuhan University Press,2009:71-86 (in Chinese). [张焕国,王张宜.密码学引论 [M].2版.武汉:武汉大学出版社,2009:71-86.]

[9]Tom White.Hadoop:The Definitive Guide[M].ZHOU Minqi,WANG Xiaoling,JIN Cheqing,et al transl.Beijing:Tsinghua University Press,2011 (7):41-128 (in Chinese).[Tom White.Hadoop权威指南 [M].周敏奇,王晓玲,金澈清,等译.北京:清华大学出版社,2011(7):41-128.]

[10]CHEN Quan.DENG Qianni.Cloud computing and its key techniques [J].Journal of Computer Applications,2009,29(9):2562-2567 (in Chinese). [陈全,邓倩妮.云计算及其关键技术 [J].计算机应用,2009,29 (9):2562-2567.]

猜你喜欢

加解密密文解密
一种支持动态更新的可排名密文搜索方案
基于模糊数学的通信网络密文信息差错恢复
炫词解密
解密“一包三改”
密钥共享下跨用户密文数据去重挖掘方法*
炫词解密
PDF中隐私数据的保护方法
一种基于密文分析的密码识别技术*
电子取证中常见数据加解密理论与方法研究
网络数据传输的加解密系统研究