3.7.3 Kerberos
從Needham-Schroeder協(xié)議派生出來(lái)的一個(gè)重要且實(shí)用的協(xié)議是Kerberos,這是一個(gè)源于MIT的分布式訪問(wèn)控制系統(tǒng),現(xiàn)在是Windows中的標(biāo)準(zhǔn)身份驗(yàn)證工具之一[1224]。Kerberos不只是一個(gè)單獨(dú)的可信第三方,而是有兩種角色:一種是讓用戶(hù)登錄的身份驗(yàn)證服務(wù)器,還有一種角色是給用戶(hù)發(fā)放票據(jù)以便其訪問(wèn)各種資源(比如文件)的票據(jù)授權(quán)服務(wù)器。這有利于提供更具可擴(kuò)展性的訪問(wèn)控制管理。比如,在大學(xué)里,通過(guò)宿舍樓管理學(xué)生,而通過(guò)院系來(lái)管理文件服務(wù)器;在公司里,人事部門(mén)把用戶(hù)注冊(cè)到薪資系統(tǒng),而部門(mén)管理員負(fù)責(zé)管理服務(wù)器和打印機(jī)之類(lèi)的資源。
首先,Alice使用密碼登錄到身份驗(yàn)證服務(wù)器,其PC機(jī)上的客戶(hù)端軟件從服務(wù)器取回一張票據(jù),票據(jù)使用這個(gè)密碼加密,并且包含一個(gè)會(huì)話密鑰KAS。假設(shè)Alice提供的密碼是正確的,現(xiàn)在就可以控制KAS。為訪問(wèn)票據(jù)授權(quán)服務(wù)器S控制下的資源B,要運(yùn)行以下的協(xié)議。協(xié)議的輸出結(jié)果是密鑰KAB,帶有時(shí)間戳TS和生存期L,該密鑰可用來(lái)對(duì)后面Alice與資源B間的通信進(jìn)行身份驗(yàn)證:
A→S: A,B
S→A: {TS,L,KAB,B,{TS,L,KAB,A}}
A→B: {TS,L,KAB,A},{A,TA}
B→A: {TA+1}
上面的協(xié)議交互過(guò)程可以使用自然語(yǔ)言進(jìn)行描述:Alice向票據(jù)授權(quán)服務(wù)器請(qǐng)求訪問(wèn)B,如果這是允許的,服務(wù)器就創(chuàng)建一個(gè)含有適當(dāng)密鑰KAB的票據(jù){TS,L,KAB,A}KBS,并發(fā)放給Alice使用,此外,Alice還將獲取一個(gè)以對(duì)她可讀的方式給出的該密鑰的副本,也就是用KAS加密過(guò)的?,F(xiàn)在她向資源發(fā)送一個(gè)時(shí)間戳TA來(lái)檢查此密鑰,資源給在發(fā)送回的時(shí)間戳上遞增1,以確認(rèn)自己的存活性(這表明該資源可以正確地對(duì)票據(jù)進(jìn)行解密,并且提取出密鑰KAB)。
通過(guò)引入時(shí)間戳而不是隨機(jī)Nonce,Needham-Schroeder的漏洞已經(jīng)得以修復(fù)。但是,正如大多數(shù)生活情形一樣,沒(méi)有絕對(duì)的安全?,F(xiàn)在又出現(xiàn)了新的漏洞,就是各種客戶(hù)端和服務(wù)器的時(shí)鐘可能不同步,甚至被更復(fù)雜的攻擊故意弄得無(wú)法同步。