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

 

13-5 相互認證協定

內容:

  • 13-5-1 相互密鑰認證 - 運作

  • 13-5-2 相互密鑰認證 - 改良

  • 13-5-3 相互公開鑰匙認證

13-5-1 相互密鑰認證運作

『相互認證』(Mutual Authentication表示通訊雙方可以互相確定對方身份的協定。相互認證在電子商務上非常的重要,入侵者可能冒充客戶身份來詐騙伺服器,也可能冒充伺服器來詐騙客戶。如何達成相互認證的措施,同樣可區分為秘密鑰匙系統與公開鑰匙系統兩種機制,以下分別說明之。

不同於單向認證機制,僅回應者確認發起者所持有鑰匙與自己的相同,而相信對方身分。相互認證則必須雙方能確定彼此持有的共享鑰匙是否相同,再相互確認身分。基本上,還是利用『盤問/回應』(Challenge/Response機制便可達到雙方認證的功能。如圖 13-13 是相互共享密鑰認證的運作程序,在未通訊之前雙方必須持有共享密鑰(KAB),而此密鑰大多是發起者的密碼所計算而來。在圖 13-13 訊號 (2) (3) 是由 Bob (大多是伺服端)盤問 Alice 的共享密鑰,而訊號 (4) (5) Alice(大多是客戶端)盤問 Bob。其中 f(KAB, R)是雙方將共享密鑰植入盤問亂數(R1R2)演算法,它可以是雜湊演算法(如 MD5 HMAC)或加密演算法(如 DES)。

13-13 相互共享密鑰協定的運作程序

【(A)簡化運作程序】

我們可以簡化圖 13-13 的運作程序,將訊號 (1) (4) 結合成一個訊號,亦將訊號 (2) (3) 整合在一起,如圖 13-14 所示。當 Alice聲明自己身份時,並攜帶這盤問訊號 R2(圖 13-14 訊號 (1)),同時 Bob 回應 Alice 時,也攜帶另一個盤問訊號(R1)來測試對方(訊號 (2))。

13-14 簡化的共享密鑰運作程序

【(B)反射攻擊法】

使用簡化的共享密鑰協定容易遭受『反射攻擊法』(Reflection Attack擊破。如圖 13-15 所示,例如 Trudy由其它管道知 Alice Bob 的客戶端名稱,它就可以假冒 Alice 的名字向 Bob 發出盤問要求。首先 Trudy 利用 Alice 的名字發出盤問訊號 R2訊號 (1))。Bob 即時送出回應訊號 f(KAB, R2),並送出自己的盤問訊號 R1 Trudy(訊號 (2),誤認為是 Alice)。Trudy 再利用 Bob 的盤問訊號 R1再要求盤問 Bob訊號 (3))。Bob 會誤認為 Alice 想要建立另一個連線而要求盤問。而且盤問訊號是一個亂數,很難去偵測自己是否曾經送出同樣的亂數;因此 Bob 再回應一次,利用雙方的秘密鑰匙對 R1加密,同時再送出自己的盤問訊號(訊號 (4))。這時候,Trudy 直接取 Bob 回應之 f(KAB, R1)當作訊號 (2) 的回應,再傳送給 Bob訊號 (5))。接下來,Bob 解密之後得到的亂數 R1,與訊號 (2) R1相同,便相信發起者是 Alice,其實是 Trudy 冒充的。

13-15 反射攻擊法的運作程序

當然 Bob 可限制每一個人一次只能要求一條連線,如此就可以避免入侵者的反射攻擊。但如果發生第一次的回應訊號遺失,而對方要求再盤問重新連線可能會被拒絕,除非第一次要求認證時能確定身份,否則這個協定很容易被擊破。我們將會介紹其它協定以彌補這方面的缺憾。

13-5-2 相互密鑰認證改良

簡化的相互共享密鑰認證也容易遭受『密碼猜測』(Password Guessing攻擊。攻擊者只要連續發出聲明身份及盤問亂數(如圖 13-14 訊號 (1)Alice, R1),便可以由回應者得到該處理盤問亂數的密文(f(KAB, R1)),且得到亂數的明文與密文配對({R1, f(KAB, R1)}。如果訊息取得足夠的話,攻擊者就可找出共享密鑰(KAB),無論產生密文的演算法是何種機制(雜湊演算法或加密演算法)。我們稍加修改圖 13-14 的運作程序,就可以避免密碼猜測攻擊,如 13-16 所示Alice 聲明身份時,並不攜帶盤問亂數(訊號 (1)),再由 Bob 盤問 Alice訊號 (2)R1);Bob 可以確定對方身份無誤之後(利用訊號 (3)f(KAB, R1)),再回應 Alice 的盤問(訊號 (4)f(KAB, R2))。如果,Bob(一般都是伺服器)無法確定 Alice 身份時,並不會回應它的盤問,如此一來,攻擊者就無法連續得到亂數與密文的配對了。

13-16 改良型的共享密鑰認證

13-5-3 相互公開鑰匙認證

利用公開鑰匙達到雙方的認證程序可就簡單多了,但先決條件是雙方必須有公開鑰匙與私有鑰匙配對,並且公開鑰匙要能安全的分配給通訊對方。分配公開鑰匙並沒有想像中那麼簡單,本書已在第四章討論過,不再重複,一般都需要數位憑證或 PKI 系統來輔助(將在第九章介紹),這裡僅討論它的運作程序。

13-17 為相互公開鑰匙認證的運作程序,假設發起者(如 Alice、客戶端)的鑰匙配對為 {KUa, KRa},回應者(如 Bob、伺服端)為 {KUb, KRb}。首先,Alice 聲明自己身份,並利用 Bob 的公開鑰匙向亂數 R1加密,再傳送給 Bob(訊號 (1)EKUb[R1])。Bob 利用自己的私有鑰匙解密盤問亂數(R2),並利用Alice 的公開鑰匙向亂數 R2Bob 隨機取出)加密,再一起回傳給發起者(訊號 (2)EKUa[R2])。Alice 驗證所盤問的亂數(R1)是否相同,如相同的話,則可以確認對方身份(是 Bob 無誤);接下來,利用自己的私有鑰匙向盤問亂數解密(R2),並回傳給BobBob 收到 Alice 的回應亂數(R2),比較是否與自己產生的相同,如果相同的話,便可以確定發起者身份(是 Alice 無誤)。

13-17 相互公開鑰匙認證的運作程序

主講人:粘添壽博士

 

資訊與網路安全技術