14-3 公開鑰匙認證協定
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 分配可信賴的公開鑰匙,然而發起者確認對方公開鑰匙無誤之後,再傳送會議鑰匙給回應者;既然會議鑰匙是由發起者直接傳送給回應者,就沒有會議鑰匙洩漏的問題,其運作說明如下:
Alice 公開鑰匙:EKRs [IDA || KUa || T] Bob 公開鑰匙:EKRs [IDB || KUb || T]
Alice 產生會議鑰匙:EKUb [EKRa [KS || T]]
圖 14-25 認證協定還是出現時序同步的老問題,然而,因為在開放性的分散式處理當中,欲達成時序同步並不容易,下面是較完整的認證協定介紹。 14-3-3 KDC 分配會議鑰匙 圖 14-6 為比較完整的公開鑰匙認證協定 [145],主要是利用亂數(Nonce)來取代時間戳記,並且由 KDC 分配會議鑰匙,因此KDC 同時肩負公開鑰匙的分配與會議鑰匙的產生。說明如下:
圖 14-6 公開鑰匙認證協定
Bob 公開鑰匙:EKRd [IDB || KUb]
Alice 向 Bob 表示身分:EKUb [NA || IDA]
Alice 公開鑰匙:EKRd [IDA || KUa] KDC 產生會議鑰匙:EKUb [EKRd [NA || KS || IDB]]
Bob 傳送會議鑰匙給 Alice:EKUa [EKRd [NA || KS || IDB] || NB]
我們可以由 Alice 的觀點來看,當它利用 Bob 的公開鑰匙(KUb)傳送身份憑證 IDA與亂數 NA(訊號 (3)),再由 Bob 方面收到訊號 (6);接著,它將比較兩者 NA是否相同,如果相同,則可確認是哪一個請求訊號所回應的。如此一來,雖然攻擊者攔截到訊號 (6),再重播給 Alice,Alice 也可以分辨出它是舊的會議鑰匙。 由以上的介紹,我們很難說出哪一種認證協定是安全的,各種認證協定都是使用之後發現缺點,再不斷的改進。但可以確定的是安全性越高的認證協定,它的運作程序越複雜,至於應該採用哪一層次的認證協定,那就見仁見智了。接下來,將介紹使用非常普遍,安全性又高,但運作程序頗複雜的 Kerberos 協定。 |
翻轉工作室:粘添壽
資訊與網路安全技術
翻轉電子書系列:
|