陳 卓,王有春,平佳偉
(上海航天電子技術研究所,上?!?01109)
?
基于公鑰基礎設施的Hadoop安全機制設計
陳卓,王有春,平佳偉
(上海航天電子技術研究所,上海201109)
為提高私有云平臺的安全性,將云平臺應用于航天領域,對現有基于Hadoop的云平臺的安全機制做了深入的研究,分析了Hadoop官方團隊apache推出的Kerberos身份認證體系,詳細介紹了Kerberos安全體系的原理和在Hadoop中的工作流程,指出了Kerberos體系存在的過度依賴KDC,采用對稱密鑰加密體制,客戶端與Hadoop分布式文件存儲系統(tǒng)(HDFS)的網絡接口通過明文傳輸數據等缺陷;設計了一種基于公鑰基礎設施(PKI)體系的安全認證機制,能有效解決Kerberos中存在的上述缺陷,并將這種安全認證機制實際應用到Hadoop集群中。
Hadoop;HDFS;Kerberos;PKI;公鑰
隨著云計算的飛速發(fā)展,強大計算存儲能力使得它被廣泛地應用,作為未來重要的數據處理存儲方式,不久的將來將會應用到各個領域,包括航天等特殊領域,人們對數據安全性的要求會越來越高,對云計算安全的研究是重中之重。Hadoop是一種被廣泛應用的云計算實現方法,IBM、雅虎、阿里、百度都把它作為自己云平臺的底層架構,但Hadoop在安全性上存在一定的缺陷,因為它最初的設計目的只是建立一個高效的并行計算模型,應用在單一用戶數據可控的環(huán)境下,但隨著Hadoop平臺的演變和發(fā)展,以Hadoop為基礎的云平臺的逐漸普及,它的用戶群體和構建Hadoop集群的環(huán)境復雜而多樣,它的安全缺陷逐漸顯露出來。為提高Hadoop安全性,Apache將Kerberos認證技術引入到Hadoop中,但Kerberos在較大的集群中存在一些缺陷,本文提出的方案重點解決平臺用戶身份認證和數據傳輸加密問題。
Hadoop最核心的兩個模塊分別是HDFS和MapReduce[1]。其中HDFS是Hadoop的存儲模塊,為云計算系統(tǒng)提供分布式存儲的底層支持,具有高容錯,易擴展等特點;MapReduce是一種Hadoop提供的計算模型,為云計算中的分布式并行任務處理提供支持,被設計用來高效處理大數據問題,能夠讓用戶直接進行分布式程序開發(fā)。用戶的數據信息都存儲在Hadoop的分布式存儲系統(tǒng)HDFS中,Hadoop中的身份認證和數據保護都要在HDFS中進行。
Hadoop中現有的安全機制主要分為兩部分:一部分是在用戶層面上對用戶實施身份認證,訪問控制;另一部分是在數據層面對存放其中的數據進行家加密、備份、恢復,下面對兩個部分的原理和存在的缺陷進行分析[2]。
2.1用戶層面安全模塊
Hadoop中用戶的訪問權限一般分為“-r”、“-w”、“-x”,即只讀、寫入和執(zhí)行,由Kerberos身份認證體系進行用戶的身份認證和訪問授權[2]。
在Kerberos認證體系中,密鑰分配中心(KDC)是整個體系的核心,客戶端首先通過KDC進行身份認證,隨后向KDC發(fā)送訪問節(jié)點數據的請求,KDC通過請求后給客戶端頒發(fā)票據,客戶端利用票據可以通過節(jié)點的認證獲取訪問權限[3],詳細流程如圖1所示。
圖1 Kerberos工作流程
Kerberos認證體系的安全性雖然能夠基本滿足大部分場景的安全需求,但這種認證方式還是存在以下的3點缺陷:
KDC在Hadoop集群中過于重要,每一個新的任務執(zhí)行都要有KDC的認證授權,一旦KDC出現故障,整個Hadoop集群無法運行。
KDC安全防護過于薄弱??蛻舳?、Hadoop集群的密鑰均存放在KDC中,一旦KDC被攻破,則整個集群的數據對于攻擊者都是透明的,而在Kerberos認證體系中,KDC是建立在Hadoop集群的節(jié)點中,沒有很高的安全保證。
Kerberos認證協議采用對稱密鑰加密體制。通信雙方所使用的密鑰是一樣的,如果一方的密鑰被攻擊者獲取,那么攻擊者就可以通過密鑰訪問通信的另一方,這也是對稱密鑰加密體制的一個缺陷。
2.2數據層面的安全模塊
當用戶把數據存入Hadoop集群后,Hadoop集群首先對數據進行分片存儲,并對數據進行備份,默認備份系數為3,分別存放到Hadoop的不同節(jié)點上,這樣一旦主節(jié)點檢測到數據節(jié)點故障,就可以通過啟用備份節(jié)點保持數據完整性,并補充備份節(jié)點數目。這種完善的備份恢復機制使得Hadoop中的數據具有很高的可靠性。
上述備份恢復機制雖然讓集群中數據很難丟失,但并沒有完善的數據加密機制。Hadoop集群中各個節(jié)點之間的通信收到Kerberos安全協議保護,但客戶端和集群之間的通信使用的是明文傳輸,信息很容易截獲。
通過對Hadoop現有安全機制的分析,可以看出新設計的安全機制要解決原有安全機制的缺憾,需要滿足一下4個方面的要求:
1)新的安全機制能夠在自身出現故障后短期內Hadoop可以正常運行;
2)新的安全機制存放密鑰的地方應有充分的安全保證;
3)新的安全機制應避免對稱密鑰加密體制的缺陷;
4)新的安全機制能對客戶端與節(jié)點之間進行數據傳輸加密。
目前主流的安全技術有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系統(tǒng)由一下幾部分組成:認證中心(CA),注冊機構(RA),數字證書庫(LDAP),密鑰備份恢復系統(tǒng),證書撤銷處理系統(tǒng),PKI應用接口系統(tǒng)組成[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中和客戶端的初始認證中發(fā)生,并不影響Hadoop集群的運行速度,所以本文選用更為成熟穩(wěn)定的RSA算法。
4.1.3散列函數
散列函數能夠把任意長的報文轉換成固定長度輸出的消息摘要,不同的報文會產生不同的消息摘要,所以可以通過消息摘要驗證信息的完整性,應用于PKI認證系統(tǒng)中的數字證書[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.1平臺構建及證書申請
在硬件方面課題采用四臺計算機來組建一個簡易的Hadoop集群,這4臺計算機配置如表1所示。
表1 Hadoop集群硬件信息
實驗平臺采用cz01作為master節(jié)點,其它3臺計算機作為slave節(jié)點建立Hadoop集群。首先為各個節(jié)點之間配置SSH協議來實現節(jié)點之間加密免登陸訪問,隨后修改節(jié)點的系統(tǒng)環(huán)境變量添加Hadoop信息,配置 Hadoop的端口、備份節(jié)點、分片大小等信息。
構建PKI認證體系,將一臺安全可靠的第三方計算機作為PKI體系的CA認證中心,將RA和LDAP服務器放在Hadoop的NameNode節(jié)點上,組成了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,將自己的身份證書發(fā)送給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如果被攻破,則集群中的密鑰將被攻擊者獲取,集群中信息對于攻擊者來說是透明的?;赑KI的認證體系一般是采用第三方的權威認證機構CA提供身份認證,安全性相比于自己建立在Hadoop集群中的KDC要高出很多,被攻擊獲取整個集群密鑰的可能性很小。
Kerberos采用的是對稱密鑰加密體制,通信雙方采用相同的密鑰,如果一方的密鑰被獲取,則等于另一方的密鑰也被攻擊者得到。而PKI采用的是非對稱密鑰加密體制,即使攻擊者獲取了一對密鑰中的一個,也不能推導出對應的另一個密鑰,在一定程度上提高了系統(tǒng)的安全性。
原有的安全體系中客戶端與HDFS之間進行通信采用HTTP協議,數據采用明文傳輸,新的安全體系采用HTTPS協議進行客戶端與HDFS之間的通信,HTTPS協議是“HT-TP+SSL”的縮寫,就是在HTTP協議的基礎上對數據進行SSL加密,為通信雙方提供安全的通道,沒有相應的密鑰即使攻擊者截獲傳輸的數據也沒有用,只能得到一堆無意義的亂碼。
隨著云計算應用的越來越多,人們對它的安全性要求越來越嚴格,對云計算安全性的研究變得越來越重要。本文通過深入研究原有的Kerberos認證體系,提出了原有安全認證體系的缺陷,并為Hadoop云平臺設計了全新的安全認證體系,相比原有Kerberos認證體系具有更高的安全性,使得Hadoop集群更加難以被攻破,客戶端與集群間采用HTTPS協議也使得數據傳輸過程更為安全,為提高云平臺的安全性提供了一個新的方案。
[1] White T.Hadoop權威指南(第二版)[M].北京:清華大學出版社,2011.
[2] 陸嘉恒.Hadoop實戰(zhàn)(第二版) [M].北京:機械工業(yè)出版社,2012.
[3] 陳貞. HDFS環(huán)境下的訪問控制技術研究[D]. 重慶: 重慶大學,2014.
[4] 林釔霖. 基于PKI的身份認證系統(tǒng)研究[D]. 重慶: 重慶理工大學,2013.
[5] 盛宇偉. 云計算環(huán)境下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-),女,安徽蚌埠人,碩士研究生導師,主要從事測試與發(fā)控方向的研究。