Posted by Lawpig on 5月 31, 2017 | No comments
無線網路WPA安全機制剖析
一,前言
隨著無線網路的日趨普及與大量應用,無線傳輸的安全性,儼然成為個人與企業用戶關注的焦點。由於無線網路技術被大量應用在生活與辦公室環境裡,因此提高了駭客入侵與破解的動機,對於個人隱私與企業機密資料的保密性上,就有其需要探究與加強的部分。
早期無線網路是透過WEP(Wired Equivalent Private)與固定的WEP Key作為加密機制,這樣的加密方式主要是透過RC4配合 64 bits與128 bits Key兩種不同長度的WEP Key作為加密保護,由於原本無線網路在WEP Key所採用的IV值都是以24 bits的長度,而且只有IV值是變動的,之後 40 bits 或是 104 bits的Key都是固定不變的。 也就是說對於要入侵網路的駭客而言,基本上只要可以累積相同的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.1x的EAPOL-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-bits的IV值
(2)TKIP Per-Packet Key加密機制e每個Packet都產生不同加密的Key
(3)MIC(Message Integrity Code)<Michael>e訊息完整性編碼機制
如下圖(一)所示,為原本WEP透過RC4加密的示意圖,每一個送出去的封包都會包括24-bits變動的IV值,加解密的兩端透過固定的 40-bits 或 104-bits的WEP Key與24-bits的IV值,形成 64-bits 或是 128-bits的RC4加密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 bits與16 bits),分別在Phase 1與 Phase 2的程序中參與加密Key的產生。
圖(二),TKIP Per-Packet加密示意圖
除了產生Key的方式更為安全以外,還多了對於傳送封包完整性的確認,如下圖(三)所示,在目前的WPA中還加入了 MIC(Message Integrity Code) 用來確認訊息完整性的編碼機制,透過在每一個封包的後面加入一個MIC值,來確認彼此封包的完整性,比起過去只單純的透過CRC值來確認封包的正確性,又提高了可靠度。
圖(三), 在802.11 WPA下的封包格式
基本上MIC的運作機制是,送端在送出封包前,把未加密過的資料內容透過Michael演算法,求得一個64 bits的MIC值,對收端來說,把收到的封包解密後,依樣針對資料內容透過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
|
0x00,0x50,0xf2,0x00
|
WEP 64bits
|
0x00,0x50,0xf2,0x01
|
TKIP
|
0x00,0x50,0xf2,0x02
|
AESCCMP
|
0x00,0x50,0xf2,0x03
|
AESWRAP
|
0x00,0x50,0xf2,0x04
|
WEP 128bits
|
0x00,0x50,0xf2,0x05
|
WPA 認證程序(Coordination of Authentication Process)與Key的交換
在過去的802.1x換Key的程序中,使用者端並沒有回應的機制,也就是說在過去的Access Point透過802.x的EAPOL-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的動作無法順利的接續下去,而造成使用者端的網路連線中斷。
圖(八),EAPOL與EAP封包
不過在,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端傳送的ANonce與32-bytes PMK(Unicast Master Key)加以計算,就可以得到最後要加密用的Key,其中也包含之後EAPOL-Key用來計算MIC值的Key。
接下來使用者端傳送EAPOL-Key回給Access Point,其中包含SNonce與計算封包的MIC值,Access Point就會透過計算MIC值與來確認這個封包的正確性。
對於WPA-Radius的Unicast Key而言,PMK就是透過EAP認證成功後,由Access Point 根據 Radius Server 認證的結果,所計算出的MS-MPPE-Recv-Key(32 bytes)。而對於WEP-Pre-Shared Key的方式而言,PMK 就是使用者預先輸入Key值,所轉換的32 bytes Pre-Shared Key。
在這階段交換訊息的流程中,會透過ANonce與SNonce產生一個512 bits的Key值,其中這把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-Key的Key欄位,必須要透過計算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 key,1-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
0 意見:
張貼留言