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