14-5 Kerberos V4 認證系統
14-5-1 Kerberos V4 認證程序 Kerberos 將參與工作的成員稱呼為『主角』(Principal),每個成員都擁有自己的『主密鑰』(Master Secret)。但基本上,它還是屬於主從式(Client/Server)架構的應用系統,其成員主要由下列四種實體(使用者或設備)所扮演而成:
就門票的類別可區分為下列兩大類:
瞭解 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 的特性歸類如下:
圖 14-10 多重 Kerberos 領域的關係 利用信任關係,使 Kerberos 伺服器與對方 TGS 伺服器之間共享秘密鑰匙,如此一來,領域之間的存取問題就簡單多了。然而,應用伺服器與 Kerberos 之間的共享鑰匙是由 TGS 伺服器負責,因此,與原來領域內存取的不同點,僅在於 TGS 伺服器的分配門票上。我們用圖 14-11 說明領域之間存取的運作程序,並假設領域雙方都互相信任,其運作程序與圖 14-9 大致上相同,僅就跨領域之間的程序說明如下:
圖 14-11 跨越領域的運作程序 |
翻轉工作室:粘添壽
資訊與網路安全技術
翻轉電子書系列:
|