資訊與網路安全技術第十四章 Kerberos 認證系統  上一頁      下一頁

 

14-4 Kerberos 認證系統簡介

內容:

14-4-1 Kerberos 認證系統簡介

Kerberos 認證系統』(Kerberos Authentication System是由麻省理工學院(M. I. T)發展出來的,其命名係來自希臘神話中看守地獄入口那條三頭狗 Kerberos。設計 Kerberos最主要的目的是要讓使用者能安全地存取網路上資源,也是目前網路使用最廣泛的技術。到目前為止,Kerberos 較常用的有兩個版本,版本 4V4[26, 49, 111] 目前還被廣泛使用中,但僅能使用於 TCP/IP 網路;版本 5V5)已作了許多修正,使它更適合其他網路環境,並已制定成 RFC 1510  標準規範。

基本上,Kerberos 祇採用秘密鑰匙系統認證用戶端,所以每一個使用者都必須在 Kerberos 伺服器上建立帳號名稱,並利用使用者密碼所建立的『主密鑰』,來確認使用者與伺服器之間的身份。因此屬於較封閉的分散式系統應用,但目前已有許多應用系統,將公開鑰匙系統植入 Kerberos 之中,但僅限於客戶端身份認證而已。從認證技術而言,Kerberos 主要延伸許多 Needham-Schroeder 協定的技術,並加入時間戳記作為防止重播攻擊。正因如此,在 Kerberos 系統上,參與認證的工作站或伺服器之間都必須保持時序的同步。

