1. 程式人生 > >非802.11r的Fast Roaming

非802.11r的Fast Roaming

Fast Roaming就是為了提高roaming的效率。在802.11r前,通常是指在RSN(WPA2)的框架下,略過EAP/802.1X,使用PMKSA Cache中的PMK直接進行連線。

所以,在WPA或是WEP的情況下,無法進行Fast Roaming。

在802.11r釋出之前,Fast Roaming大致分為3種情況:

  1. 普通的PMKSA Cache
  2. Preauthentication
  3. OKC(Opportunistic Key Caching)
無論哪種情況,在Roaming時的流程都是差不多的:STA在(re)associate request的RSN IE裡帶上一個PMKID List,然後AP在PMKSA Cache裡找到一個PMKID匹配的Entry。 差別在於Roaming前的行為。 雖然說允許STA送上一個PMKID List,但通常STA只會送一個PMKID。 所以,是否要啟動Fast Roaming,完全取決於STA的行為,Fast Roaming能否成功,則需要AP的配合。 Preauthentication
Preauthentication是802.11-2007中定義的Fast Roaming方法。是指STA通過當前連線的AP(AP1),跟它即將要連的AP(AP2)進行一次完整的802.1X認證。認證通過後,AP2中就會生成一條PMKSA Cache。 簡單總結下:預認證是用於802.1X。與多個AP進行開放式系統認證並不是預認證。向新AP進行802.1X認證才是預認證。
當使用WPA時能否進行預認證(preauthentication)?按照802.11-2007標準,預認證能力是利用RSN IE來通告的。這意味著Wi-Fi聯盟之前的WPA由於使用WPA IE而不是RSN IE而不能進行預認證。 
當Fast Roaming發生時,STA會把新的PMKID送給AP2,AP2在自己的Cache裡找到這個PMKID後就可以略過802.1X了。 WPA2和WPA區別是什麼呢?它們對於快速漫遊和安全特性有什麼影響呢?  首先,要知道一個BSS只要不支援WEP而支援TKIP或CCMP,那麼就被認為是一個RSN。 但使用哪一種encryption cipher(s)也決定了BSS中的幀格式。具體來講,如果網路支援WPA2 (AES-CCMP與可選的TKIP)安全,那麼在許多管理幀中將包含RSN IE。但如果BSS僅支援WPA安全(TKIP),那麼RSN IE將被WPA IE替換。WPA IE與RSN IE的功能類似,但RSN IE中的一些欄位發生了變化或被忽略。 
仔細分析下WPA IE中遺漏的一些欄位。首先WPA IE中不存在preauthentication欄位,這也就意味著不能支援預認證功能。而且,WPA IE中不存在PMKID Count和PMKID List欄位,而現在快速安全漫遊中的許多特性(諸如PMK caching和Opportunistic Key Caching (OKC))都要使用這些欄位,這兩個欄位缺失也意味著不能支援這些特性,這對於移動環境中使用WPA-Enterprise的人是一個考驗。
下面看看WPA IE和RSN IE的差異。 
 

圖 2-1 Beacon幀中攜帶的WPA IE 
 
圖 2-2 關聯請求幀中攜帶的WPA IE


圖 2-3 Probe應答幀中攜帶的RSN IE


圖 2-4 關聯請求幀中攜帶的RSN IE

    圖 2-1是Beacon幀(使用PSK安全)中攜帶的WPA IE, 可以與圖 2-3給出的Probe應答幀(使用802.1X/EAP安全)中攜帶的RSN IE對比。然後比較圖 2-2和圖 2-4,分別是關聯請求幀中攜帶的WPA IE和關聯請求幀中攜帶的RSN IE。這裡的截圖使用了現實世界中常用的PSK和802.1X/EAP來展示兩者的差異。
    注意:OUI從00:0F:AC變為00:50:F2(IEEE對Wi-Fi聯盟),但是cipher type與authentication type的編碼相同。在WPA IE中沒有preauthentication bit,而且在(重)關聯幀1如果對老客戶需要支援TKIP,但又要支援CCMP,那麼可以配置為WPA2就可以同時支援這兩種ciphers,這將使網路中使用的是RSN IE。當然,你會發現一些使用TKIP的裝置無論如何不支援快速安全漫遊,但是客戶真的希望具備該特性。 中沒有PMKID count和PMKID list欄位。注意這裡的RSN IE截圖中只有PMKID Count欄位而沒有PMKID List欄位,這是由於PMKID Count取值為0,否則將會有PMKID list欄位。
    如果對老客戶需要支援TKIP,但又要支援CCMP,那麼可以配置為WPA2就可以同時支援這兩種ciphers,這將使網路中使用的是RSN IE。當然,你會發現一些使用TKIP的裝置無論如何不支援快速安全漫遊,但是客戶真的希望具備該特性。
    現今企業中對漫遊的支援非常差,這對於商家,尤其是client和supplicant的商家應當是一塊大蛋糕,但沒有商家來替使用者考慮。使用802.1X/EAP 的使用者要想實現漫遊,現實世界除了幾個專用的解決方案(Cisco的Cisco Centralized Key Management—CCKM或Meru的Virtual Port/Cell),其他商家對此並沒有下大力氣來解決,而是將問題留給了使用者:要安全還是要效能。希望Wi-Fi聯盟能夠將它列為WPA2-Enterprise認證中的一項需求。
OKC(Opportunistic Key Caching)
OKC,也叫OPC(Opportunistic PMK Caching),是微軟定義的一套標準,並不在802.11標準中。不過多數廠商都支援這種方式,也成為了一種事實標準。 其流程大致如下: 當STA跟AP1經過完整的EAP/802.1X建立連線後,產生一條PMKSA,裡面包含一個PMKID1,然後AP1把這個PMKSA傳給它的鄰居,其中一個就是AP2。 Fast Roaming發生前,STA要根據AA,SPA和PMKID1計算出一個PMKID2,把這個PMKID2放在RSN IE裡,送給AP2。 AP2在收到這個PMKID2後,就像平時一樣,會在自己的PMKSA Cache裡找,當然,這是找不到的。因為Cache沒有一個的PMKID是PMKID2。然後,AP2就要對Cache中的每一個Entry計算一次新的PMKID,其必要的幾個元素,AA,SPA和PMKID1都是有的。每計算一個就跟PMKID2匹配一次,匹配成功就可以直接進行4次握手。 Preauthentication雖然在Roaming期間略過了802.1X,但還是每次都要做,只不過提前罷了。 OKC的出現,就是為了解決每次都要做802.1X的問題,可以提高效率,降低網路負荷。可是,OKC的方便是建立在犧牲安全性的基礎上的。這會導致每個AP上都拿到相同的PMK。 為了同時解決Preauthentication和OKC的缺陷,IEEE推出了802.11r,對Fast Roaming進行了補充。