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