版權(quán)歸原作者所有,如有侵權(quán),請聯(lián)系我們

[科普中國]-Kerberos

科學(xué)百科
原創(chuàng)
科學(xué)百科為用戶提供權(quán)威科普內(nèi)容,打造知識科普陣地
收藏

Kerberos是一種計算機網(wǎng)絡(luò)授權(quán)協(xié)議,用來在非安全網(wǎng)絡(luò)中,對個人通信以安全的手段進行身份認證。這個詞又指麻省理工學(xué)院為這個協(xié)議開發(fā)的一套計算機軟件。

含義Kerberos 是一種網(wǎng)絡(luò)認證協(xié)議,其設(shè)計目標是通過密鑰系統(tǒng)為客戶機 / 服務(wù)器應(yīng)用程序提供強大的認證服務(wù)。該認證過程的實現(xiàn)不依賴于主機操作系統(tǒng)的認證,無需基于主機地址的信任,不要求網(wǎng)絡(luò)上所有主機的物理安全,并假定網(wǎng)絡(luò)上傳送的數(shù)據(jù)包可以被任意地讀取、修改和插入數(shù)據(jù)。在以上情況下, Kerberos 作為一種可信任的第三方認證服務(wù),是通過傳統(tǒng)的密碼技術(shù)(如:共享密鑰)執(zhí)行認證服務(wù)的。

認證過程具體如下:客戶機向認證服務(wù)器(AS)發(fā)送請求,要求得到某服務(wù)器的證書,然后 AS 的響應(yīng)包含這些用客戶端密鑰加密的證書。證書的構(gòu)成為: 1) 服務(wù)器 “ticket” ; 2) 一個臨時加密密鑰(又稱為會話密鑰 “session key”) ??蛻魴C將 ticket (包括用服務(wù)器密鑰加密的客戶機身份和一份會話密鑰的拷貝)傳送到服務(wù)器上。會話密鑰可以(現(xiàn)已經(jīng)由客戶機和服務(wù)器共享)用來認證客戶機或認證服務(wù)器,也可用來為通信雙方以后的通訊提供加密服務(wù),或通過交換獨立子會話密鑰為通信雙方提供進一步的通信加密服務(wù)。

上述認證交換過程需要只讀方式訪問 Kerberos 數(shù)據(jù)庫。但有時,數(shù)據(jù)庫中的記錄必須進行修改,如添加新的規(guī)則或改變規(guī)則密鑰時。修改過程通過客戶機和第三方 Kerberos 服務(wù)器(Kerberos 管理器 KADM)間的協(xié)議完成。有關(guān)管理協(xié)議在此不作介紹。另外也有一種協(xié)議用于維護多份 Kerberos 數(shù)據(jù)庫的拷貝,這可以認為是執(zhí)行過程中的細節(jié)問題,并且會不斷改變以適應(yīng)各種不同數(shù)據(jù)庫技術(shù)。

Kerberos又指麻省理工學(xué)院為這個協(xié)議開發(fā)的一套計算機網(wǎng)絡(luò)安全系統(tǒng)。系統(tǒng)設(shè)計上采用客戶端/服務(wù)器結(jié)構(gòu)與DES加密技術(shù),并且能夠進行相互認證,即客戶端和服務(wù)器端均可對對方進行身份認證。可以用于防止竊聽、防止replay攻擊、保護數(shù)據(jù)完整性等場合,是一種應(yīng)用對稱密鑰體制進行密鑰管理的系統(tǒng)。Kerberos的擴展產(chǎn)品也使用公開密鑰加密方法進行認證。1

歷史麻省理工研發(fā)了Kerberos協(xié)議來保護Project Athena提供的網(wǎng)絡(luò)服務(wù)器。這個協(xié)議以希臘神話中的人物Kerberos(或者Cerberus)命名,他在希臘神話中是Hades的一條兇猛的三頭保衛(wèi)神犬。目前該協(xié)議存在一些版本,版本1-3都只有麻省理工內(nèi)部發(fā)行。

