資訊與網路安全技術:第十四章 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, TGS):TGS 伺服器管理網路上所有服務伺服器,並紀錄所有服務伺服器的秘密鑰匙。當有新的伺服器加入或退出時,都必須向 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 傳送自己的簽署碼(Authentication,Authen_1A)、身份識別(IDB)與 TGT 門票(TicketTGS)給 TGS 伺服器,其中身份識別(IDB)表示欲前往的服務伺服器(假設 Bob)(訊號 (3)),簽署碼表示 Alice 自己簽署的身分證明,格式如下:

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

由上可知簽署碼是使用 Alice 與 TGS 的會議鑰匙(KA, T)加密,其中包含 Alice 的身份識別(IDA、ADA)與時間戳記(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)索取通往領域_B(IDTGS_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 跨越領域的運作程序

翻轉工作室:粘添壽

 

資訊與網路安全技術

 

 

翻轉電子書系列: