無線網路WPA安全機制剖析

無線網路WPA安全機制剖析

一,前言
隨著無線網路的日趨普及與大量應用,無線傳輸的安全性,儼然成為個人與企業用戶關注的焦點。由於無線網路技術被大量應用在生活與辦公室環境裡,因此提高了駭客入侵與破解的動機,對於個人隱私與企業機密資料的保密性上,就有其需要探究與加強的部分。
早期無線網路是透過WEP(Wired Equivalent Private)與固定的WEP Key作為加密機制,這樣的加密方式主要是透過RC4配合 64 bits128 bits Key兩種不同長度的WEP Key作為加密保護,由於原本無線網路在WEP Key所採用的IV值都是以24 bits的長度,而且只有IV值是變動的,之後 40 bits 或是 104 bitsKey都是固定不變的。 也就是說對於要入侵網路的駭客而言,基本上只要可以累積相同的IV值封包,就可以進行對IV值之後 40 bits 或是 104 bits加密Key的破解,進而實現入侵無線網路的的企圖。因此,過去企業採用無線網路時,由於WEP Key的內容都是固定的,為了避免惡意的入侵,網管人員必須每隔一段時間通知使用者更換加密的WEP Key,進而降低被入侵的風險。
由於原本無線網路安全性問題逐漸浮現,因此IETF也著手制訂 IEEE 802.1X RADIUS Usage Guidelines ” 802.1x  Radius之間AAA的認證機制建立一套標準流程,也進一步的提供無線網路使用者端連線動態更換WEP Key的能力,並且Access Point可以為每個無線網路使用者端提供不同的WEP Key值。但由於無線網路的加密機制仍舊是採用原本固定WEP Key的加密方式,也就是說雖然可以透過802.1xEAPOL-Key提供動態設定WEP Key的機制,但在下一次透過EAPOL-Key更換WEP Key之前,無線網路傳輸的兩端都會透過同一把WEP Key進行加密,對於惡意入侵無線網路的人而言,如果設定動態更新WEP Key的時間週期過長,也不足以確保無線網路的安全性。進一步的,由於802.1x透過EAPOL-Key更新WEP Key的機制,並沒有一個Handshaking的流程,所有更換WEP Key的動作都是透過Access Point告知無線網路使用者端,因此如果設定更新WEP Key的週期很短,在更多使用者加入使用並且頻繁更新WEP Key的情形下,也容易發生使用者端無法正確接收EAPOL-Key導致WEP Key更新錯誤連線中斷的問題。
有鑑於此,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的加密機制
二,TKIP 加密機制與概念
目前的 WPA 1.x TKIP 相較於原本的WEP加密機制,多了以下的能力
(1)48-bitsIV
(2)TKIP Per-Packet Key加密機制e每個Packet都產生不同加密的Key
(3)MIC(Message Integrity Code)<Michael>e訊息完整性編碼機制
如下圖()所示,為原本WEP透過RC4加密的示意圖,每一個送出去的封包都會包括24-bits變動的IV值,加解密的兩端透過固定的 40-bits  104-bitsWEP Key24-bitsIV值,形成 64-bits 或是 128-bitsRC4加密Key值,用來加解密無線網路傳輸資料。
(), WEP RC4 加密
如下圖()所示,在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 bits16 bits),分別在Phase 1 Phase 2的程序中參與加密Key的產生。
()TKIP Per-Packet加密示意圖
除了產生Key的方式更為安全以外,還多了對於傳送封包完整性的確認,如下圖()所示,在目前的WPA中還加入了 MIC(Message Integrity Code) 用來確認訊息完整性的編碼機制,透過在每一個封包的後面加入一個MIC值,來確認彼此封包的完整性,比起過去只單純的透過CRC值來確認封包的正確性,又提高了可靠度。
(), 在802.11 WPA下的封包格式
基本上MIC的運作機制是,送端在送出封包前,把未加密過的資料內容透過Michael演算法,求得一個64 bitsMIC值,對收端來說,把收到的封包解密後,依樣針對資料內容透過Michael演算法計算一次MIC值,如果一致就表示封包正確無誤,如果不一致,就表示封包在傳輸過程中發生錯誤。
如下圖()所示,為透過TKIP加密把封包送出的流程,
()TKIP封包加密
如下圖()所示,為收到TKIP封包後,解密的流程
()TKIP封包解密
透過以上的說明,各位應該已能體會WPA機制與過去無線網路加密的不同,尤其針對每個封包運算不同RC4加密Key值的改變,讓有意入侵無線網路的駭客,更難以透過監聽無線網路傳輸的方式入侵使用者與企業網路。
三,WPA運作與安全問題
目前WPA所定義的Access Point必須要能夠支援
(1) WEP加密(64 and 128 bits)
(2) TKIP 加密
(3) 802.1x + EAP Authentication Capability
也就是說,具備WPA能力的 Access Point將會需要同時支援WEP  TKIP 加密的能力,為了讓使用者端與Access Point端都可以瞭解彼此所能支援的加密機制與功能,所以一個支援WPA標準的Access Point在發出Beacon Frame與回應Probe Response時,就必須要在所傳回的Frame中填入Information Element,也就是說透過Information Element所定義的OUI欄位,使用者端可以知道目前所屬網域Access Point所具備的加密機制,再根據使用者端本身的設定選擇對應的方式加入Access Point
而對於Access Point端而言,每一個使用者端的網卡要連上該網域時亦會發出 Association Request Access Point端就可以透過 Association Request Frame中的Information Element中所具備的OUI欄位, 知道目前連上Access Point的使用者端所具備的加密機制與能力, 再根據本身是否支援來決定是否允許使用者連線上來。
如下圖()所示,Access Point會透過Beacon  Probe Response Frame傳遞Information Element,而每個Supplicant根據Access Point所具備的能力,再透過Access Request送出自己的Information Element,如果Access Point決定要接受該Supplicant的連線要求,就會送出成功訊息。
() Information Element Frame
目前WPA Information Element包括以下OUI 設定參數
Encryption Type
OUI Setting
NONE
0x000x500xf20x00
WEP 64bits
0x000x500xf20x01
TKIP
0x000x500xf20x02
AESCCMP
0x000x500xf20x03
AESWRAP
0x000x500xf20x04
WEP 128bits
0x000x500xf20x05
WPA 認證程序(Coordination of Authentication Process)Key的交換
在過去的802.1xKey的程序中,使用者端並沒有回應的機制,也就是說在過去的Access Point透過802.xEAPOL-Key送出換WEP Key的命令時,由於使用者端並沒有回應的機制,如果說這一個EAPOL-Key的封包遺失了,那將會造成使用者端與Access Point端無法進行同步的換WEP Key的動作,如下圖()所示

()EAPOL-Key Procedure
首先在完成完整的EAP認證後,最後Access Point會送出EAPOL-EAP Success的訊息,之後就是連續兩次分別設定使用者端Session Key(每個使用者端專屬的WEP Key)Group Key(全部使用者端共用的WEP Key)EAPOL封包。
對於Access Point而言,與每個各別的使用者端通訊使用的是Session Key,由於每個使用者端的Session Key都不同,所以可以確保每個不同使用者端一定程度的安全機制,而對於要廣播給在這區域內所有使用者的資訊,就可以透過Group Key傳遞。
如下圖()所示,由於EAPOL的封包,是屬於MAC Layer的封包,並不像上層的TCP封包一樣,有既定的封包重送機制,如果送給使用者端的EAPOL封包內容是錯誤的,或是封包遺失,都很可能會造成兩端換WEP Key的動作無法順利的接續下去,而造成使用者端的網路連線中斷。
()EAPOLEAP封包
不過在,WIFI Protected Access針對無線網路安全的標準定義之後,在換Key的動作部分定義了不同的協議過程,讓換Key的流程可以有一個完整與安全的協議過程,基本上WPA定義的換Key可以分為兩個部分,
(1) Unicast Key e屬於每個使用者端專屬的Key
(2) Group Key e屬於同一個Access Point涵蓋區域內,所以使用者共用的Key
Unicast Key 4-way Handshake
IEEE 802.11i的標準中,要交換一個Unicast Key需要經過四次的Handshake動作,而這也是目前WPA所遵循的標準,如下圖()所示
()4-way Unicast key handshake
對於使用者端與Access Point而言,並不會把最後用來加密的Key透過封包傳送,而是由Access Point端先傳送一個任意產生的32 bytes ANonce給使用者端,使用者端同樣任意產生32 bytes SNonce,在根據Access Point端傳送的ANonce32-bytes PMK(Unicast Master Key)加以計算,就可以得到最後要加密用的Key,其中也包含之後EAPOL-Key用來計算MIC值的Key
接下來使用者端傳送EAPOL-Key回給Access Point,其中包含SNonce與計算封包的MIC值,Access Point就會透過計算MIC值與來確認這個封包的正確性。
對於WPA-RadiusUnicast Key而言,PMK就是透過EAP認證成功後,由Access Point 根據 Radius Server 認證的結果,所計算出的MS-MPPE-Recv-Key(32 bytes)。而對於WEP-Pre-Shared Key的方式而言,PMK 就是使用者預先輸入Key值,所轉換的32 bytes Pre-Shared Key
在這階段交換訊息的流程中,會透過ANonceSNonce產生一個512 bitsKey值,其中這把512 bits Key值又可以分為以下幾個部分
TKIP Key Hierarchy Pair-wise keys
0-127
EAPOL-Key MIC Key
128-255
EAPOL-Key Encrypt Key
256-383
TKIP 128 bits based Key
384-511
64 bits
TX MIC Key
64 bits
RX MIC Key
如下圖()所示,我們可以看到經過Unicast 4-way Handshake後,所產生的幾種Key值,與他們在 Key 計算後的長度與位置
()PTK Key
在介紹Unicast Key的交換後,接下來我們進一步的說明交換Group Key的流程
Group Key 2-way Handshake
Group Key主要是透過2次的Handshake來完成交換,如下圖(十一)所示
(十一)2-way Group key handshake
如下圖(十二)所示,我們可以看到經過Group 2-way Handshake後,所得到長度為256 bits Group Key。在Handshaking的過程中,Group Key 存在於 EAPOL-KeyKey欄位,必須要透過計算Unicast Key時所產生的 128-bits Encrypt Key 來解回(128-255 bits)
(十二)GTK Key
如下圖(十三)所示,是原本802.1x Standard所制定的EAPOL-Key 封包,我們可以發現從原本EAPOL-Key封包的欄位來看,並沒有包括進行Handshaking所需的機制(例如:ACK Field),也因此原本802.1x 所制訂的EAPOL-Key,並不能完全滿足無線網路在普及之後的大量使用情況。
(十三)802.1x所定義的EAPOL-Key Frame
如下圖(十四)所示,則是根據IEEE 802.11i Draft 所制定的EAPOL-Key 封包,相對於802.1x所定義的EAPOL-Key而言,具備了更多足以滿足大量應用下,安全與可靠性機制
(十四)802.11i所定義的EAPOL-Key Frame
在處理 WPA EAPOL-Key封包時,我們必須依據每一個封包的Key Information欄位(16-bits)來判斷每個EAPOL-Key封包所代表的意義,例如:設定Unicast or Group Key、封包是否包含MIC確認欄位、EAPOL-Key是否需要回應與這次運算的WPA加密Key是否載入,如下圖(十五)所示


(十五)Key Information 說明
如下表()所示,針對每一個Key Information欄位的說明
()Key Information 說明
Bit Range
Description
0-2
Key descriptor version type
3
Key type
(1= Unicast key 0 = Group key)
4-5
Key Index
(0 for Unicast key1-3 for Group Key)
6
Install
Unicast Key e 1 = install 0 = Not
Group Key e1 = install for TX and RX 0 = install for RX
7
ACK
Set in messages from the Authenticator if an EAPOL-Key message is required in response to this message
8
MIC
Set if a MIC is in this EAPOL-Key message and it is clear if this message contains no MIC
9
Secure
Set once the initial key exchange is complete
10
Error
Supplicant sets this bit to report that a MIC failure occurred
11
Request
Supplicant sets this bit to request that the Authenticator initiate either a 4-way or group key handshake
12-15
Reserved
整題而言,WPA標準制訂為無線網路的安全性議題奠定了相當完整的架構,包括了與Radius AAA認證與預先輸入的Pre-Shared Key模式,都足以提供企業網路管理的需求以及個人用戶的高安全性標準。
四,結語
目前的WPA提供相較於過去WEP加密機制而言,更為嚴謹與完整的無線網路保護,隨著目前無線網路的日趨普及,對於企業與注重安全性的個人而言,具備WPA機制的無線網路設備,在未來將是一必備的功能與要素。
一個具備安全性的無線網路環境,除了提供更為嚴謹的傳輸加密機制以外,透過WPA-Radius模式提供EAP認證,限制企業內部員工使用無線網路的行為與地點,將可有效的管理使用者登入網路的行為,進一步確保內部網路的安全性。展望未來無線網路的發展,包括與電信業者核心網路HLR結合EAP-SIM/AKA提供漫遊與認證服務,都將是無線網路在日後進一步普即與大眾化必備的要素。
五,參考資料
1 IEEE 802.11i Draft
2 WIFI Protected Access Standard
3IEEE 802.1X RADIUS Usage Guidelines(http://www.potaroo.net/ietf/xld-ids/draft-congdon-radius-8021x-29.txt-63145.txt)