溫博為,吳振強,張麗娟
(陜西師范大學 計算機科學學院,陜西 西安710062)
Kerberos協(xié)議是美國麻省理工學院提出的基于可信第三方的認證協(xié)議[1]。協(xié)議使用對稱密鑰實現(xiàn)通信數(shù)據(jù)的加密以及通信實體的身份認證。而協(xié)議本身存在以下的缺陷[2,3]:①客戶端的完整性存在隱患,一旦客戶端被病毒感染,完整性遭到破壞,將使得認證服務器AS(authentication server)和應用服務器S(server)處于被攻擊的危險之中;②密鑰的存儲,協(xié)議的安全性,保密性完全依賴于對稱密鑰的安全存儲。一旦密鑰遭到竊取或是破壞,那么整個協(xié)議的安全性將無法保障;③AS與客戶端C(client)會話密鑰是由C的口令生成,因此協(xié)議存在口令猜測攻擊的危險。
文獻 [2]提出了一種利用公鑰體制改進Kerberos協(xié)議的方法。將公鑰體制引入Kerberos協(xié)議,解決了缺陷③文獻 [3]提出用TPM (trusted platform module)增強Kerberos協(xié)議的安全性,將完整性度量引入Kerberos協(xié)議,從技術上提出了一套解決客戶端的完整性的問題,但方案中存在使用AIK (attestation identity keys)加密的錯誤,并且方案如何實現(xiàn),實現(xiàn)有何難度,都沒有具體的研究。
隨著可信計算平臺的推廣與普及,未來基于可信平臺的安全認證協(xié)議的實現(xiàn)技術將是一個非常重要的研究內容。論文以可信Kerberos安全協(xié)議的加固為例,設計了可信平臺下的Kerberos協(xié)議安全加固方案,并在Linux環(huán)境下根據(jù) TCG (trusted computing group)發(fā)布的 TPM V1.2規(guī)范搭建了可信計算平臺。通過可信平臺下客戶端完整性的度量和驗證,以及簽名密鑰的生成、存儲和使用,對加固方案進行了實現(xiàn)與測試。結果表明,可信平臺下的Kerberos協(xié)議能夠保證網(wǎng)絡傳輸?shù)陌踩?,同時也能保證網(wǎng)絡終端的完整性和密鑰的安全性。使得整個協(xié)議認證過程從網(wǎng)絡傳輸?shù)浇K端構成了一個完整的安全框架。
TCG對可信計算的定義是:如果一個實體是可信的,那么它的行為總是以期望的方式、朝著預期的目標運行[4]。TCG提出的可信計算平臺規(guī)范能夠提供可信計算服務的計算機軟硬件實體,它能夠保證系統(tǒng)的可靠性、可用性以及信息和行為的安全性[5]??尚牌脚_至少需要提供以下3個特征[6,7]:①完整性:可信的測量描述平臺配置的度量值;②數(shù)據(jù)和密鑰的存儲和保護:數(shù)據(jù)和密鑰以只讀的方式存儲在TPM中以確保數(shù)據(jù)和密鑰的安全;③真實性:通過AIK證書以及平臺證書驗證平臺的真實性。
通過對這些特征的分析可以看出,可信計算平臺可以證實平臺和數(shù)據(jù)的完整性和真實性、能夠保護關鍵數(shù)據(jù)以及密鑰的安全性[8]??尚牌脚_從啟動開始,以可信度量根為基礎對平臺的硬件和軟件進行度量,用戶獲得這些度量值并把它和從可靠環(huán)境下獲得的度量值比較,就能判斷平臺是否可信。
可信平臺技術原理如圖1所示。最底層的是TPM硬件芯片。TPM是可信計算平臺的核心,平臺所有的密碼相關的計算、存儲、以及完整性度量等功能,全部由TPM完成。TPM加載了驅動程序后,通過TPM接口與上層的TCG軟件協(xié)議棧Tss(TCG software stack)進行交互。其中Tss自上而下包括TSP、TCS以及TDDL。頂層的應用程序通過調用TSP接口與Tss交互,而Tss則向下通過指令的方式實現(xiàn)TPM功能。
圖1 可信平臺技術原理
根據(jù)上述原理,論文在Linux環(huán)境下,用TPM模擬系統(tǒng) (TPM emulator)來模擬最底層的TPM硬件。同時使用一款開源的基于JAVA編寫的jTss作為與TPM交互軟件協(xié)議棧[9]。JAVA 語言通過調用jTss中 TSP接口[10],實現(xiàn)了向TPM發(fā)送指令,并調取了TPM部分功能。
目前廣泛使用的Kerberos V5協(xié)議認證過程分為六步,其中C是客戶端,AS是認證服務器,TGS是票據(jù)服務器,S是應用服務器,協(xié)議的參與方如圖2所示。
協(xié)議的具體過程是:①為了訪問S,C先把信息發(fā)送給AS;②AS核對C的信息后產(chǎn)生票據(jù),用對稱密鑰加密后發(fā)送給C;③C把票據(jù)1和身份信息發(fā)送給TGS;④TGS驗證C的票據(jù)1和身份后返回票據(jù)2給C;⑤最后,C將票據(jù)2和身份信息發(fā)送給S;⑥S驗證票據(jù)2及身份,返回一個是否允許服務的結果。
從上述過程中可以看出Kerberos V5協(xié)議最大的問題是缺乏對計算機網(wǎng)絡終端的保護,密鑰的安全存儲以及缺少不可否認機制。因此,論文引入可信計算理論,設計了可信平臺下的Kerberos協(xié)議安全加固方案。方案加入了對C完整性度量與驗證,使用TPM產(chǎn)生和存儲簽名密鑰,并將數(shù)字簽名引入票據(jù)中。修改后的協(xié)議流程如下:
其中:C,S,AS,TGS分別表示客戶端,應用服務器,認證服務器,票據(jù)服務器。IDc,IDs,IDtgs分別表示C,S,TGS的身份標識,ADc,ADtgs表示C和TGS的網(wǎng)絡地址。TS1-TS5表示時間戳。Kc,as,Kas,tgs,Ktgs,s是 C與 AS,AS與TGS,TGS與S的共享密鑰。Kc,tgs,Kc,s表示 AS為C與TGS,S通信生成的密鑰。Lifetime是票據(jù)的有效期。
從上述流程可以看出,論文主要對原Kerberos協(xié)議做出了3處改動:①在過程 (1)中,加入signskc(PCR),即讀取客戶端PCR值,并使用簽名密鑰對其簽名;②過程(2)中,將原協(xié)議中使用口令生成的對稱密鑰替換為客戶端C的公鑰進行加密操作;③在過程 (2)、(3)、(4)、(5)的票據(jù)中加入相應的數(shù)字簽名。從這3處改動可以看出,修改后的Kerberos安全加固方案比原協(xié)議增加了對客戶端C的完整性驗證,增強了對密鑰的保護以及不可抵賴性。下面將對加固方案的實現(xiàn)做具體的分析。
為了驗證Kerberos協(xié)議安全加固方案的可行性,論文在Linux系統(tǒng)下,搭建了可信計算平臺。通過調用可行平臺的功能接口,實現(xiàn)了協(xié)議的各個流程。由于協(xié)議的6次交互實現(xiàn)具有相似性,因此論文以協(xié)議交互流程中 (1)、(2)為例,給出詳細的實現(xiàn)代碼,流程 (3)-(6)則不再贅述。最后論文給出整個加固方案中的3個關鍵函數(shù)的代碼。
首先,客戶端讀取TPM中PCR 0-15的值,并且通過TPM產(chǎn)生簽名密鑰,使用簽名密鑰的私鑰給PCR簽名。將自身ID,票據(jù)服務器ID,時間戳以及簽名發(fā)送給認證服務器AS。整個過程實現(xiàn)代碼如下:
public void Client_to_AS ()//客戶端發(fā)送數(shù)據(jù)給AS函數(shù)
AS收到C發(fā)送的數(shù)據(jù)后,先驗證簽名并且比對PCR值,若驗證成功,則產(chǎn)生票據(jù)并使用C的公鑰加密C與TGS的會話密鑰 Kc,tgs,發(fā)送給C。整個過程實現(xiàn)代碼如下:
C收到AS發(fā)送的數(shù)據(jù)后,用私鑰解密信息,得到與TGS通信的會話密鑰。至此,C與AS交互過程結束。
在整個協(xié)議實現(xiàn)中,有3個涉及到可信計算機平臺技術的函數(shù),這些函數(shù)是協(xié)議實現(xiàn)過程中的關鍵技術。下面詳細介紹交互過程中的3個關鍵函數(shù),同時也是論文創(chuàng)新之處。這3個函數(shù)分別為:讀取PCR值,生成簽名密鑰并產(chǎn)生簽名,驗證簽名。
為了演示與測試Kerberos安全加固方案的可行性和可靠性,論文以安全加固方案為核心,設計了并實現(xiàn)了一套身份認證系統(tǒng)。
如圖3所示,在分別輸入認證服務器ip和應用服務器ip后,點擊 “登陸”按鈕,系統(tǒng)就會按照輸入框中所輸入的ip地址開始連接服務器。整個認證過程按照Kerberos協(xié)議安全加固方案執(zhí)行,并將認證結果顯示在底部的文本框中。
若連接成功,并且驗證身份或票據(jù)成功,則成功登陸。若中間某個步驟出現(xiàn)問題,則客戶端將錯誤信息顯示在底部文本框中,并且斷開連接。
論文使用可信平臺技術,對Kerberos V5協(xié)議進行改進,提出了Kerberos安全加固方案,并且在可信計算平臺環(huán)境下使用JAVA語言,通過調用jTss軟件協(xié)議棧的TSP接口,實現(xiàn)了該方案。通過對客戶端的完整性驗證,以及簽名密鑰的生成和使用,保證了終端的完整性以及密鑰的安全性,增加不可否認性。下一步將引入身份認證密鑰AIK (attestation identity keys)和 綁 定 密 鑰 (bindkeys),使得協(xié)議具有驗證真實性的功能,進一步保證了數(shù)據(jù),密鑰在傳輸過程中的安全性。
圖3 身份認證登陸系統(tǒng)
:
[1]Neuman C.RFC 4120the kerberos network authentication service (v5)[s].2005.
[2]SUN Congyou,XU Guosheng,ZHONG Shangqin.A kerberos authentication scheme based on public key[C]//Wuhan:8th China Communication Society Academic Conference,2011:601-604 (in Chinese).[孫從友,徐國勝,鐘尚勤.一種基于公鑰密碼體制的Kerberos認證方案 [C]//武漢:第八屆中國通信學術年會,2011:601-604.]
[3]LIU Ping,CHI Yaping,F(xiàn)ANG Yong.Improving kerberos protocol security with TPM [J].Computer Engineering and Design,2007,28 (18):4351-4353 (in Chinese). [劉平,池亞平,方勇.用TPM增強Kerberos協(xié)議的安全性 [J].計算機工程與設計,2007,28 (18):4351-4353.]
[4]ZHANG Huanguo,ZHAO Bo.Trusted computing[M].Wuhan:Wuhan University Press,2011:17-22 (in Chinese).[張煥國,趙波.可信計算 [M].武漢:武漢大學出版社,2011:17-22.]
[5]SHENG Changxiang,ZHANG Huanguo,WANG Huaimin,et al.Research and development of trusted computing[J].Science in China:Information Science,2010,40 (1):139-166 (in Chinese).[沈昌祥,張煥國,王懷民,等.可信計算的研究與發(fā)展 [J].中國科學:信息科學,2010,40 (1):139-166.]
[6]ZHANG Huanguo,LUO Jie,JIN Gang.Development of trusted computing research [J].Journal of Wuhan University(Physical Edition),2006 (5):513-518 (in Chinese).[張煥國,羅捷,金剛.可信計算研究進展 [J].武漢大學學報(理學版),2006 (5):513-518.]
[7]ZHAO Jia.Research on key technology of trusted computing authentication[D].Beijing:Beijing Jiaotong University,2008(in Chinese).[趙佳.可信認證關鍵技術研究 [D].北京:北京交通大學,2008.]
[8]CHEN Jun.Security analysis of trusted platform module and application[D].Beijing:Institute of Computing Technology Chinese Academy of Sciences,2006 (in Chinese). [陳軍.可信平臺模塊安全性分析與應用 [D].北京:中國科學院計算技術研究所,2006.]
[9]IAIK.Trusted computing for the Java (tm)Platform [EB/OL].[2011-09-16].http://trustedjava.sourceforge.net/.
[10]WANG Xingkui,PENG Xinguang.The trusted computing environment construction based on JTSS [C]//Jilin:International Conference on Mechatronic Science Electric Engineering and Computer,2011 (8):2252-2256.