之前我們所介紹的認證程序,大多侷限於使用者(透過工作站)與伺服器之間身份的認證問題、以及會議鑰匙的分配工作。然而,在 Kerberos 認證協定上並沒有刻意劃分使用者(人)或機器(伺服器或工作站),它對每一個參與認證的實體(人或機器)都一視同仁,稱之為『主角』(Principal,這種觀念通常比較適合分散式處理。

我們可意識得到,Kerberos 可能是未來封閉型分散式系統(譬如,電子化辦公室)認證的主流;至於開放型的分散式系統(如 Internet 網路應用),則較頃向於 PKI 認證系統(利用數位憑證);但也未必如此,目前許多封閉式系統(如 Windows 2000)已將 Kerberos PKI 系統整合使用。基本上,Kerberos 的認證程序算是複雜的,本章之前介紹了許多認證協定的運作程序,主要為 Kerberos 鋪路;本節以介紹 Kerberos V4為主,有了第四版本的概念之後,下一節再介紹第五版本可就容易多了。

14-4-2 Kerberos 動機

無論採用何種認證協定,主要的目標是確認通訊雙方的身份、與分配雙方通訊所需的會議鑰匙。我們採用了極複雜的運作程序,是為了要防止攻擊者從中破壞正常交易,至於如何達成上述兩個目標,其實到目前為止,也很難找出十全十美的方法。首先將攻擊者的破壞技巧歸類如下:

  • 也許攻擊者合法取得某一工作站權限,再利用此工作站冒充另一個使用者,取得其他工作站的非法權限。

  • 也許攻擊者會更改工作站的網路位址,來偽裝成另一個工作站,再發出偽裝訊息。

  • 也許攻擊者由網路上竊聽到相關訊息,再重送攻擊或入侵相關伺服器,或是破壞該伺服器的正常運作。

之前所介紹的幾種認證協定,大多著重於防止重播攻擊。假設,先撇開重播攻擊的問題,我們將圖 14-1 (b) 的基本認證程序加入了網路位址,便如圖 14-7 所示。其中ADA表示客戶工作站的位址,我們來討論一下可能出現的問題:

14-7 附加網路位址的門票

  • 客戶需要任何一部伺服器資源時,都需要向 KDC 申請門票;每次申請門票時,客戶都需要輸入密碼確認身份(產生主密鑰)。在目前分散式處理環境之下,每一客戶同時存取多個伺服器是非常普遍的現象;如此一來,增加客戶端輸入密碼的次數,也增加了暴露密碼的危機。最好的構想是,在同一個應用系統中,客戶只要輸入一次密碼即可。

  • 雖然在門票中加入了客戶工作站的網路位址,但當攻擊者攔截到門票之後(訊號 (3)),還是可以等待到該客戶登出之後,再偽裝成它的網路位址;如此一來,偽裝工作站傳送門票給伺服端,伺服端也相信對方的身份了。因此,僅加入網路位址並無法完全避免他人的攻擊;或許在門票上加入使用期限,可以減少被冒充的機率。

第二個問題較簡單,我們先來討論第一個問題。記得我們在 14-5 節介紹過(如圖 14-20 所示),KDC 的概念是將客戶認證(與建立會議鑰匙)的工作分配給 KDC 伺服器管理;如果確定身份無誤之後,便可以發給客戶通往伺服器的門票,然而客戶是否有權利存取某一伺服器,仍需仰賴原伺服器自行管理(如建立 ACL 表)。如果我們另外建立一個伺服器,作為過濾客戶是否可以使用某一個伺服器的權利,此伺服器稱為『門票核准伺服器』(Ticket-Granting Server, TGS;如果該客戶有權利存取某一伺服器,則 TGS 便發給予通往該伺服器的門票。至於客戶存取該伺服器的權限如何,還是保存在原伺服器上管理。如此一來,原來 KDC 的工作便僅限於客戶身份的認證而已,因此,又稱為『認證伺服器』(Authentication Server, AS。也就是說,我們將 KDC 的工作分配給 AS TGS 兩個伺服器來承擔,如此一來,便可以解決客戶只要輸入一次密碼的問題。

14-4-3 Kerberos 基本構想

14-8 Kerberos 的基本構想,運作程序的簡單程序是:客戶利用自己的主密鑰向 AS 伺服器申請到一張通往 TGS 伺服器的門票(TicketTGS),再利用此門票向 TGS 伺服器申請一張通往某伺服器的門票(TicketB),客戶端再利用伺服器的門票向該伺服器要求服務。兩張門票分別為:

TGS 門票:TicketTGS = EKtgs [IDA || ADA || IDTGS || TS1 || Lifetime1]

伺服器門票:TicketB = EKb [IDA || ADA || IDB || TS2 || Lifetime2]

其中 ID AD 分別為身分識別與網路位址,TS 是時間戳記,Lifetime 為有效時間。接下來,我們來討論利用兩個伺服器的認證有何特性:(如圖 14-8 所示)

14-8 Kerberos 的基本構想

  • 主密鑰分配:AS 伺服器除了必須擁有客戶的主密鑰之外,還必須擁有 TGS 的主密鑰;另外,TGS 伺服器也需要擁有所有伺服器的主密鑰。這就是 Kerberos 將所有參與者都稱為 Principal 的主要原因。

  • 客戶密碼只要輸入一次:客戶端取得通往 TGS 的門票(TicketTGS)之後,在該票的有效期限之內,都可以請求服務,而不需要再輸入密碼來索取門票。

  • 防禦偽裝攻擊:門票(TicketTGS TicketB)上有登錄該票的使用者識別(ID)、工作站位址(AD)、時間戳記(TS)與有效期間(Lifetime)。攻擊者攔截到門票之後,不易在在有效期內偽裝成合法客戶。

  • 防止重播攻擊:門票有註明時間戳記(T),當攻擊者重播門票時,接收端可以利用時間戳記辨別門票的新舊。

門票都利用接收端的主密鑰加密著,譬如,客戶傳送給 TGS 門票便利用 TGS 的主密鑰(KTGS)加密著;另外。客戶傳送給伺服器的門票,也利用該伺服器(假設 Bob)的主密鑰(KB)加密著。客戶與攻擊者都無法窺視到門票的內容,當然無法冒充或竄改它。接下來的問題是有效期間要多長?如果太短的話,當門票逾時之後,客戶端必須再重新輸入密碼取得新的門票。但如果有效期間過長,客戶登出之後,攻擊者可以冒充它的帳戶來使用門票,之間取捨難定,不過一般大多定在 8 個小時左右。

我們瞭解圖 14-8 的基本構想之後,大略可以完成身份認證的問題。我們再將會議鑰匙分配的程序加入圖 14-8 中,並規範標準的加密演算法與門票的格式,便能制定出一個完整的認證協定,這就是建構 Kerberos 的基本構想。

翻轉工作室:粘添壽

 

資訊與網路安全技術

 

 

翻轉電子書系列: