劉壽臣
摘要:為了保證在開往網(wǎng)絡(luò)中通信的安全性,認(rèn)證機(jī)制是不可缺少的工具。該文圍繞信息認(rèn)證方式中的Kerberos認(rèn)證系統(tǒng),闡述了Kerberos協(xié)議的基本思想,實現(xiàn)目標(biāo),詳細(xì)地介紹了Kerberos系統(tǒng)中所涉及到的相關(guān)概念,認(rèn)證原理和流程,其認(rèn)證流程包括3個子交換,分別是認(rèn)證服務(wù)器交換,票據(jù)服務(wù)器交換,客戶/服務(wù)器認(rèn)證應(yīng)用交換。此外,從單區(qū)域下的Kerberos認(rèn)證擴(kuò)展到多區(qū)域下的Kerberos協(xié)議工作方式,指出了其存在的局限性。Kerberos認(rèn)證協(xié)議主要應(yīng)用于網(wǎng)絡(luò)環(huán)境中的身份識別,已經(jīng)得到了廣泛的使用。
關(guān)鍵詞:Kerberos協(xié)議;認(rèn)證;多區(qū)域Kerberos
中圖分類號:TP393 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2016)16-0069-02
1 概述
伴隨著網(wǎng)絡(luò)和信息技術(shù)的高速發(fā)展,人類的生活變得更加的方便快捷,人類社會享受著網(wǎng)絡(luò)提供的各類服務(wù)。與此同時,也在遭受著來自網(wǎng)絡(luò)空間中的網(wǎng)絡(luò)攻擊,網(wǎng)絡(luò)威脅等。
當(dāng)越來越多的商業(yè)活動,事務(wù)處理通過開放不安全的通信網(wǎng)運行時,我們需要保證在開放網(wǎng)絡(luò)中通信的安全性,完成網(wǎng)絡(luò)安全系統(tǒng)的構(gòu)造,加密,訪問控制,數(shù)字簽名以及認(rèn)證等安全機(jī)制都必不可少[2]。
擁有一個良好的認(rèn)證機(jī)制可以有效地防止攻擊者假冒合法用戶,對訪問網(wǎng)絡(luò)的用戶進(jìn)行必要的身份合法性驗證,通過驗證協(xié)議確認(rèn)身份的用戶將按照此身份所獲得的權(quán)限在網(wǎng)絡(luò)中訪問所需要的資源。網(wǎng)絡(luò)認(rèn)證中非常有影響力的系統(tǒng)為Kerberos,它是一個在許多系統(tǒng)中獲得廣泛應(yīng)用的認(rèn)證協(xié)議,是Windows2000操作系統(tǒng)的網(wǎng)絡(luò)認(rèn)證基礎(chǔ)。
2 Kerberos簡介
Kerberos是一種網(wǎng)絡(luò)認(rèn)證協(xié)議,基于對稱密碼算法實現(xiàn),密碼設(shè)計基于Needham—Schroeder協(xié)議。其基本思想是使用可信第三方把某個用戶引見給某個服務(wù)器,引見方法是在用戶和服務(wù)器間分發(fā)會話密鑰建立安全信道。其設(shè)計目標(biāo)是通過密鑰系統(tǒng)為客戶端、服務(wù)器應(yīng)用程序提供強大的認(rèn)證服務(wù)。
該認(rèn)證過程的實現(xiàn)依賴于主機(jī)操作系統(tǒng)的認(rèn)證,無需基于主機(jī)地址的信任,不要求網(wǎng)絡(luò)上所有主機(jī)的物理安全,并假定網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)包可以被任意的讀取,修改和插入數(shù)據(jù)。
Kerberos認(rèn)證協(xié)議假定網(wǎng)絡(luò)當(dāng)中主機(jī)是不可信的,要求每個client對每次業(yè)務(wù)請求證明其身份,不要求用戶每次業(yè)務(wù)請求都輸入密碼。Kerberos系統(tǒng)的應(yīng)用廣泛,比如:構(gòu)造Windows網(wǎng)絡(luò)中的身份認(rèn)證,服務(wù)器和服務(wù)器之間的認(rèn)證,網(wǎng)格計算,計算機(jī)聯(lián)成網(wǎng)單點登錄訪問整個網(wǎng)絡(luò)的資源,訪問其他服務(wù)器不需要再次認(rèn)證。
Kerberos中三方分別是認(rèn)證服務(wù)器,用戶,服務(wù)器。有相關(guān)一系列的設(shè)計準(zhǔn)則:
1)用戶必須在工作站會話開始的時候驗證自己(登錄會話);
2)密碼永遠(yuǎn)不在網(wǎng)絡(luò)中明文傳輸或在存儲器中存儲;
3)每個用戶有一個口令;
4)每個業(yè)務(wù)有一個口令;
5)知道所有口令的唯一實體是認(rèn)證服務(wù)器。
Kerberos數(shù)據(jù)庫中有Workstation的密碼,Server密碼以及票據(jù)服務(wù)器TGS的密碼。
3 身份證明資源
3.1 Tickets(票據(jù))
每個業(yè)務(wù)請求需要一個Ticket,一個票據(jù)只能用于單個用戶訪問單個服務(wù)器,Ticket由“Ticket Granting Server”(TGS)分發(fā),TGS具備所有Server的加密密鑰。Tickets對clients是無意義的,clients只是使用它們接入服務(wù)器。TGS用服務(wù)器的加秘密鑰加密每個ticket,加密的tickets可在網(wǎng)上安全傳輸,只有對應(yīng)的服務(wù)器可以解密。大量的用戶每次申請票據(jù)會浪費資源而且加重TGS的工作負(fù)荷,所以每一個ticket擁有一定時間范圍內(nèi)的生存期,通常為幾個小時,這樣可以有效地減少適當(dāng)?shù)南到y(tǒng)負(fù)擔(dān)。
3.2 Ticket內(nèi)容
ü Client名,即用戶登錄名
ü Server名(服務(wù)器)
ü Client主機(jī)網(wǎng)絡(luò)地址
ü Client和Server之間的會話密鑰,用于加密client和server間的請求和響應(yīng)
ü Ticket的生存期
ü 產(chǎn)生時戳(發(fā)放ticket的時間)
TGS作為可信第三方,為client和server分配密鑰,通過TGS來驗證用戶的身份。
用戶在訪問某服務(wù)器時,只憑借ticket是不能做到的。因為在網(wǎng)絡(luò)環(huán)境中,存在很多的“壞人”,ticket可能會被竊取或重放,手持ticket的用戶和ticket中對應(yīng)的client名未必一致,為了訪問服務(wù)器,用戶除了ticket之外還需要提交認(rèn)證符。
3.3 Authenticators(認(rèn)證符)
認(rèn)證符證明client身份,包括client用戶名,client網(wǎng)絡(luò)地址,時戳(訪問服務(wù)器的時間)。認(rèn)證符以session key加密(Tickets內(nèi)的會話密鑰)。攻擊者可以截取票據(jù),但是無法得知會話密鑰,沒有辦法構(gòu)造合法認(rèn)證符。
服務(wù)器利用session key獲取認(rèn)證符的網(wǎng)絡(luò)地址和用戶名信息,如果和tickets中網(wǎng)絡(luò)地址用戶名一致,這樣就可以確認(rèn)用戶的身份[3]。
4 Kerberos協(xié)議流程
用戶欲訪問服務(wù)器資源,首先去Autntication Server(認(rèn)證服務(wù)器)進(jìn)行認(rèn)證。認(rèn)證成功,AS分配一個訪問Ticket Granting Server的票據(jù),憑借此ticket向Ticket Granting Server申請訪問Server準(zhǔn)入的憑證。過程包括3個交換,分別是認(rèn)證服務(wù)器交換(AS交換),票據(jù)授予服務(wù)器交換(TGS交換),客戶/服
務(wù)器交換(AP交換)。
4.1 AS(Authentication Server)交換
用戶訪問TGS之前必須訪問認(rèn)證服務(wù)器,Client向AS發(fā)送明文“認(rèn)證服務(wù)”請求(AS_REQ),請求內(nèi)容包括登錄名和TGS名稱,以獲得一個ticket用于與TGS通信,AS找到登錄名和TGS名對應(yīng)的密鑰。
AS生成一個ticket(TGticket):login name,TGS name,Client網(wǎng)絡(luò)地址,TGS會話密鑰,AS以TGS的秘密密鑰(AS和TGS的長期共享密鑰)加密此ticket。
AS同時產(chǎn)生一個隨機(jī)會話密鑰供client和TGS使用。會話密鑰和加密的ticket以用戶的秘密密鑰加密,將TGTicket返回給用戶。
TGT的兩部分都含有Client和“票據(jù)授予服務(wù)器”共享的會話密鑰TGS session key。
4.2 TGS交換
訪問TGS:Client以用戶口令作為秘密密鑰解密消息,Client這時獲得了會話密鑰和TGS通信的ticket,因為Client不知道TGS的秘密密鑰,所以看不到ticket內(nèi)部的內(nèi)容。
當(dāng)client想開始使用服務(wù),client必須獲得一個ticket,Client構(gòu)造一個請求發(fā)送給TGS。
TGS響應(yīng):TGS用其秘密密鑰解密ticket獲得TGS會話密鑰,TGS用會話密鑰解密認(rèn)證符,TGS檢查驗證登錄名,client地址和TGS server都正確,TGS驗證信任狀是最新的,一旦所有驗證通過,TGS產(chǎn)生一個ticket使client用于請求的server,Ticket用server密鑰加密。而且產(chǎn)生一個會話密鑰,用于client和server通信。以TGS會話密鑰加密整個消息發(fā)回給client。
4.3 AP交換
用戶訪問服務(wù)器 ,client以TGS會話密鑰解密TGS響應(yīng),Client現(xiàn)在獲得了與服務(wù)器通信的會話密鑰和ticket,Client用與和訪問TGS一樣格式的數(shù)據(jù)訪問服務(wù)器,從應(yīng)用服務(wù)器那里獲得應(yīng)用服務(wù)。
訪問TGS,AS作為client和TGS的第三方;訪問Server,TGS作為client和server的第三方[1]。
5 Kerberos區(qū)域和多區(qū)域的Kerberos
以上Kerberos協(xié)議原理的介紹基于一個區(qū)域內(nèi)的客戶端訪問同一個區(qū)域內(nèi)的服務(wù)器。多區(qū)域的Kerberos認(rèn)證要求,Kerberos服務(wù)器之間相互信任,兩兩之間有共享密鑰。區(qū)域A的Kerberos對本區(qū)域Client的認(rèn)證,區(qū)域B的Kerberos應(yīng)該相信區(qū)域A對用戶的認(rèn)證。Kerberos跨區(qū)域的密鑰交換流程見圖:
6 總結(jié)
本文對Kerberos認(rèn)證協(xié)議進(jìn)行了詳細(xì)的介紹,在Kerberos認(rèn)證過程中,每次業(yè)務(wù)請求需要一個ticket,ticket來源于TGS(訪問TGS的ticket由認(rèn)證服務(wù)器分發(fā))。工作站不能解密用服務(wù)器密鑰加密的tickets,每個ticket有個相應(yīng)的session key。此外,Tickets不能重用,具備有限的的生命期;Authenticators只能使用一次,失效很快。服務(wù)器需要維護(hù)一個信任狀(Authenticators)列表。Kerberoas跨區(qū)域服務(wù)存在局限性,Kerberos服務(wù)器兩兩之間有共享密鑰的要求導(dǎo)致當(dāng)Kerberos區(qū)域擴(kuò)展較大的情況下勢必帶來密鑰管理不便的結(jié)果。
參考文獻(xiàn):
[1] Wenbo Mao.現(xiàn)代密碼學(xué)理論與實踐[M].北京:電子工業(yè)出版社,2004.
[2] 沈鑫剡.計算機(jī)網(wǎng)絡(luò)安全[M].北京:人民郵電出版社,2011.
[3] 石淑華,池瑞楠.計算機(jī)網(wǎng)絡(luò)安全技術(shù)[M].北京:人民郵電出版社,2012.
[4] 劉冰. 在數(shù)字化校園中利用Portal和Ldap實現(xiàn)統(tǒng)一身份認(rèn)證的研究與應(yīng)用[D]. 沈陽:沈陽理工大學(xué), 2008.
[5] 曹福祥. 計算機(jī)身份認(rèn)證的技術(shù)分析和比較[J]. 中國科技信息,2007(7).
[6] 王媛媛. 電子商務(wù)中身份認(rèn)證技術(shù)的分析與比較[J].信息技術(shù)與信息化,2009(4).