Kerberos版本4的主要設(shè)計者Steve Miller和Clifford Neuman,在1980年末發(fā)布了這個版本。這個版本主要針對Project Athena。版本5由John Kohl和Clifford Neuman設(shè)計,在1993年作為RFC 1510頒布(在2005年由RFC 4120取代),目的在于克服版本4的局限性和安全問題。

麻省理工在版權(quán)許可的情況下,制作了一個Kerberos的免費實現(xiàn)工具,這種情況類似于BSD。在2007年,麻省理工組成了一個Kerberos協(xié)會,以此推動Kerberos的持續(xù)發(fā)展。

因為使用了DES加密算法(用56比特的密鑰),美國出口管制當局把Kerberos歸類為軍需品,并禁止其出口。一個非美國設(shè)計的Kerberos版本4的實現(xiàn)工具KTH-KRB由瑞典皇家理工研制,它使得這套系統(tǒng)在美國更改密碼出口管理條例(2000年)前,在美國境外就可以使用。瑞典的實現(xiàn)工具基于一個叫做eBones的版本,而eBones基于麻省理工對外發(fā)行的基于Kerberos版本4的補丁9的Bones(跳過了加密公式和對它們的函數(shù)調(diào)用)。這些在一定程度上決定了Kerberos為什么沒有被叫做eBones版。Kerberos版本5的實現(xiàn)工具,Heimdal,基本上也是由發(fā)布KTH-KRB的同一組人發(fā)布。

Windows2000和后續(xù)的操作系統(tǒng)都默認Kerberos為其默認認證方法。RFC 3244記錄整理了微軟的一些對Kerberos協(xié)議軟件包的添加。RFC4757"微軟Windows2000Kerberos修改密碼并設(shè)定密碼協(xié)議"記錄整理了微軟用RC4密碼的使用。雖然微軟使用了Kerberos協(xié)議,卻并沒有用麻省理工的軟件。

蘋果的Mac OS X也使用了Kerberos的客戶和服務(wù)器版本。

Red Hat Enterprise Linux4 和后續(xù)的操作系統(tǒng)使用了Kerberos的客戶和服務(wù)器版本。

IETF Kerberos的工作小組在2005年更新了說明規(guī)范,最近的更新包括:

"加密和校驗和細則"(RFC 3961)

"針對Kerberos版本5的高級加密算法(AES)加密"(RFC 3962)

Kerberos版本5說明規(guī)范的新版本"Kerberos網(wǎng)絡(luò)認證服務(wù)(版本5)"(RFC 4120)。這個版本廢棄了早先的RFC 1510,用更細化和明確的解釋說明了協(xié)議的一些細節(jié)和使用方法。

GSS-API的一個新版本"Kerberos版本5 普通的安全服務(wù)應(yīng)用軟件交互機制:版本2"(RFC 4121)1

工作簡要大概地說一下Kerberos是如何工作的:

假設(shè)你要在一臺電腦上訪問另一個服務(wù)器(你可以發(fā)送telnet或類似的登錄請求)。你知道服務(wù)器要接受你的請求必須要有一張Kerberos的“入場券”。

要得到這張入場券,你首先要向驗證服務(wù)器(AS)請求驗證。驗證服務(wù)器會創(chuàng)建基于你的密碼(從你的用戶名而來)的一個“會話密鑰”(就是一個加密密鑰),并產(chǎn)生一個代表請求的服務(wù)的隨機值。這個會話密鑰就是“允許入場的入場券”。

然后,你把這張允許入場的入場券發(fā)到授權(quán)服務(wù)器(TGS)。TGS物理上可以和驗證服務(wù)器是同一個服務(wù)器,只不過它現(xiàn)在執(zhí)行的是另一個服務(wù)。TGS返回一張可以發(fā)送給請求服務(wù)的服務(wù)器的票據(jù)。

服務(wù)器或者拒絕這張票據(jù),或者接受這張票據(jù)并執(zhí)行服務(wù)。

