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

 

14-3 公開鑰匙認證協定

內容:

  • 14-3-1 公開鑰匙認證協定簡介

  • 14-3-2 AS 分配公開鑰匙

  • 14-3-3 KDC 分配會議鑰匙

14-3-1 公開鑰匙認證協定簡介

上述所介紹的認證協定(如 Needham-Schroeder 協定)大多是使用於封閉型的分散式系統;在這些協定之中,使用者必須事先在 KDC 中心建立有帳戶,並且雙方利用使用者密碼所產生的『共享密鑰』(或稱使用者的主密鑰)來達成相互認證。但在開放式分散式系統中,使用者可能來自四面八方,且不可能事先在 KDC 中心建立帳戶,當然也不會有共享密鑰;在這種情況之下,如何來達成認證問題?以及如何分配會議鑰匙(Session Key)?關於公開鑰匙的認證協定,本書第四章已詳細介紹過,這裡僅介紹其鑰匙分配方法。

簡單的說,與陌生人之間的認證則必須採用公開鑰匙系統,但公開鑰匙系統的加密和解密時間大約是秘密鑰匙系統的 100 1000 倍(鑰匙較長),所以利用公開鑰匙系統加密傳遞資料,效率將是非常的低。因此,必須結合兩套系統,在身份認證方面採用公開鑰匙系統,而在資料傳遞方面則使用秘密鑰匙(會議鑰匙)系統,成為『混合型密碼系統』(Hybrid Cryptosystem

14-3-2 AS 分配公開鑰匙

在系統之中建立一個『認證伺服器』(Authentication Server, AS是最簡單的做法,由該伺服器負責認證客戶的公開鑰匙(或數位憑證)。AS 伺服器必須是一個較堅固的系統,至少不容易讓攻擊者入侵修改內部儲存的公開鑰匙,並且參與通訊者都能相信它。當然參與通訊者都必須持有自己的鑰匙配對,並且能夠安全地將公開鑰匙交與 AS 伺服器保管。 14-5 為簡單的認證程序,為了預防重播攻擊、或避免攻擊者使用已破解的會議鑰匙,因此,加入時間戳記 [49],其中發起者(假設為 Alice)的鑰匙配對是 {KRa, KUa}(前者為私有鑰匙,後者為公開鑰匙)AS {KRs, KUs},回應者(如 Bob)是{KRb, KUb}

14-5 簡單的公開鑰匙認證

14-5 的基本構想是,AS 分配可信賴的公開鑰匙,然而發起者確認對方公開鑰匙無誤之後,再傳送會議鑰匙給回應者;既然會議鑰匙是由發起者直接傳送給回應者,就沒有會議鑰匙洩漏的問題,其運作說明如下:

  • 步驟 1Alice AS 伺服器請求 Bob 的公開鑰匙,其中以 IDA IDB表示 Alice Bob 的身份識別;訊號 (1)

  • 步驟 2AS 伺服器利用自己的私有鑰匙(KRs)回應 Alice Bob 的公開鑰匙(KUa KUb)、與身份識別(IDA IDB)給Alice,其中順便加入時間戳記(T);訊號 (2)。即是:

Alice 公開鑰匙:EKRs [IDA || KUa || T]

Bob 公開鑰匙:EKRs [IDB || KUb || T]

  • 步驟 3Alice 利用 AS 的公開鑰匙(KUs)解開 AS 伺服器所回傳的訊息,並比較 IDA KUa是否屬於自己的,如果正確的話,表示 AS 確實回應自己的請求。另外,也比較 IDB是否是自己想要通訊的對象,如果是的話,則表示已取得對方的公開鑰匙(KUb)。上述都正常的話,則Alice 產一個通訊鑰匙(KS),並利用自己的私有鑰匙與對方的公開鑰匙加密,連帶著 AS 所回傳的訊息,一起發送給Bob,其中每一筆訊號亦加入時間戳記(T);訊號 (3)。會議鑰匙為:

Alice 產生會議鑰匙:EKUb [EKRa [KS || T]]

  • 步驟 4Bob 利用 AS 的公開鑰匙解開前面兩個訊息,可以得到對方和自己的身份識別與公開鑰匙,並比對該身份識別(IDB)是否屬於自己。再利用自己的私有鑰匙(KRb)與對方的公開鑰匙(KUb)解開會議鑰匙(KS)的加密,並比較時間戳記(T)是否在可容許的範圍內。

  • 步驟 5之後發起者與回應者之間便利用該會議鑰匙(KS)來通訊。

14-25 認證協定還是出現時序同步的老問題,然而,因為在開放性的分散式處理當中,欲達成時序同步並不容易,下面是較完整的認證協定介紹。

14-3-3 KDC 分配會議鑰匙

14-6 為比較完整的公開鑰匙認證協定 [145],主要是利用亂數(Nonce)來取代時間戳記,並且由 KDC 分配會議鑰匙,因此KDC 同時肩負公開鑰匙的分配與會議鑰匙的產生。說明如下:

14-6 公開鑰匙認證協定

  • 步驟 1發起者(假設 Alice)向 KDC 要求通往回應者(假設 Bob)的公開鑰匙,並傳送兩方的身分證明(或數位憑證,IDA IDB)給 KDC;訊號 (1)

  • 步驟 2KDC 收到請求之後,利用自己的私有鑰匙(KRd)傳送 Bob 的憑證與公開鑰匙鑰匙給 Alice;訊號 (2)。其中:

Bob 公開鑰匙:EKRd [IDB || KUb]

  • 步驟 3Alice KDC 的公開鑰匙向訊號 (2) 解密,取得 Bob 的憑證與公開鑰匙,再利用 Bob 的公開鑰匙傳送自己的憑證與一個亂數 NA Bob;亂數 NA是作為此次通訊的識別,並作為防禦重播攻擊使用;訊號 (3)。其中:

Alice Bob 表示身分:EKUb [NA || IDA]

  • 步驟 4Bob 收到 Alice 的身份識別之後,必須確認 Alice 的身份是否正確。因此,Bob 也傳送兩方的憑證(IDA IDB),並希望索取 Alice 的公開鑰匙;另外,也利用 KDC 的公開鑰匙傳送 Alice 所產生的亂數 NA,希望 KDC 能將此亂數加入雙方通訊鑰匙的識別之中;訊號 (4)

  • 步驟 5KDC 收到訊號 (4) 請求之後,傳送兩個訊息給 Bob。一者是利用 KDC 私有鑰匙加密之 Alice 的憑證與公開鑰匙(EKRd[IDA || KUa]);另一者是利用 Bob 公開鑰匙與 KDC 私有鑰匙加密的會議鑰匙資料,該資料包含 Alice 所產生的亂數 NA、會議鑰匙(KS)與 Alice 的憑證(IDA);如此,Bob 便取得了 Alice 的公開鑰匙、與通往 Alice 的會議鑰匙;訊號 (5)。其中:

Alice 公開鑰匙:EKRd [IDA || KUa]

KDC 產生會議鑰匙:EKUb [EKRd [NA || KS || IDB]]

  • 步驟 6雖然 Bob 取得了會議鑰匙,然而它也必須採用一種可以讓 Alice 相信的方法,將會議鑰匙傳送給他。因此,它將原來 KDC 送過來的訊息(EKRd [NA || KS || IDB])再加上一個亂數 NB,以 Alice 的公開鑰匙(KUa)加密後,傳送給 Alice;訊號 (6)。其中:

Bob 傳送會議鑰匙給 AliceEKUa [EKRd [NA || KS || IDB] || NB]

  • 步驟 7Alice 利用自己的私有鑰匙與 KDC 的公開鑰匙解開訊號 (6) ,證明對方的身份是 BobIDB),並取得會議鑰匙(KS)。Alice 再利用會議鑰匙傳送 NB Bob(訊號 (7));接下來,Bob 利用會議鑰匙解開訊號 (7),並確認 NB是自己所產生的亂數,如此可確定雙方所持有的會議鑰匙是相同的。

我們可以由 Alice 的觀點來看,當它利用 Bob 的公開鑰匙(KUb)傳送身份憑證 IDA與亂數 NA(訊號 (3)),再由 Bob 方面收到訊號 (6);接著,它將比較兩者 NA是否相同,如果相同,則可確認是哪一個請求訊號所回應的。如此一來,雖然攻擊者攔截到訊號 (6),再重播給 AliceAlice 也可以分辨出它是舊的會議鑰匙。

由以上的介紹,我們很難說出哪一種認證協定是安全的,各種認證協定都是使用之後發現缺點,再不斷的改進。但可以確定的是安全性越高的認證協定,它的運作程序越複雜,至於應該採用哪一層次的認證協定,那就見仁見智了。接下來,將介紹使用非常普遍,安全性又高,但運作程序頗複雜的 Kerberos 協定。

主講人:粘添壽博士

 

資訊與網路安全技術

資訊與網路安全技術