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

 

14-5 Kerberos V4 認證系統

內容:

14-5-1 Kerberos V4 認證程序

Kerberos 將參與工作的成員稱呼為『主角』(Principal),每個成員都擁有自己的『主密鑰』(Master Secret)。但基本上,它還是屬於主從式(Client/Server)架構的應用系統,其成員主要由下列四種實體(使用者或設備)所扮演而成:

  • 客戶端(Client:在網路欲存取資源的使用者。

  • 服務伺服器(Service Server:在網路上提供資源服務者。對每一個使用者要求服務時,必須能夠確定是當事人而非他人冒充,傳遞資源時必須作相當的加密動作,避免他人偷竊。這個加密用的秘密鑰匙只有和使用者之間擁有(由 TGS 伺服器提供),而且用完一次便拋棄,下次連線時再建立新鑰匙。

  • 認證伺服器(Authentication Server, AS:相當於『鑰匙分配中心』(KDC。管理每一個使用者的主密鑰(或稱共享密鑰)。欲加入的使用者都必須向 AS 伺服器申請帳戶並取得主密鑰。網路上任何一個使用者登入系統時,都會向認證中心取得通行證(Pass Book TGT 票),有了通行證便可以在網路上索取所要的資源。

  • 門票核准伺服器(Ticket-Granting Server, TGSTGS 伺服器管理網路上所有服務伺服器,並紀錄所有服務伺服器的秘密鑰匙。當有新的伺服器加入或退出時,都必須向 TGS 伺服器申請。而且某一秘密鑰匙也只有 TGS 伺服器和該服務伺服器兩者所擁有,因此 TGS 伺服器必須管理網路上所有伺服器的秘密鑰匙。使用者如要存取服務伺服器上資源時,必須向 TGS 提出它的身份證明,即 TGT 門票。TGT 門票是經過 TGS 伺服器的秘密鑰匙加密,因此只有 TGS 伺服器能觀察門票的內容,別人無法仿冒。TGS 伺服器驗證完使用者的通行證後,再發給使用者有關使用者本身和所欲要求的服務伺服器的『服務門票』(Service Ticket, ST。有了 ST 門票之後,使用者才可以到服務伺服器上存取資源,ST 門票同時包含了會議鑰匙。

就門票的類別可區分為下列兩大類:

  • 門票核准票(Ticket-Granting Ticket, TGT:此票是由 AS 伺服器發給客戶端的身分證明使用;使用者可以持此票向 TGS 伺服器申請通往某一伺服器的請求。

  • 服務門票(Service Ticket, ST:當使用者出示TGT 門票,向 TGS 伺服器要求前往某一伺服器;如果 TGS 伺服器同意其要求時,則發給所要求伺服器的 ST 門票給使用者,使用者持此票即可要求該伺服器提供服務。

瞭解 Kerberos 的元件之後,再來探討 Kerberos 認證協定可就容易多了。它的運作程序如圖 14-9 所示,我們將它分為登錄、取票、要求服務等三個步驟來討論,如下:

14-9 Kerberos V4 協定之運作程序

【(A)登錄】

當使用者(假設 Alice)想要進入系統參與工作時,它必須進入 Kerberos 所管轄的範圍內,並由 Kerberos 認證身份。首先,Alice 傳送本身識別碼(或憑證、IDA)與希望取得 TGS 伺服器門票的識別碼(IDTGS)給 AS 伺服器,其中已加入預防重播攻擊的時間戳記(TS1)(訊號 (1))。AS 確認 Alice 的身份識別無誤後,便利用 Alice 主密鑰傳送通往 TGS TGT 門票(TicketTGS)、以及 Alice TGS 伺服器之間的會議鑰匙(KA, T)給 Alice訊號 (2)),訊號格式如下:

 EKa [KA, T || IDTGS || TS2 || Lifetime1 || TicketTGS]

TGT 門票格式如下:

TicketTGS = EKtgs [KA, T || IDA || ADA || IDTGS || TS2 || Lifetime1]

其中 Lifetime1表示該門票的有效期限,KA, T AS 伺服器分配給 Alice TGS 伺服器之間的會議鑰匙,ADA Alice 工作站的網路位址(IP 位址),AS 伺服器是由 Alice 所傳送過來的 IP 封包中取得。

 訊號 (2) 到達 Alice 工作站時,工作站會要求 Alice 輸入密碼,並由輸入的密碼產生 Alice 的主密鑰(KA),再利用主密鑰解開訊號 (2) 的加密,同時取得相關訊息。由此可見,TGT 門票是利用 Alice 的主密鑰加密著,他人不易觀察裡面的內容。

【(B)取票】

Alice 經由 AS 確認身份,並取得通往 TGS TGT 門票之後,它便成為 Kerberos 系統下的成員之一。在該門票的有效期間內,它都可以向 TGS 伺服器要求其它伺服器的門票,其要求步驟如下:首先 Alice 傳送自己的簽署碼(AuthenticationAuthen_1A)、身份識別(IDB)與 TGT 門票(TicketTGS)給 TGS 伺服器,其中身份識別(IDB)表示欲前往的服務伺服器(假設 Bob)(訊號 (3)),簽署碼表示 Alice 自己簽署的身分證明,格式如下:

Authen_1A = EKa, t [IDA || ADA || TS3]

由上可知簽署碼是使用 Alice TGS 的會議鑰匙(KA, T)加密,其中包含 Alice 的身份識別(IDAADA)與時間戳記(TS3)。

TGS 伺服器檢視 TicketTGS門票中有效期限是否過期,如在有效期間內,則取出會議鑰匙(KA, T),並解開 Alice 的認證碼(Authen_1A),再核對認證碼與門票內有關 Alice 的身份識別是否正常。如果都正常的話,便發給 Alice 通往服務伺服器(Bob)的 ST 門票(訊號 (4)),ST 門票格式如下:

TicketB = EKb [KA, B || IDA || ADA || IDB || TS4 || Lifetime2 ]

由上可知ST 門票係利用 Bob 的主密鑰加密,他人無法窺視其內容,更何況要去竄改它。ST 門票中也包含著 TGS 發給 Alice Bob 之間的會議鑰匙(KA, B),並包含著 Alice Bob 的身份識別、該門票的有效期限(Lifetime2)與時間戳記(TS4)。

【(C)要求服務】

Alice TGS 伺服器上取得通往 Bob ST 門票之後,在該門票的有效期間內都可以向 Bob 要求服務,要求服務的步驟如下:首先 Alice Bob 出示門票(TicketB)與自己的認證碼(Authen_2A)(訊號 (5)),認證碼的格式如下:

Authen_2A = EKa, b [IDA || ADA || TS5]

認證碼也是使用 Alice Bob 的會議鑰匙(KA, B)加密。Bob 收到訊號 (5) 之後,再利用自己的主密鑰解開門票的加密,並核對是否在有效期間內,如果該門票尚未逾期,則取出會議鑰匙(KA, B),並利用該鑰匙解開認證碼的加密。接下來,Bob 比較 ST 門票內所註明的身份識別是否與認證碼相同,如果相同的話,則可確定發送該門票者確實是 Alice 沒錯。但 Bob 必須確認該會議鑰匙是否與 Alice 共享的,因此,Bob 可利用會議鑰匙回送時間戳記減一的值給 Alice訊號 (6)),作為達到『相互認證』(Mutual Authentication的功能。

由上述的介紹,可以發現每一筆訊號都加入了時間戳記,以防止重播攻擊。門票也註明了有效期限,如此更能減低使用者退出後,攻擊者仿冒的機會。當然攻擊者欲攔截門票來仿冒也有其困難,譬如,攻擊者攔截訊號 (3)(或訊號 (5)),取得門票之後,再偽裝成 Alice 傳送給 TGS 伺服器(或Bob),但它沒 Alice 的認證碼也是枉然。

14-5-2 多重Kerberos 領域

Kerberos 將每一系統所管轄的範圍稱之為『領域』(Realm;每一領域內,至少包含一部 AS 伺服器、若干個 TGS 伺服器、以及所管轄的使用者與服務伺服器。基本上,使用者都必須向 AS 伺服器登錄帳戶,才正式成為該領域下的使用者,又稱為『領域使用者』;另一方面,服務伺服器必須向 AS TGS 登錄,領域使用者才可以存取道該伺服器的資源,所有領域之內的成員又通稱為『主角』(Principle。因此,針對任何一個使用者或伺服器(或工作站)都標示為Realm/Principle,譬如,『CIS/User_1』,則表示該成員是 CIS 領域下的 User_1 帳戶。

就領域的概念而言,各個成員可構成一個獨立的環境,由 AS TGS 伺服器(兩者的組合又稱為 Kerberos 伺服器)來管轄領域內所有資源的分配;一般情況,我們都會將組織單位內工作性相同的人員與設備規劃成一個領域,也大多以組織內的子單位來劃分,如此一來,管理者就可清楚分配資源的使用權限。但如果組織內存在著多個領域,則領域之間如何來達成資源共享的問題,則有賴『多重 Kerberos』(Kerberi)機制來達成,如圖 14-10 所示。增加了 Kerberi 的關係,我們可將 Kerberos 的特性歸類如下:

  • 某一領域下使用者都必須向他所屬的 Kerberos 伺服器註冊,並與該伺服器共享一把鑰匙,而此共享鑰匙又稱為該使用者的『主密鑰』(Master Secret)。

  • 某一領域下的應用伺服器必須向他所屬的 Kerberos 伺服器註冊,並與 Kerberos 伺服之間共享一把秘密鑰匙,即應用伺服器的主密鑰。

  • 兩個領域之間,Kerberos 伺服器可依照信任關係互相註冊;被信任的 Kerberos 伺服器,與信任一方的 TGS 伺服器(亦是 Kerberos)之間共享一把鑰匙。譬如,Realm_A 領域信任 Realm_B,則表示 Realm_B 的使用者可以存取 Realm_A 領域的資源;因此,Realm_B Kerberos 伺服器與 Realm_A TGS 伺服器之間共享一把鑰匙。

14-10 多重 Kerberos 領域的關係

利用信任關係,使 Kerberos 伺服器與對方 TGS 伺服器之間共享秘密鑰匙,如此一來,領域之間的存取問題就簡單多了。然而,應用伺服器與 Kerberos 之間的共享鑰匙是由 TGS 伺服器負責,因此,與原來領域內存取的不同點,僅在於 TGS 伺服器的分配門票上。我們用圖 14-11 說明領域之間存取的運作程序,並假設領域雙方都互相信任,其運作程序與圖 14-9 大致上相同,僅就跨領域之間的程序說明如下:

  • 訊號 (3):客戶端向所屬領域(領域_A)索取通往領域_BIDTGS_R_B)的門票。

  • 訊號 (4)所屬 TGS 伺服器發給客戶通往領域_B 的門票(TicketTGS_R_B)及共享鑰匙(KA, TGS_R_B)。值得注意的是,該門票係利用對方 TGS 伺服器的主密鑰(與領域_A 的共享鑰匙)加密著,圖中並未顯示出來。

  • 訊號 (5)客戶向領域_B TGS 伺服器要求服務,傳送門票與所欲存取應用伺服器的識別資料(IDB_S)。

  • 訊號 (6)領域_B TGS 伺服器傳送通往應用伺服器的門票(TicketB_S)給客戶端。

  • 訊號 (7)客戶出示門票(TicketB_S)向應用伺服器要求服務。

14-11 跨越領域的運作程序

主講人:粘添壽博士

 

資訊與網路安全技術

資訊與網路安全技術