基于公钥基础设施的Hadoop安全机制设计
2016-10-31王有春平佳伟
陈 卓,王有春,平佳伟
(上海航天电子技术研究所,上海 201109)
基于公钥基础设施的Hadoop安全机制设计
陈卓,王有春,平佳伟
(上海航天电子技术研究所,上海201109)
为提高私有云平台的安全性,将云平台应用于航天领域,对现有基于Hadoop的云平台的安全机制做了深入的研究,分析了Hadoop官方团队apache推出的Kerberos身份认证体系,详细介绍了Kerberos安全体系的原理和在Hadoop中的工作流程,指出了Kerberos体系存在的过度依赖KDC,采用对称密钥加密体制,客户端与Hadoop分布式文件存储系统(HDFS)的网络接口通过明文传输数据等缺陷;设计了一种基于公钥基础设施(PKI)体系的安全认证机制,能有效解决Kerberos中存在的上述缺陷,并将这种安全认证机制实际应用到Hadoop集群中。
Hadoop;HDFS;Kerberos;PKI;公钥
0 引言
随着云计算的飞速发展,强大计算存储能力使得它被广泛地应用,作为未来重要的数据处理存储方式,不久的将来将会应用到各个领域,包括航天等特殊领域,人们对数据安全性的要求会越来越高,对云计算安全的研究是重中之重。Hadoop是一种被广泛应用的云计算实现方法,IBM、雅虎、阿里、百度都把它作为自己云平台的底层架构,但Hadoop在安全性上存在一定的缺陷,因为它最初的设计目的只是建立一个高效的并行计算模型,应用在单一用户数据可控的环境下,但随着Hadoop平台的演变和发展,以Hadoop为基础的云平台的逐渐普及,它的用户群体和构建Hadoop集群的环境复杂而多样,它的安全缺陷逐渐显露出来。为提高Hadoop安全性,Apache将Kerberos认证技术引入到Hadoop中,但Kerberos在较大的集群中存在一些缺陷,本文提出的方案重点解决平台用户身份认证和数据传输加密问题。
1 Hadoop概述
Hadoop最核心的两个模块分别是HDFS和MapReduce[1]。其中HDFS是Hadoop的存储模块,为云计算系统提供分布式存储的底层支持,具有高容错,易扩展等特点;MapReduce是一种Hadoop提供的计算模型,为云计算中的分布式并行任务处理提供支持,被设计用来高效处理大数据问题,能够让用户直接进行分布式程序开发。用户的数据信息都存储在Hadoop的分布式存储系统HDFS中,Hadoop中的身份认证和数据保护都要在HDFS中进行。
2 Hadoop现有的认证体系分析
Hadoop中现有的安全机制主要分为两部分:一部分是在用户层面上对用户实施身份认证,访问控制;另一部分是在数据层面对存放其中的数据进行家加密、备份、恢复,下面对两个部分的原理和存在的缺陷进行分析[2]。
2.1用户层面安全模块
Hadoop中用户的访问权限一般分为“-r”、“-w”、“-x”,即只读、写入和执行,由Kerberos身份认证体系进行用户的身份认证和访问授权[2]。
在Kerberos认证体系中,密钥分配中心(KDC)是整个体系的核心,客户端首先通过KDC进行身份认证,随后向KDC发送访问节点数据的请求,KDC通过请求后给客户端颁发票据,客户端利用票据可以通过节点的认证获取访问权限[3],详细流程如图1所示。
图1 Kerberos工作流程
Kerberos认证体系的安全性虽然能够基本满足大部分场景的安全需求,但这种认证方式还是存在以下的3点缺陷:
KDC在Hadoop集群中过于重要,每一个新的任务执行都要有KDC的认证授权,一旦KDC出现故障,整个Hadoop集群无法运行。
KDC安全防护过于薄弱。客户端、Hadoop集群的密钥均存放在KDC中,一旦KDC被攻破,则整个集群的数据对于攻击者都是透明的,而在Kerberos认证体系中,KDC是建立在Hadoop集群的节点中,没有很高的安全保证。
Kerberos认证协议采用对称密钥加密体制。通信双方所使用的密钥是一样的,如果一方的密钥被攻击者获取,那么攻击者就可以通过密钥访问通信的另一方,这也是对称密钥加密体制的一个缺陷。
2.2数据层面的安全模块
当用户把数据存入Hadoop集群后,Hadoop集群首先对数据进行分片存储,并对数据进行备份,默认备份系数为3,分别存放到Hadoop的不同节点上,这样一旦主节点检测到数据节点故障,就可以通过启用备份节点保持数据完整性,并补充备份节点数目。这种完善的备份恢复机制使得Hadoop中的数据具有很高的可靠性。
上述备份恢复机制虽然让集群中数据很难丢失,但并没有完善的数据加密机制。Hadoop集群中各个节点之间的通信收到Kerberos安全协议保护,但客户端和集群之间的通信使用的是明文传输,信息很容易截获。
3 需求分析
通过对Hadoop现有安全机制的分析,可以看出新设计的安全机制要解决原有安全机制的缺憾,需要满足一下4个方面的要求:
1)新的安全机制能够在自身出现故障后短期内Hadoop可以正常运行;
2)新的安全机制存放密钥的地方应有充分的安全保证;
3)新的安全机制应避免对称密钥加密体制的缺陷;
4)新的安全机制能对客户端与节点之间进行数据传输加密。
4 云计算安全机制设计
目前主流的安全技术有PKI、SSL和VPN,它们实施难度相差不大,其中PKI和SSL都支持证书的验证和有效性查询,这在Hadoop认证体系中是非常重要的,因为Hadoop就是根据证书的真实有效性来判断用户身份提供访问权限;此外PKI相比于SSL,不仅支持双向认证,与应用的结合度也很友好,基于PKI设计的安全体系不仅能很好地与Hadoop相结合,而且能够让Hadoop对用户进行验证授权的同事被用户进行双向认证,所以本文用PKI技术作为安全体系设计的基础。
在数据层面上,本文提出了HTTPS协议作为客户端与HDFS服务器之间的传输协议,能够对传输的数据进行加密,有效弥补了原有安全体系在数据层面的缺憾。
通过PKI进行用户身份认证,HTTPS进行数据加密传输,使得新的安全体系有了很大的提升。
4.1基于PKI的用户身份认证体系
4.1.1PKI原理
PKI的英文全称是Public Key Infrastructure,也就是公钥基础设施,采用非对称密钥加密体制,利用公钥理论和技术为用户提供身份认证和数字签名等服务的公钥基础设施,并提供公钥和证书管理体系。
一个完整的PKI系统由一下几部分组成:认证中心(CA),注册机构(RA),数字证书库(LDAP),密钥备份恢复系统,证书撤销处理系统,PKI应用接口系统组成[4]。
一个用户申请证书的实际流程如图2所示。
图2 PKI原理
4.1.2公钥密码体制
公钥密码算法的核心在于它的一对公钥和私钥,公钥是所有人都可以获取使用的,私钥是用户单独保存使用的,如果用其中一个进行加密,则只能用另一个密钥进行解密,可以用于数字加密和数字签名。
目前常用的公钥加密算法有RSA和椭圆曲线算法。
RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但是想要对乘积进行因式分解十分困难,可以将乘积作为公钥,RSA密钥越长,保密强度越高,十分便于理解和应用,是目前应用最广泛的公钥方案[5],它的缺点则是RSA密钥的位数很长,使得加密的计算量很大。
椭圆曲线加密算法是一种新兴的加密算法,基于椭圆曲线对数问题ECDLP,给定素数P和椭圆曲线E,对于Q=KP,已知K和P计算Q比较容易,由Q和P计算K则比较困难。相比于RSA,椭圆曲线算法占用内存和计算量都更少。
本文采用RSA作为公钥加密算法,RSA算法原理更为简单,而且远远比椭圆加密算法成熟,实现起来更为简单,虽然它在密钥的产生和认证过程中运算量上比较大,但密钥的产生和认证只是在CA中和客户端的初始认证中发生,并不影响Hadoop集群的运行速度,所以本文选用更为成熟稳定的RSA算法。
4.1.3散列函数
散列函数能够把任意长的报文转换成固定长度输出的消息摘要,不同的报文会产生不同的消息摘要,所以可以通过消息摘要验证信息的完整性,应用于PKI认证系统中的数字证书[6]。目前广泛应用的散列函数算法有MD5和SHA,本文采用SHA-256,因为SHA算法比MD5具有更强的安全性,SHA-256在SHA算法系列中可以很好地保证安全性又不会带来过大的计算量。
4.1.4身份认证流程
在PKI认证体系中,客户端在访问HDFS之前,首先应该在CA中进行身份认证,获得自己的身份证书,当访问HDFS时,提交自己的身份证书,HDFS通过CA验证客户端身份的真实性,通过验证后HDFS给客户端相应的权限访问数据,如图3所示。
图3 身份认证流程
4.2数据加密
在数据层面上,Hadoop虽然有着完善的备份恢复机制,能够保证数据很难丢失,但它的数据加密机制并不完善,在客户端与集群之间的数据传输并没有相应的安全机制,直接采用HTTP协议进行明文传输,数据很容易被攻击获取,本文提出用HTTPS作为客户端和HDFS之间的数据传输协议。
HTTPS协议是HTTP和SSL协议的结合,能够在HTTP的基础上对传输的数据进行SSL加密,有效地保证了传输数据的安全。
当客户端对HDFS服务器进行访问时,HDFS服务器和客户端都要互相提供数字证书给对方,通过验证后,随机产生一对密钥,通过这对密钥加密的密文信道传输数据。
5 实验结果与分析
5.1平台构建及证书申请
在硬件方面课题采用四台计算机来组建一个简易的Hadoop集群,这4台计算机配置如表1所示。
表1 Hadoop集群硬件信息
实验平台采用cz01作为master节点,其它3台计算机作为slave节点建立Hadoop集群。首先为各个节点之间配置SSH协议来实现节点之间加密免登陆访问,随后修改节点的系统环境变量添加Hadoop信息,配置 Hadoop的端口、备份节点、分片大小等信息。
构建PKI认证体系,将一台安全可靠的第三方计算机作为PKI体系的CA认证中心,将RA和LDAP服务器放在Hadoop的NameNode节点上,组成了PKI基本的硬件架构;在软件方面采用Openssl1.0.1作为密钥加密的基础,apache2作为PKI进行证书注册申请的服务器基础,mysql存放LDAP服务器中的用户证书信息,Openca为用户提供整个PKI服务。
在安装Openca时需要将apache2,mysql,Openssl信息集成到其中,如以下代码所示:
./configure--prefix=/usr/local/openca--with-openca-tools-prefix=/usr/local/openca-tools--with-httpd-user=daemon--with-httpd-group=daemon--with-httpd-fs-prefix=/usr/local/apache2--with-htdocs-fs-prefix=/usr/local/apache2/htdocs/pki--with-db-name=openca--with-db-type=mysql--with-service-mail-account="webmaster@cz01.cn"
当客户端访问一个Hadoop集群时,首先需要向CA申请身份认证。通过PKI应用接口向RA注册机构提出证书申请,将客户端的身份信息提交给RA,如图4。RA通过审核将信息传递给CA,随后CA生成证书。
图4 客户端提交证书申请到RA
客户端访问HDFS,将自己的身份证书发送给HDFS,如图5,HDFS对客户端证书通过CA验证,验证通过则客户端获得访问权限。
图5 用户的身份证书
客户端通过身份验证后,通过HTTPS协议与HDFS进行数据传输时,首先会要求双方提供数字证书,如图6所示,双方各自交换身份证书并进行验证,通过验证后会随机产生一对密钥,通信双方就可以通过这对密钥对数据进行加密通信。
5.2实验分析
将PKI技术与Hadoop集群结合起来,使用新的身份认证方式和传输协议,Hadoop集群的安全性在多个方面比原有Kerberos安全体系有了提高,
图6访问HDFS服务器需要证书
在PKI中,CA中心并没有像Kerberos中KDC一样与Hadoop集群结合在一起,作为第三方认证机构,集群和客户端只需向CA中心申请得到自己的证书,在以后的运行中可以使用证书来证明身份的合法性,CA中心只需要定期为集群和客户更新证书即可,这样即使CA中心崩溃,Hadoop集群也可以在证书有效期内正常运行。
在Kerberos体系中KDC如果被攻破,则集群中的密钥将被攻击者获取,集群中信息对于攻击者来说是透明的。基于PKI的认证体系一般是采用第三方的权威认证机构CA提供身份认证,安全性相比于自己建立在Hadoop集群中的KDC要高出很多,被攻击获取整个集群密钥的可能性很小。
Kerberos采用的是对称密钥加密体制,通信双方采用相同的密钥,如果一方的密钥被获取,则等于另一方的密钥也被攻击者得到。而PKI采用的是非对称密钥加密体制,即使攻击者获取了一对密钥中的一个,也不能推导出对应的另一个密钥,在一定程度上提高了系统的安全性。
原有的安全体系中客户端与HDFS之间进行通信采用HTTP协议,数据采用明文传输,新的安全体系采用HTTPS协议进行客户端与HDFS之间的通信,HTTPS协议是“HT-TP+SSL”的缩写,就是在HTTP协议的基础上对数据进行SSL加密,为通信双方提供安全的通道,没有相应的密钥即使攻击者截获传输的数据也没有用,只能得到一堆无意义的乱码。
6 结束语
随着云计算应用的越来越多,人们对它的安全性要求越来越严格,对云计算安全性的研究变得越来越重要。本文通过深入研究原有的Kerberos认证体系,提出了原有安全认证体系的缺陷,并为Hadoop云平台设计了全新的安全认证体系,相比原有Kerberos认证体系具有更高的安全性,使得Hadoop集群更加难以被攻破,客户端与集群间采用HTTPS协议也使得数据传输过程更为安全,为提高云平台的安全性提供了一个新的方案。
[1] White T.Hadoop权威指南(第二版)[M].北京:清华大学出版社,2011.
[2] 陆嘉恒.Hadoop实战(第二版) [M].北京:机械工业出版社,2012.
[3] 陈贞. HDFS环境下的访问控制技术研究[D]. 重庆: 重庆大学,2014.
[4] 林钇霖. 基于PKI的身份认证系统研究[D]. 重庆: 重庆理工大学,2013.
[5] 盛宇伟. 云计算环境下CA认证中心的研究与设计[D]. 北京: 北京邮电大学,2013.
[6] 陈军. 基于PKI的身份认证协议的研究与实现[D]. 北京: 北京邮电大学,2007.
Design of Security Mechanism in Hadoop Based on Public Key Infrastructure
Chen Zhuo,Wang Youchun,Ping Jiawei
(Shanghai Aerospace Electronic Technology Institute,Shanghai201109,China)
To improve the security of private cloud platform and apply cloud platform to aerospace area,this paper made deep research on the security mechanism in cloud platform. In this paper,we analysed the Kerberos released by apache, then we introduce the principle of Kerberos and the workflow of Kerberos in Hadoop,we point out that Kerberos have some defects, first,Kerberos is too dependent on KDC,second,Kerberos use symmetric cryptographic communication,third,the communication between client and HDFS uses plaintext. So we designed a new authenticated scheme based on PKI which can solve those problems in Kerberos,and we practical apply it in Hadoop platform .
Hadoop; HDFS; Kerberos; PKI; public key
1671-4598(2016)04-0149-03DOI:10.16526/j.cnki.11-4762/tp.2016.04.044
TP301
A
2015-10-07;
2015-11-10。
陈卓(1993-),男,河南驻马店人,硕士研究生,主要从事测试与控制方向的研究。
王有春(1974-),女,安徽蚌埠人,硕士研究生导师,主要从事测试与发控方向的研究。