指導教授:陳偉業 老師 碩專資管二甲 N9490012 林士淵 富強鑫公司 資訊工程師 2006/12/23 IEEE 802.1x與IEEE 802.11i的介紹 指導教授:陳偉業 老師 碩專資管二甲 N9490012 林士淵 富強鑫公司 資訊工程師 2006/12/23
參考文獻 J.-C. Chen et al.,Wireless LAN Security and IEEE 802.11i,2004年。 周駿呈 ,WLAN網路安全解決方案,工研院IEK-ITIS計畫 鄧友清,無線區域網路安全未來發展,工研院IEK-ITIS計畫
一、前言 無線區域網路安全標準原本只是IEEE 802.11(b)標準的一部份,而IEEE 802.11(b)標準是MAC層傳輸協定,因此在制定標準時,所以只定義了認證及加密的格式與相關的流程,至於屬於較上層的金鑰管理,標準中並不定義。 造成需要手動管理WEP(Wired Equivalent Privacy)金鑰,即是當使用者要使用加密的通道時,必須向系統管理者事先取得金鑰。
一、前言 客戶端(client)與擷取點(access point, AP)會互相分享四把金鑰,同時作為認證及授權使用此通道兩種用途,由於金鑰無法線上動態交換,因此client與AP會長時間使用相同的金鑰,而無法即時取消對某使用者的使用,造成認證上的失誤。 在授權方面,由於都是用同一把金鑰達成認證即授權,所以沒有達到存取控制(access control)的功能。 IEEE 802.11(b)的WEP協定使用RC4串流加密演算法,造成金鑰可由密文導出金鑰的重大缺失,使得IEEE標準組織不得不加快腳訂定新的標準來步修正這些安全上的缺失。
RC4為一種對稱式的金鑰加密方法,也就是在加密的兩端之間(WLAN Client與Access Point)都要維持一個相同的Key,共同用這把Key來加解密。
如下所示,為一個封包透過RC4加密的流程,首先系統會產生一組24 bits動態產生的IV(initial vector, IV)值,這個IV值與系統所使用者WEP Key一起經由RC4運算後,經由Stream Cipher的方式透過XOR加密使用者所要傳送的封包,在使用者加密後的封包要送出時,剛剛產生的IV值就會附在封包之前,接收者只要根據這個IV值與兩邊共同擁有的WEP Key,就可以把加密過的封包資料解回來了
資料傳輸時,WEP Key是不變的,唯一會改變的就是24 bits長度的IV值,根據不同廠商實做的方式,IV值可以隨著每個封包的傳送而改變,也可以維持一定的週期不重複,不過由於IV值是由24bits的長度所組成,所以最大的IV週期將不會超過2^24(16777216)個封包,也就是說,如果惡意攻擊者在WEP Key不更新的情況下,只要連續監聽不超過2^24封包就可以偵測到重複的IV值了。 尤其如果每次IV值都是由小到大重複計算送出,那樣當系統重置時(重新開機或是重新插拔PCMCIA網卡),就有可能會導致IV值重複出現的機率大幅增加。 由此我們可以知道在WEP的保護下,基本上外人是無法得知實際上傳輸的資料內容,除非惡意的使用者知道了我們使用的WEP Key 。
二、IEEE 802.1x 由於原有的share key認證機制缺少金鑰管理機制,因此IEEE 標準組織提出相關的修正,修正方式則定義於IEEE 802.1x,但此標準並沒有定義如何實施到WLAN的細節,因此在目前不同廠牌產品在互通上有問題,而這問題將在IEEE 802.11i標準中被解決。 以串接的方式將802.1x的認證訊息加入原有流程中,也就是不改變原有在MAC層的認證流程,直接將 802.1x的認證訊息往上傳至IP層,並在此時作金鑰交換的動作。 基本上,802.1x的認證方式都必須具有互相認證及動態金鑰交換的功能,才可以真正解決IEEE 802.11(b)的種種問題。
使用者登入無線區域網路的方式如上圖所示,使用者在獲得授權進入以IEEE 802 使用者登入無線區域網路的方式如上圖所示,使用者在獲得授權進入以IEEE 802.1x 管制的無線區域網路之前,使用者首先必須透過EAPOL(EAP Over Lan)取得無線擷取器或無線寬頻路由器,來提供帳號與密碼、數位公鑰憑證或其他可供認證使用者的資訊給後端的Authentication 伺服器(一般為AAA 伺服器)。
EAPOL(EAP Over Lan)是屬於無線網路協定裡IP Layer以下的通訊協定, 可以讓使用者在未經過EAP認證登入以前的封包,透過EAPOL的傳送,經由Access Point與後端AAA (Authentication, Authorization, and Accounting) Server進行認證. 經Authentication 伺服器認證通過的合法使用者才可以使用無線區域網路,使用系統所提供的服務。Authentication伺服器也會記載使用者登入與登出的時間資訊,以作計費或網路使用狀態監控的用途。
基本上,AAA 協定大多遵循IETF(The Internet Engineering TaskForce)組織所定義的RFC 2903、RFC 2904、RFC 2905、RFC 2906、RFC 2989 等相關標準。 而目前市面最常見的AAA 伺服器多為RADIUS(Remote Authentication Dial In User Service)伺服器,比較新的有所謂的Diameter,其主要的推動者為3GPP2 的CDMA 2000 社群,但是Diameter 並不是CDMA 2000 的規格。 另外有還有CISCO 的TACACS+(TerminalAccess Controller Access Control System)。
RADIUS伺服器與其用戶之間訊息交換如上圖,基本上其訊息都是成對的,有一個Request訊息,相對的會有一個Response、Accept 或是Reject訊息告知其使用者目前的狀況。 當使用者欲獲得資源的授權時,會先送出Access Request訊息至RADIUS伺服器,伺服器收到之後檢查使用者認證資訊,驗證使用者身份,確定使用者的對於資源的使用權限,回覆使用者接受其請求或是拒絕,若接受此使用者,則可以使用網路資源。
IEEE 802.1x的認證方式大約可分成三類, 1. 基於密碼方式(Password base), 2. 基於電子憑證方式(Certificate base), 3. 基於SIM卡方式(SIM card base)。 對應這三類的認證方式且適用於公眾區域網路的有EAP-MD5、EAP-TLS及EAP-SIM,其中混合1,2類的認證方式為EAP-TTLS。
EAP-MD5 認證方式是假設客戶端與認證伺服器事先共享一把金鑰,再利用MD5演算法保護客戶端密碼,這樣的認證方式與其他方式比較的缺點是無法達成互相認證的效果及無法於認證過程動態產生金鑰。
步驟一進行雙方互相協調,將要進行那個EAP 認證協定 步驟三由Authenticator 要求使用者送出其識別碼(Identity)。 步驟四由使用者送出其識別碼至Authenticator,Authenticator 轉送至後端認證伺服器。 步驟五認證伺服器送出一隨機亂數值至Authenticator,並由Authenticator 轉送至使用者端。 步驟六使用者端執行前述之雜湊運算,回送至認證伺服器,認證伺服器自其資料庫中選取使用者密碼執行相同之運算,比對兩值是否相符,以此方式認證使用者。 步驟七認證伺服器選取使用者與Authenticator 共享的加密金鑰,作為使用者與AP 之間加密之用。
EAP-TLS認證方式是由MicroSoft與Cisco共同提出的標準,需要公開金鑰基礎建設(PKI,Public Key Infrastructure),也就是假設客戶端與認證伺服器事各自擁有電子憑證,以數位簽章的技術達到互相認證的效果,並同時可在客戶端與認證伺服器間交換金鑰。理論上,這樣的機制最具彈性,不過因為PKI的建製相當複雜,將使得大規模的部署產生很大的困難,基本上即是缺乏完整的PKI建設。
步驟一進行雙方互相協調,將要進行那個EAP 認證協定 步驟三由Authenticator 要求使用者送出其識別碼。 步驟四使用者將其透過無線網路送至Authenticator , 由Authenticator 轉送至認證伺服器端。 步驟五則由認證伺服器送出開始EAP-TLS 的認證協定。 步驟六至步驟九就是將TLS 協定,精確的講是將TLS 協定嵌入EAP 的協定之中,使用TLS 安全協定在安全保護上的特點,執行金鑰分配及相互認證。當此部分進行完之後,雙方已透過TLS 協定的機制,將協調出一加密金鑰。 步驟十由使用者端送出請求訊息至認證伺服器,瞭解先前所進行的EAP-TLS 協定是否認證成功。 步驟十一由認證伺服器送出WAP-TLS 協定認證成功的訊息,通知Authenticator 可以讓使用者連上網路了,並將Authenticator 與使用者之間的通訊金鑰交給Authenticator。
由於原本無線網路安全性問題逐漸浮現,因此IETF也著手制訂“IEEE 802.1X RADIUS Usage Guidelines”為802.1x 與Radius之間AAA的認證機制建立一套標準流程,也進一步的提供無線網路使用者端連線動態更換WEP Key的能力,並且Access Point可以為每個無線網路使用者端提供不同的WEP Key值。 由於無線網路的加密機制仍舊是採用原本固定WEP Key的加密方式,也就是說雖然可以透過802.1x提供動態設定WEP Key的機制,但在下一次透過EAPOL-Key更換WEP Key之前,無線網路傳輸的兩端都會透過同一把WEP Key進行加密,對於惡意入侵無線網路的人而言,如果設定動態更新WEP Key的時間週期過長,也不足以確保無線網路的安全性。
由於802.1x更新WEP Key的機制,並沒有一個Handshaking的流程,所有更換WEP Key的動作都是透過Access Point告知無線網路使用者端,因此如果設定更新WEP Key的週期很短,在更多使用者加入使用並且頻繁更新WEP Key的情形下,也容易發生使用者端無法正確接收Key導致WEP Key更新錯誤連線中斷的問題。
三、IEEE 802.11i IEEE 802.11i的目標是以針對無線網路原本所具備的弱點加以補強,但由於IEEE 802.11i的標準尚未制訂完成,在WIFI的推動下,制訂了“WIFI Protected Access”標準,以IEEE 802.11i Draft為藍圖,去建構出一個符合現今需求,具備更進一步安全性的無線網路環境。 目前802.11i主要定義的加密機制可以分為TKIP (Temporal Key Integrity Protocol)與AES,其中TKIP就是目前WPA 1.x (WPA/SSN)主要採用的加密機制。
TKIP主要的設計是相容於原本802.11的硬體產品,透過韌體與軟體升級來提高加密的安全,一樣是透過RC4加密,但是可以讓每個封包都提供不同的加密Key值。 原本的WEP加密使用24-bit的IV值,目前的TKIP使用48-bit IV值,大幅減低IV值重複的問題。因此WPA可以說是基於802.1x與EAP提供更高的使用者認證與安全能力,雖然目前的WPA TKIP已經比起原本單純的WEP加密更為可靠,但這只是目前WPA第一個版本的方案,在未來WPA的版本中,將進一步採用AES做為傳輸加密機制。 WPA TKIP相較於過去WEP加密,主要的不同在於過去是直接把收到的WEP Key作為加密的運算值,可是WPA TKIP並不是如此,而是將所收到的Key值,重新運算出加密的金鑰,在透過計算出來的加密金鑰進行後續加密的動作。
TKIP Per-Packet加密示意圖
在TKIP加密的機制下,會透過兩個階段產生之後要透過RC4加密的Key,也就是說基本上TKIP的加密機制與128-bits WEP Key 是一樣的,只是在於產生Key的方式不同,主要的差別就是WEP Key是把使用者輸入的WEP Key與IV 值直接作為加密的RC4 Key值,可是對於TKIP而言使用者所輸入的TKIP Key與封包的IV值都只是產生最後加密所用128 bits的參數,而不是直接把輸入或是夾帶的IV值拿來加密,相對的也就提高他的安全性。更可為每一個封包不同加密的128 bits Key值,提供最完整的安全性。 而原本用來加密的48 bits IV值,被分為兩個部分(32 bits與16 bits),分別在Phase 1與Phase 2的程序中參與加密Key的產生。
在802.11i WPA下的封包格式
MIC的運作機制
除了產生Key的方式更為安全以外,還多了對於傳送封包完整性的確認,在目前的WPA中還加入了MIC(MessageIntegrity Code) 用來確認訊息完整性的編碼機制,透過在每一個封包的後面加入一個MIC值,來確認彼此封包的完整性,比起過去只單純的透過CRC值來確認封包的正確性,又提高了可靠度。 基本上MIC的運作機制是,送端在送出封包前,把未加密過的資料內容透過Michael演算法,求得一個64 bits的MIC值,對收端來說,把收到的封包解密後,依樣針對資料內容透過Michael演算法計算一次MIC值,如果一致就表示封包正確無誤,如果不一致,就表示封包在傳輸過程中發生錯誤。
各類無線區域網路安全標準關係圖
四、結語 IEEE 802.11i在認証方面仍採用IEEE 802.1x的方案,主要新定義了TKIP與AES兩種加密方式,其中TKIP改良了RC4演算法,特別加強了輸入明文前先打亂的動作,因此以軟體方式即可升級;AES則須達到Real-Time的效果,要採用則須更改硬體,是比較麻煩的解決方案。 2002年十月Wi-Fi聯盟為了先解決目前安全方面的問題,先提出WPA(Wi-Fi Protected Access)方案,WPA標準基本上也採取TKIP,許多晶片廠商也紛紛在WPA標準公佈稍後表示將支援WPA,如Intersil、Atheros、Atmel、Agere、Envara等。因此預期IEEE 802.11i標準中,加密方式將以TKIP先普及,再來才是AES。
問題與討論