裴樹軍 張圓緒 婁淑慧



摘要:針對HDFS集群環境中Kerberos協議身份認證機制所面臨的時間同步問題、KDC安全問題、字典攻擊問題以及抵賴機制問題,提出了一種基于公鑰加密體系改進HDFs環境下Kerberos協議的身份認證機制,首先,分析現存HDFs體系下的身份認證過程,并提出認證過程所面臨的安全問題;其次,結合公鑰加密機制與數據簽名機制對HDFS下的Kerbems協議進行了針對性的修正,并給出了改進后Kerberos協議在HDFS環境下詳細的身份認證工作流程;最后,根據公鑰加密特點以及HDFs集群特性,充分分析論證了改進Kerbems在HDFS環境下的可行性.實驗表明,在公鑰級安全保證下,改進后的Kerberos協議與現有的身份認證機制相比在認證請求達到120次以上后時間性能優勢明顯,為HDFs集群提供了更可靠、更高效的身份認證解決方案.
關鍵詞:云計算;Had00p Distributed File system;身份認證;Kerberos;公鑰加密
DoI:10.15938/j.jhust.2016.04.003
中圖分類號:TP99
文獻標志碼:A
文章編號:1007-2683(2016)04-0013-06
0引言
Hadoop是Apache基金會旗下一款具備PT級數據存儲與分析能力的分布式系統基礎架構,作為云計算領域內海量數據的存儲與計算的核心技術取得了廣泛的應用,該架構主要由分布式文件系統HDFS(Hadoop Distributed File System)與分布式編程模型Mapreduce兩個核心組件組成.HDFS是Google的分布式文件系統GFS(Goode File Sys-tern)的開源實現,為Hadoop平臺提供基礎的分布式文件存儲服務,是整個Hadoop得以運行的基礎。在身份認證安全方面,HDFS是基于Kerberos協議實現的.但鑒于對稱密鑰機制下的Kerberos其安全性面臨著很大的不足,很多學者也做了相關的研究.張曉提出了一種基于PKI改進的Kerberos協議,該方案通過使用公鑰加密機制代替對稱密鑰機制使得認證協議安全性達到了公鑰級別,但在時間效率上卻有著不足,邵葉秦等提出了一種公鑰加密機制與私鑰加密機制相結合的Kerberos協議,在安全性和時間上均有所提高,但由于對稱密鑰是由密鑰分發中心KDC生成,在對稱密鑰交換上存在安全漏洞.李延改等提出了一種基于數字證書CA的HDFS環境下的認證及安全傳輸機制,該改進為通信雙方提供證明自身身份的數字證書,實現了通信雙方的身份認證,但管理過于繁多的數字證書增加了使用者的開銷。
本文將在綜合分析HDFS現存Kerberos認證機制的基礎上,充分利用公鑰加密機制與對稱密鑰加密機制各自特點,將對稱密鑰的生成管理方由集中式的KDC改變為分布式的集群服務申請者,以期最終給出一套完善的HDFS環境下的Kerberos協議身份認證機制。
1.Kerberos應用分析
Hadoop在設計之初,默認整個集群是在一個可信任的域中,并沒有為集群引入各實體間的認證機制,隨著Hadoop應用的不斷普及Hadoop設計者也逐漸意識到集群存在的安全性問題,針對Hadoop的安全缺陷,自Hadoopl.0.0版本后,為其引入了基于Kerberos協議的第三方安全身份認證機制,用于保障各通信節點間的可信性。
1.1基于Kerberos協議下的HDFS認證機制
Kerberos最初是由MIT研發的,當前最新的協議版本為Kerberos V5,該協議可為處于不安全的網絡環境下通信的雙方提供可信認的身份認證機制,該協議在網絡安全與身份認證領域有著廣泛的應用,HDFS下Kerberos的基本原理:在Hadoop集群中建立一個集中保存客戶端、DataNode以及NameNode的用戶名和密碼的認證中心KDC,進行用戶的身份認證和授權工作,KDC在是由兩個邏輯上相互獨立的認證服務器AS和票據發放服務器TGS組成的,Hadoop集群下的任何需要申請服務的用戶在申請服務時,首先通過與AS服務器通信獲得票據授權票據TGT,然后利用TGT與TGS服務器通信獲取用于服務的票據Ticket,最后用戶利用票據Ticket與所需服務提供節點通信取得服務。
HDFS下Kerberos協議具體實現過程如圖4所示
1.2 HDFS下Kerberos協議安全性分析
通過為HDFS引入Kerberos協議,解決了原有HDFS集群所遇到的如下安全問題
1)非法用戶利用Hadoop集群的動態擴展特性,偽裝成DataNode節點服務器加入到HDFS集群內,接收NameNode分派的文件數據信息;
2)非法用戶通過更改網絡發送數據包偽裝成授權用戶的身份,向NameNode與DataNode請求服務資源;
3)在非安全的網絡環境中,非法用戶可以竊聽數據報文的交換過程,并可使用重放攻擊干擾Nam—eNode、DataNode服務器的正常運行.
雖然Kerberos協議可以為HDFS提供身份認證機制,但是HDFS下的Kerberos身份認證機制還存在局限性,面臨著如下安全問題:
1)HDFS集群時間同步性問題.由于在整個Kerberos協議身份認證過程中會通過借助對比時間戳來判斷用戶身份真實性,這就要求整個HDFS集群內部網絡具備很高的時鐘同步能力,而這對于構建于廉價商用機群之上的HDFS集群來說難于實現的.即使HDFS集群所處的Kerberos服務域內可做到高度的時鐘同步,使得接收方可以在規定的可信時間內(通常設置t=5min)得到新消息,但只要惡意用戶事先準備好偽造的消息,一旦截獲服務票據并馬上發出,Kerberos機制是難以在這5分鐘內檢測出惡意用戶發起的攻擊。
2)KDC的安全性及“瓶頸”問題.KDC作為Kerberos認證協議中的一個重要組成部分,用于存儲和分發HDFS集群客戶端、NameNode和DataNode的密鑰等相關信息.一方面,集中式的密鑰存儲簡化了整個系統的管理復雜難度,然而一旦KDC被惡意用戶攻破,則將會對整個HDFS集群安全造成災難性的打擊;另一方面為應對非法用戶惡意收集票據用于重放攻擊,KDC需要為密鑰設定一個安全的有效期時限,這樣的設計使得HDFS集群認證申請方為保證自身持有密鑰的有效性需要周期性的向KDC申請票據.鑒于HDFS自身集群規模龐大性以及申請方需要周期性的向中心服務器KDC提出申請,這將導致服務器服務能力下降和處理能力減弱,產生性能瓶頸。
3)字典攻擊問題.在Kerberos認證過程中,AS服務器并不是直接驗證用戶身份,而是通過返回用客戶端密鑰Kc加密的TGT信息,只有知道Kc的用戶才可解密得到TGT,進而進行后續的認證步驟.然而目前即使引入了認證技術及數據加密技術的強健安全網絡(RSN)在通信安全方面依然存在相關的安全隱患,汪定。等指出即使在強健安全網絡(RSN)環境下,基于中間人MitM的信息篡改、信息竊取等攻擊方式依然具有嚴重威脅性,并提出中一個關于MitM攻擊的框架和有效攻擊條件,給出該框架下一個有效攻擊實例,因此若惡意用戶可在HDFS集群通信線路上收集足夠數量的TGT信息,從而可以通過離線的口令分析技術,進行針對性的密鑰破解.針對惡意用戶的離線分析狀況,基于對稱加密體制目前還無法給出有效性防止方案.
4)抵賴機制問題.有效的不可抵賴機制是現如今通信網絡雙方所極為推崇的重要安全技術.當前的不可抵賴機制實現是基于數字簽名技術,而數字簽名的實現則依賴于散列函數與公鑰加密算法.由于Kerberos協議采用的是對稱加密機制而非公私鑰機制,所以也就不能為信息的發送方提供數字簽名技術,不能實現HDFS集群認證過程中發送信息不可抵賴機制。
為消除HDFS下Kerberos身份認證機制的這些局限性問題,本文將會在Hadoop集群現有的認證機制的的框架內就Kerberos協議做出適當的修改,通過為Kerberos協議引入非對稱加密體質,充分利用現有非對稱密鑰機制的特點解決上述Hadoop集群身份認證問題。
2.Kerberos改進及實現
在保證現有Kerberos認證框架前提下,本方案對Kerberos協議認證內容做了改進性修正(具體流程參見圖5).首先,服務申請方在生成請求信息時摒棄了原有協議中采取的對稱加密方式,而是采用公鑰加密技術對傳輸信息進行安全級別更高的公鑰加密,并且加密信息中包含本次連接所使用的對稱加密密鑰;其次,在HDFS集群用戶認證信息發送的端與端之間引入數字簽名技術,對所需傳輸內容采取先簽名后傳輸策略;最后,鑒于公鑰加密技術的引進,修改后協議在認證信息方面只保留了基本的信息字段,舍棄了不再需要的IP地址等信息,做到了HDFS集群內端與端之間傳遞認證信息精簡化。
改進后協議認證流程如下:
2.1 Client請求NameNode
認證過程中用到符號說明如下:
Client:服務的請求方
KDC:Key Distribute Center密鑰分發中心
2.2 Client請求DataNode服務過程
該部分認證同Client請求NameNode服務過程類似,限于篇幅不再累述.
3.結果分析
下面將分別從安全性與時間效率兩個方面對改進后的Kerberos協議在HDFS下身份認證過程進行分析.
3.1安全性分析
通過對傳輸信息的數據簽名確保了發送者的身份的可識別,通過對傳輸數據的公鑰加密確保了只有私鑰持有者可以解密得到正確的數據,這一改進解決了原有認證機制的安全隱患,具體安全性分析如下:
1)相比較于改進前,改進后的認證協議對集群內時間同步性要求降低.由于只有擁有私鑰的一方才可以解密使用公鑰加密的數據并且公鑰加密體制破解難度大,使得時間戳在認證協議中變為輔助判斷票據有效性和防止重放攻擊的手段.
2)改進后的Kerberos協議引入公鑰加密體制,用戶各自本地化存儲私鑰,公鑰信息在集群內獲得,使得KDC服務器無需實現集中存儲包含所有用戶密碼機密敏感信息.通過此改進將極大降低了KDC服務可能面臨的安全隱患,即使KDC服務器被攻破,攻擊者也無法獲取用戶的私鑰信息,無法冒充用戶身份取得服務。
3)通過引入公鑰加密,使得改進后認證過程杜絕了字典攻擊的發生。
4)在用戶、KDC服務器、NameNode和DataNode的認證信息發送、接收過程中都使用了公私鑰加密及私鑰簽名,基于私鑰的私有性,使得信息發送方的身份真實性得到了有效的證明,防止了抵賴.
3.2效率分析
實驗仿真
測試系統中使用一臺服務器作為獨立密鑰分發中心KDC,一臺服務器作為NameNode節點,三臺服務器為DataNode節點,三臺服務器作為Client節點.測試系統使用Hadoop-1.0.O版本搭建,各個組成部分所使用的軟硬件配置如表1:
為最大限度的減少機器本身性能對實驗數據的影響,現將改進前后的兩套系統分別部署到相應的機器上,依次驗證兩套系統在不同請求規模級別下用戶認證過程所需的平均時間值.現在分別對以下幾種規模性請求情況進行測試:3個認證請求、15個認證請求、30個認證請求、45個認證請求、60個認證請求、90個認證請求、105個認證請求、120個認證請求、135個認證請求。
注:為使實驗接近真實規模,在有限的三臺Cli.ent上采用了改變請求信息中IDc字段值的辦法模擬不同的申請者,已達到規模性認證請求情況.
下圖是認證協議改進前后兩種情況所對應的平均時間測試的對比結果:
通過圖6關于認證協議改進前與改進后的對比實驗結果可以得出:在該實驗環境下,隨著請求次數增加二者均呈近似線性增長趨勢,但改進后增長幅度要小于改進前.在請求低于120以下時改進后時間需求要大于改進前,但隨著請求高于120次改進后時間效率更占優勢.總之,改進后更適用于大規模請求,更適合Hadoop集群環境下的身份認證請求過程。
4.結論
Hadoop經歷了從無安全機制到引入Kerberos身份認證機制的過程,本文也正是在基于Kerberos協議的基礎上結合Hadoop集群本身的特點,開展了相關身份認證安全研究,首先,分析并指出了原有Kerberos協議中對稱密鑰機制在Hadoop集群環境下可能會遇到的時鐘同步、KDC安全、字典攻擊以及抵賴機制等相關安全問題;其次,針對相關問題提出基于公鑰加密體制的Kerberos協議改進策略;最后通過相關分析驗證了改進協議在解決上述問題的可行性,當然Hadoop面臨的是一系列的安全問題,認證只是其中的保證集群安全的起始部分,還包括訪問控制、數據存儲安全等安全問題,這些問題也將是后續需要研究并解決的問題。