因為你從TGS收到的這張票據(jù)是打上時間戳的,所以它允許你在某個特定時期內(nèi)(一般是八小時)不用再驗證就可以使用同一張票來發(fā)出附加的請求。使這張票擁有一個有限的有效期使其以后不太可能被其他人使用。

實際的過程要比剛才描述的復(fù)雜得多。用戶過程也會根據(jù)具體執(zhí)行有一些改變。2

協(xié)議內(nèi)容協(xié)議的安全主要依賴于參加者對時間的松散同步和短周期的叫做Kerberos票據(jù)的認證聲明。 下面是對這個協(xié)議的一個簡化描述,將使用以下縮寫:

AS(Authentication Server)= 認證服務(wù)器

KDC(Key Distribution Center)= 密鑰分發(fā)中心

TGT(Ticket Granting Ticket)= 票據(jù)授權(quán)票據(jù),票據(jù)的票據(jù)

TGS(Ticket Granting Server)= 票據(jù)授權(quán)服務(wù)器

SS(Service Server)= 特定服務(wù)提供端

客戶端用戶發(fā)送自己的用戶名到KDC服務(wù)器以向AS服務(wù)進行認證。KDC服務(wù)器會生成相應(yīng)的TGT票據(jù),打上時間戳,在本地數(shù)據(jù)庫中查找該用戶的密碼,并用該密碼對TGT進行加密,將結(jié)果發(fā)還給客戶端用戶。該操作僅在用戶登錄或者kinit申請的時候進行。 客戶端收到該信息,并使用自己的密碼進行解密之后,就能得到TGT票據(jù)了。這個TGT會在一段時間之后失效,也有一些程序(session manager)能在用戶登陸期間進行自動更新。 當客戶端用戶需要使用一些特定服務(wù)(Kerberos術(shù)語中用"principal"表示)的時候,該客戶端就發(fā)送TGT到KDC服務(wù)器中的TGS服務(wù)。當該用戶的TGT驗證通過并且其有權(quán)訪問所申請的服務(wù)時,TGS服務(wù)會生成一個該服務(wù)所對應(yīng)的ticket和session key,并發(fā)還給客戶端。客戶端將服務(wù)請求與該ticket一并發(fā)送給相應(yīng)的服務(wù)端即可。具體的流程請看下面的描述。

其在網(wǎng)絡(luò)通訊協(xié)定中屬于顯示層。

簡單地說,用戶先用共享密鑰從某認證服務(wù)器得到一個身份證明。隨后,用戶使用這個身份證明與SS通信,而不使用共享密鑰。2

缺陷1.失敗于單點:它需要中心服務(wù)器的持續(xù)響應(yīng)。當Kerberos服務(wù)宕機時,沒有人可以連接到服務(wù)器。這個缺陷可以通過使用復(fù)合Kerberos服務(wù)器和缺陷認證機制彌補。

2.Kerberos要求參與通信的主機的時鐘同步。票據(jù)具有一定有效期,因此,如果主機的時鐘與Kerberos服務(wù)器的時鐘不同步,認證會失敗。默認設(shè)置要求時鐘的時間相差不超過10分鐘。在實踐中,通常用網(wǎng)絡(luò)時間協(xié)議后臺程序來保持主機時鐘同步。

3.管理協(xié)議并沒有標準化,在服務(wù)器實現(xiàn)工具中有一些差別。

4.因為所有用戶使用的密鑰都存儲于中心服務(wù)器中,危及服務(wù)器的安全的行為將危及所有用戶的密鑰。

5.一個危險客戶機將危及用戶密碼。1

專業(yè)詞語一種認證標準,通過使用一臺中央服務(wù)器來提供“票據(jù)”,供其他在網(wǎng)絡(luò)上提供資源的服務(wù)器進行識別。在Windows 2000, XP, Server 2003, Vista, 以及Longhorn, 還有UNIX系統(tǒng),都對它進行支持。1

本詞條內(nèi)容貢獻者為:

王偉 - 副教授 - 上海交通大學(xué)