前言:什么是漫游?
漫游行为:
简单来说,就是设备从一个AP,连接到另一个AP。IP地址不需要重新申请。整个过程需要尽可能快的进行,否则对于用户而言,就会发现网络出现卡顿。而为了安全,网络的认证过程已经变得十分耗时(例如802.1X认证)。所以为了避免漫游时出现重新认证,开发出了OKC,以及802.11R协议进行补充。避免漫游时进行完整的认证过程。
使用OKC,802.11R等协议,省去认证过程的漫游称为快速漫游
一、预先认证(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而不能进行预认证。
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的设备无论如何不支持快速安全漫游,但是客户真的希望具备该特性。
Preauthentication虽然在Roaming期间略过了802.1X,但还是每次都要做,只不过提前罢了。
OKC的出现,就是为了解决每次都要做802.1X的问题,可以提高效率,降低网络负荷。可是,OKC的方便是建立在牺牲安全性的基础上的。这会导致每个AP上都拿到相同的PMK。
为了同时解决Preauthentication和OKC的缺陷,IEEE推出了802.11r,对Fast Roaming进行了补充。
二、OKC
OKC(Opportunistic Key Caching)
也叫OPC(Opportunistic PMK Caching),是微软定义的一套标准,并不在802.11标准中。不过多数厂商都支持这种方式,也成为了一种事实标准。是在PMK caching基础上进行设计的。所以首先了解一下PMK caching
2.1、PMK caching
PMK caching是由802.11i协议定义的,一种用在单个AP与设备之间的认证中的有效技术。使用在当一个工作站已经认证在某个AP上,然后漫游到其他AP,之后又漫游回该AP。不用进行完整的认证,只需进行802.11i中定义的四次握手交换共享密钥过程即可。
所以PMK caching只适用802.1X认证。
工作原理:
在漫游发生之后,会在关联请求帧中将PMKID上报,AP根据PMKID在PMK caching中进行查找对应的PMK,如果找到,就不需要再进行802.1X过程获取PMK了。
2.2、OKC
Opportunistic Key Caching:是与PMK caching类似的技术,也是为了避免复杂的802.1X认证过程。
OKC适用在同一网络下,同一AC下的多个AP之间进行的漫游。
与PMK caching不同,OKC会将PMK在AP之间进行交换。
工作原理:
当STA跟AP1经过完整的EAP/802.1X建立连接后,产生一条PMKSA,里面包含一个PMKID1,然后AP1把这个PMKSA传给它的邻居,其中一个就是AP2。
漫游发生前,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次握手。
注意:
由于OKC是在PMK caching上进行开发,且并不是Wi-Fi联盟推出的协议,所以并不是每个设备厂商都支持。
参考文档:
《Aruba+OKC+Implementation》:
aruba公司关于OKC的官方文档,下载网址:
https://download.csdn.net/download/u012503786/10931601
代码参考:
hostapd中的pmksa_cache.c和pmksa_cache_auth.c
三、802.11R
802.11R与OKC的不同:
1、802.11R不仅可以用在802.1X认证中,也可以用在PSK认证中
2、802.11R协议延伸出新的共享密钥生成过程
3、802.11R将密钥交换过程放到关联认证过程
4、802.11R不仅可以省去802.1X认证过程,也可以省去四次握手过程
参考文档:
《802.11r BSS Fast Transition Deployment Guide》:英文
关于802.11r步骤的文档,没有802.11r的细节描述,下载地址:
https://download.csdn.net/download/u012503786/10931616
《基于802.11R协议的快速漫游系统的设计与实现》:中文
论文,介绍802.11r的实现过程细节,有抓包分析。
《IEEE Std 802.11r-2008》英文
IEEE关于802.11r技术的标准文档,版本为2008年版,有详细的介绍,强力推荐下载地址:
https://download.csdn.net/download/u012503786/10931632
《80211r原理明细》中文
侧重于介绍802.11r的密钥产生以及状态机变化,下载地址:
https://download.csdn.net/download/u012503786/10931623
代码参考:
hostapd中的wpa_ft.c和wpa_auth_ft.c
*******************************************************************************************
无法下载可发送邮件至hanfs390@foxmail.com