摘 要: 分析比較了新Kerberos認(rèn)證協(xié)議" title="認(rèn)證協(xié)議">認(rèn)證協(xié)議與原Kerberos認(rèn)證協(xié)議,指出了對(duì)Kerberos改進(jìn)的一些主要方面,并指出了其局限性。在此基礎(chǔ)上提出了將公鑰" title="公鑰">公鑰密碼體制" title="密碼體制">密碼體制ECC與對(duì)稱密碼體制AES引入到Kerberos認(rèn)證協(xié)議中的方案。該方案不僅解決了Kerberos認(rèn)證協(xié)議中密鑰的分配和管理問題, 而且提高了Kerberos認(rèn)證協(xié)議的安全性,使其遭受口令攻擊的危險(xiǎn)得到降低,更好地解決了工業(yè)控制網(wǎng)絡(luò)" title="工業(yè)控制網(wǎng)絡(luò)">工業(yè)控制網(wǎng)絡(luò)的身份認(rèn)證問題。
關(guān)鍵詞: Kerberos協(xié)議 ECC算法 AES算法 Rijndael算法
美國麻省理工學(xué)院于2005年7月推出了新的Kerberos協(xié)議規(guī)范[1],是針對(duì)1993年Kerberos V5版本[2]的修改。不但改正了諸多缺點(diǎn),而且還給出了一些新的約定和新的操作選項(xiàng),使其更符合當(dāng)前應(yīng)用,大大提高了其安全性及效率。但由于對(duì)稱加密的固有特點(diǎn)使得新Kerberos協(xié)議仍有一定局限性,因此提出將公鑰密碼體制與對(duì)稱密碼體制相結(jié)合,即將ECC+AES方法引入到Kerberos認(rèn)證協(xié)議中對(duì)其作進(jìn)一步改進(jìn)。
1 Kerberos協(xié)議
1.1 Kerberos協(xié)議原理描述
在Kerberos協(xié)議中,AS為認(rèn)證服務(wù)器,可在用戶登錄時(shí)確認(rèn)用戶身份。AS與密鑰分配中心KDC類似,它與每個(gè)用戶共享一個(gè)密鑰。TGS為票據(jù)分配服務(wù)器,為用戶之間的通信分配票據(jù),使應(yīng)用服務(wù)器相信TGS持有者的身份真實(shí)性。Kerberos協(xié)議具體實(shí)現(xiàn)過程如圖1所示。從圖1可知,用戶C要訪問目標(biāo)服務(wù)器S,需要進(jìn)行六次協(xié)議交換,即:
(1)C->AS:C,TGS,Addr,TS1。
(2)AS->C:{Kc,tgs}Kc,TGT,TGT:{TGS,C,Addr,TS2,Lifetime2,Kc,tgs}Ktgs。
(3)C->TGS:S,TGT,Authenticator1;Authenticator1:{C,Addr,TS3}Kc,tgs。
(4)TGS->C:{Kc,s}Kc,tgs,Ts;Ts:{S,C,Addr,TS4,Lifetime4,Kc,s}Ks。
(5)C->S:S,Ts Authenticator2;Authenticator2:{C,Addr,TS5}Kc,s。
(6)S->C:{TS5+1}Kc,s。
1.2 新Kerberos協(xié)議規(guī)范
Kerberos協(xié)議本身并不是無限安全的,而且也不能自動(dòng)提供安全,它是建立在一些假設(shè)之上的[3],即只有在滿足如下假定的環(huán)境中它才能正常運(yùn)行:①不存在拒絕服務(wù)攻擊;主體必須保證他們的私鑰安全;②Kerberos無法應(yīng)付口令猜測(cè)攻擊;③網(wǎng)絡(luò)上每個(gè)主機(jī)的時(shí)鐘必須是松散同步[4]的。ITEF改進(jìn)了Kerberos協(xié)議規(guī)范(稱為新規(guī)范)并且取代了原來的Kerberos協(xié)議規(guī)范(稱為舊規(guī)范),新規(guī)范詳細(xì)闡明了很多在舊規(guī)范上沒有清楚描述的條款,增加了一些推薦性的執(zhí)行選項(xiàng)和一些新操作。其主要改進(jìn)有如下幾方面:
(1)為了與當(dāng)前應(yīng)用相適應(yīng),新規(guī)范采用了新的加密和校驗(yàn)方法[5][6],這是最主要的改進(jìn)。同時(shí)刪除了一些已不夠強(qiáng)壯的方法,如DES和MD5,而采用AES。表1為DES與AES(Rijndael)加密算法的性能比較。針對(duì)密鑰的生成,在新規(guī)范中,用戶模式下私鑰“可能”來自用戶的口令,因?yàn)橛脩裘荑€可能存儲(chǔ)在智能卡上,或者可以直接獲得而與口令無關(guān),而以前用戶私鑰僅通過用戶輸入口令生成。
(2)新規(guī)范依賴KDC檢查傳輸域,并將檢查標(biāo)志包含在票據(jù)內(nèi),以表明該檢查已經(jīng)執(zhí)行。目前Kerberos的執(zhí)行即使忽略域標(biāo)志或者不設(shè)置域標(biāo)志也不存在安全隱患。新規(guī)范增強(qiáng)了解析主機(jī)名的能力,當(dāng)Kerberos為一個(gè)命名主體提供認(rèn)證時(shí),能夠確保它所認(rèn)證的主體名字是完整的,并且就是它所期望通信的對(duì)象。
(3)新規(guī)范首次在參考文獻(xiàn)中提出應(yīng)用公開密鑰算法對(duì)認(rèn)證進(jìn)行初始化。
(4)新規(guī)范增強(qiáng)了Kerberos的擴(kuò)展性及兼容性。
1.3 新Kerberos協(xié)議的局限性
新規(guī)范雖然彌補(bǔ)了舊規(guī)范的許多環(huán)境缺陷和技術(shù)缺陷,但由于歷史原因,它還是存在許多局限性。作為一個(gè)認(rèn)證服務(wù),Kerberos在網(wǎng)絡(luò)上為主機(jī)身份的驗(yàn)證提供了一種方法,但Kerberos本身并不提供認(rèn)證。如應(yīng)用程序不應(yīng)該接受Kerberos 服務(wù)器上所發(fā)布的服務(wù)票據(jù)作為授權(quán)票據(jù),因?yàn)樵谶@種情況下可能會(huì)使應(yīng)用程序在其他密鑰分發(fā)系統(tǒng)內(nèi)部變得十分脆弱。
(1)密鑰管理" title="密鑰管理">密鑰管理和維護(hù)問題。新Kerberos防止口令猜測(cè)攻擊的能力還很弱,每一個(gè)主體必須對(duì)自身的密鑰保密。如果密鑰被某個(gè)入侵者獲得,就會(huì)偽裝成該主機(jī)或者其他關(guān)聯(lián)主機(jī)的服務(wù)器。
(2)對(duì)時(shí)間同步性要求很高。在整個(gè)認(rèn)證過程中都要通過時(shí)間戳的比較,才能判明合法身份。這就要求對(duì)整個(gè)網(wǎng)絡(luò)內(nèi)的時(shí)鐘實(shí)現(xiàn)準(zhǔn)同步。這對(duì)于一個(gè)擁有不同類型終端的分布式網(wǎng)絡(luò)來說是很難實(shí)現(xiàn)的。
(3)主機(jī)標(biāo)識(shí)符在一段時(shí)間內(nèi)禁止重復(fù)使用。訪問控制的一個(gè)典型模式使用訪問控制列表(ACL)向特定主機(jī)授權(quán)許可。如果過時(shí)的入口仍然保存著已經(jīng)被刪除的主機(jī),而該主機(jī)標(biāo)識(shí)符是新的,則該新的主機(jī)會(huì)繼承舊的記錄在ACL入口的權(quán)限。即當(dāng)不再重新使用主機(jī)標(biāo)識(shí)符時(shí),無意的接入威脅即可避免。
2 Kerberos協(xié)議的改進(jìn)方案
2.1 基于對(duì)稱密碼體制的Kerberos協(xié)議的改進(jìn)
參考文獻(xiàn)[7]和[8]中提出了利用公開密鑰加密進(jìn)行對(duì)稱加密密鑰分配的方法。該方法是在通信雙方通過公開密鑰證書得到對(duì)方的公開密鑰的基礎(chǔ)上實(shí)現(xiàn)的。
2.2 基于ECC+AES的數(shù)據(jù)傳輸加密的Kerberos改進(jìn)方案
在Kerberos認(rèn)證協(xié)議中,全都采用公開密鑰密碼體制傳送機(jī)密信息是不夠安全的。在傳送機(jī)密信息的Client/Server雙方,如果使用某個(gè)對(duì)稱密鑰密碼體制并同時(shí)使用不對(duì)稱密鑰密碼體制傳送對(duì)稱密鑰密碼體制的密鑰,就可以綜合發(fā)揮兩種密碼體制的優(yōu)點(diǎn),即對(duì)稱密鑰密碼體制的高速性、簡便性和不對(duì)稱密鑰密碼體制的密鑰管理的方便性、安全性。AES算法與RSA算法、ECC算法的特點(diǎn)比較如表2所示。
由于AES和RSA、ECC各具所長,而ECC與RSA在相同安全強(qiáng)度下具有更快的速度和更低的存儲(chǔ)要求,更符合高實(shí)時(shí)性工業(yè)控制網(wǎng)絡(luò)的要求。綜合AES和ECC的優(yōu)點(diǎn),得到一種新的加密方案,其基本原理為:數(shù)據(jù)在Kerberos Client/Server雙方通信之前,發(fā)送方隨機(jī)生成一個(gè)加密密鑰,用AES算法對(duì)需傳送的數(shù)據(jù)加密。然后再用ECC算法對(duì)該密鑰進(jìn)行加密并實(shí)現(xiàn)數(shù)字簽名。這樣接收方在接收到該密文和被加了密的密鑰后,同樣用ECC解密出此隨機(jī)密鑰,再用此隨機(jī)密鑰對(duì)密文解密。這樣的加密方案既有AES算法的快捷特點(diǎn),又有ECC算法的保密性和方便性特點(diǎn)。
2.3 具體改進(jìn)方案
改進(jìn)后的Kerberos認(rèn)證過程如圖2所示。
改進(jìn)后的Kerberos認(rèn)證過程如下:
(1)C->AS:C,TGS,Pc。
(2)AS->C:Cc,Ctgs;Cc:{C,Pc,T1}P-1ca;Ctgs:{TGS,Ptgs,T2}P-1ca。
(3)C->TGS:TGS,{Kr,Cc,Authenticator,T3}Ptgs;Authenticator:{C,TGS,Ptgs,Kr,T3}P-1c。
(4)TGS->C:TGT,{C,TGS,Kc,tgs,T4}Kr;TGT:{TGS,C,Addr,T5,Lifetime5,Kc,tgs}Ptgs。
(5)C->TGS:S,TGT,Authenticator1;Authenticator1:{C,Addr,TS3}Kc,tgs。
(6)TGS->C:{Kc,s}Kc,tgs,Ts;Ts:{S,C,Addr,TS4,Lifetime4,Kc,s}Ks。
(7)C->S:S,Ts,Authenticator2;Authenticator2;{C,Addr,TS5}Kc,s。
(8)S->C:{TS5+1}Kc,s。
以上描述中,關(guān)鍵是對(duì)1.1節(jié)中的描述步驟(1)和(2)的改進(jìn),修改后變成現(xiàn)在的(1)~(4)步;而步驟(5)~(8)與1.1節(jié)中的步驟(3)~(6)一樣。這里主要對(duì)前四步進(jìn)行說明:
(1)用戶發(fā)送自己的公鑰、用戶名和TGS服務(wù)器名向CA請(qǐng)求自己和TGS的公鑰證書。
(2)CA檢查用戶身份合法后用自己的私鑰為用戶和TGS簽發(fā)公鑰證書,證書中包含有用戶、TGS的信息以及證書的簽發(fā)時(shí)間。
(3)用戶收到公鑰證書后,用已由安全通道得到的CA的公鑰解密,得到TGS的公鑰。然后用TGS的公鑰加密報(bào)文向TGS發(fā)送,請(qǐng)求驗(yàn)證身份,請(qǐng)求報(bào)文包括用戶公鑰證書、隨機(jī)產(chǎn)生的一次性會(huì)話密鑰Kr、時(shí)間截和證書。時(shí)間T3是該報(bào)文的產(chǎn)生時(shí)間,TGS在收到該報(bào)文后,計(jì)算T3和收到報(bào)文時(shí)間的差值,如果相差太大則拒絕接受該請(qǐng)求報(bào)文,這樣做可以防止重放攻擊。Kr用于TGS對(duì)應(yīng)答報(bào)文進(jìn)行加密。證書用于驗(yàn)證用戶的身份。TGS收到用戶的請(qǐng)求報(bào)文后,首先用自己的私鑰解密,得到用戶公鑰證書、一次性會(huì)話密鑰Kr和證書。然后TGS用證書中的用戶公鑰對(duì)證書進(jìn)行解密,用得到的信息驗(yàn)證用戶身份。
(4)TGS通過對(duì)用戶的身份驗(yàn)證后,產(chǎn)生應(yīng)答報(bào)文。應(yīng)答報(bào)文包括兩部分,一部分是訪問TGS用的票據(jù)TGT,TGT與傳統(tǒng)Kerberos協(xié)議中的TGT完全相同;另一部分是加密數(shù)據(jù),包含用戶名、TGS服務(wù)器名、用戶與TGS共享的會(huì)話密鑰以及認(rèn)證時(shí)間,這些數(shù)據(jù)用一次性會(huì)話密鑰加密,用戶收到后,就得到訪問TGS的票據(jù)TGT。用Kr對(duì)加密的數(shù)據(jù)解密后,就得到與TGS會(huì)話的密鑰Kc、tgs,這樣用戶就可以用TGT、Kc和tgs向TGS發(fā)送傳統(tǒng)的TGS請(qǐng)求。
改進(jìn)后的Kerberos身份驗(yàn)證系統(tǒng)的安全性得到了極大提高,如表3所示。
本文深入研究了新的Kerberos認(rèn)證協(xié)議規(guī)范,指出了其局限性。提出了在Kerberos協(xié)議中引入ECC+AES的數(shù)據(jù)傳輸加密的改進(jìn)方法,在一定程度上克服了傳統(tǒng)Kerberos認(rèn)證協(xié)議中密鑰管理困難、容易受到口令攻擊和對(duì)時(shí)間同步性要求高的缺點(diǎn),提高了Kerberos認(rèn)證協(xié)議的安全性,同時(shí)提高了身份認(rèn)證速度,使其更符合工業(yè)控制網(wǎng)絡(luò)的高實(shí)時(shí)性要求,可以更好地解決工業(yè)控制網(wǎng)絡(luò)的身份認(rèn)證問題。
參考文獻(xiàn)
1 C Neuman.The kerberos network authentication service(V5).Internet RFC 4120,July 2005
2 C Neuman.The kerberos network authentication service(V5).Internet RFC 1510,September 1993
3 Frederick Butler,Iliano Cervesato,Aaron D Jaggard et al. A formal analysis of some properties of kerberos 5 using MSR.IEEE COMPUTER SOCIETY,2002;(11)
4 Ian Downnard.Public-key cryptography extensions into Kerberos.2002 IEEE POTENTIAL,2003
5 K Raeburn.Encryption and Checksum Specifications for Kerberos 5.Internet RFC 3961,F(xiàn)ebruary 2005
6 K Raeburn.Advanced encryption standard(AES) encryption for kerberos 5.Internet RFC 3962,F(xiàn)ebruary 2005
7 劉克龍,卿斯?jié)h,蒙 楊.一種利用公鑰體制改進(jìn)Kerberos協(xié)議的方法.軟件學(xué)報(bào),2001;(12):874~877
8 莫 燕,張玉清,李學(xué)干.對(duì)Kerberos協(xié)議的攻擊及對(duì)策研究.計(jì)算機(jī)工程,2005;(5):66~98
9 肖國鎮(zhèn),白恩健,劉曉娟.AES密碼分析的若干新進(jìn)展.電子學(xué)報(bào),2003;(10):1549~1554
10 Joan Daemen Vincent Rijmen.高級(jí)加密標(biāo)準(zhǔn)(AES)算法-Rijndael的設(shè)計(jì).北京:清華大學(xué)出版社,2003