80211r原理明细.docx
- 文档编号:27211056
- 上传时间:2023-06-28
- 格式:DOCX
- 页数:41
- 大小:2.73MB
80211r原理明细.docx
《80211r原理明细.docx》由会员分享,可在线阅读,更多相关《80211r原理明细.docx(41页珍藏版)》请在冰豆网上搜索。
80211r原理明细
总述
IEEE802.11r(FastBSSTransition)定义了STA在同一移动域(MD)中的AP之间漫游时的交互细则,提供了实现BSS快速转换的标准。
协议描述的主要方法为:
STA第一次与MD内的AP关联时,利用802.1x认证获得的主会话密钥(MSK,由于该密钥为认证者和申请者共享,也成为成对主密钥(PMK))和MD内各个AP的R1KH_ID计算出不同的PMKR1分发给MD内的其它AP;发生切换时,STA直接利用发送到目标AP上的PMKR1协商出成对临时密钥(PTK)和组临时密钥(GTK),以此缩短切换时间,避免再进行耗时的802.1x认证。
协议主要描述了四个部分的内容:
密钥管理、新增的信息元素、FT初始化关联和快速切换协议。
密钥管理部分提出了三层密钥结构及其计算方法;新增的信息元素部分给出了MDIE、FTIE、TIE等元素的定义;FT初始化关联部分描述了第一次关联时密钥生成和分发的过程;快速切换协议部分描述了快速漫游过程和由PMKR1计算PTK和GTK的过程。
初始化关联部分和快速切换协议部分分为RSN(RobustSecurityNet)网络和nonRSN网络进行描述。
快速切换协议分为两种,FT协议(FTProtocol)和带资源请求的FT协议(FTResourceRequestProtoc01)。
每种协议的切换方式又可以分为两种,Over-the-Air方式和Over-the—DS方式。
一.提示
1.本文档主要研究支持RSN(802.11i)的无线局域网下的快速切换为主。
2.IEEE文档里提到的802.11r标准是基于自治式WLAN,而不是集中式WLAN,因此实现时会和标准有一定差别
3.同样的,HostAPD模块里对802.11r的实现也会标准不同。
二.802.11i:
强健安全性网络
2.1:
RSN简介
除了TKIP和CCMP,80211i还定义了强健安全性网络(RSN)的标准,主要定义密钥的产生与分配方式.
链路层加密协议使用了两种密钥.成对密钥(pairwisekey)用来保护工作站与AP;间往来的数据.组密钥(groupkey)用来保护AP和所关联的工作站之间的广播帧或组播帧成对主密钥产生于身份验证(802.1x或者PSK),组密钥则是AP动态产生并分配给工作站的。
2.2:
TKIP与CCMP
80211i定义了两种RSNA数据的加密与完整校验协议:
TKIP和CCMP。
CCMP对RSN网络来说是默认执行的协议,而TKIP则是可选项。
TKIP的主要设计目的,在于大部分旧式硬件只支持WEP加密,而TKIP则可在保持WEP基本架构的情况下,提升其安全性。
需要注意的是,TKIP的加密与完整性校验并不像CCMP那样健壮可靠。
一般情况下,仅适用于那些老式的,不支持CCMP的硬件。
2.2.1:
TKIP临时密钥完整性协议
正如前一节所说,TKIP是一套用于在旧式硬件上加强WEP协议的加密机制,在尽量保留WEP基本结构的前提下,TKIP对WEP做了如下修改。
(1)TKIP使用了一种新的完整性校验(Messageintegritycheck,简称MIC)算法:
Michael完整性校验散列算法取代WEP的线性散列算法。
源地址和目的地址都会受到MIC保护,检测伪造帧也相对容易,而WEP是不保护80211帧头的,WEP的CRC也不具备密码学上的安全性。
(2)TKIP使用TKIPsequencecounter(TSC)来为MPDU(Macprotocoldataunit)发出的帧进行计数,次序错乱的帧会被丢弃。
可由此应对重放攻击
(3)TKIP使用一种密钥混合函数将临时密钥,TSC和TA(发送者地址)联合到WEPseed(wep随机数种子)中,WEPSEED由wep密钥(或者说secretkey)和初始向量(IV)组成,WEP长度为40,104或128位初始向量为24位。
如何选取初始向量802.11并未规范。
RC4key由IV和WEP密钥组成,但IV本身放在帧内,也没有加密。
IV本身只有24位长,使用空间约为1600万个,在繁忙的网络里容易出现重复。
TKIP则将IV扩张到了48位,保证了IV的不可重复性。
而对于WEPseed第二部分secretkey,TKIP使用了密钥混合来处理(keymixing),通过密钥混合,用来加密的secretkey可以完全避免重复性。
也就说,每个帧的加密密钥都是不同的。
2.2.2:
CCMP链消息认证码协议
和TKIP一样,CCMP也支持对明文进行加密和完整性保护,加密过程如下图:
2.3:
成对密钥的产生和结构
成对密钥的产生取决于身份验证所采用的方式,如果进行的时PSK验证,则获得的密钥为PSK,如果进行的是802.1x验证,则获得的是MSK。
计算出密钥后,MSK由Radius服务器传送给验证者和工作站,由于该密钥为验证者和工作站共享,故又称为PMK(成对主密钥)。
TKIP与CCMP均使用单一主密钥来产生帧保护操作所需要的其他密钥。
利用派生密钥,工作站可以更新加密密钥而无需重新执行整个认证过程.主密钥本身扮演着秘密根源根源(rootsecret)的角色,必须小心保护因为所有密钥材料(keyingmaterial)都衍生于此.秘钥分级(keyhierarchy)的目的部分是为了派生用来保护临时密钥的传送的密钥.。
由PMK展开为PTK
如果采用CCMP,则展开函数为PRF(伪随机函数)-384,如果采用TKIP,则展开函数为PRF-256,PTK可分为三部分:
KCK(确认密钥),KEK(加密密钥)和TemporalKey(临时密钥)。
由GMK展开为GTK。
PTK和GTK的生成的具体过程,会在四次握手一章里详细讲。
2.4:
EAPOL-KEY帧
IEEE802.11标准使用EAPOL-KEY帧在申请者(STA)和认证者之间交换信息,格式如下:
EAPOL-key的具体内容请参考80211.i相关文档。
在进行四次握手时,EAPOL用到以下标记。
S:
该标志为1代表初始密钥交换已经完成,该位是KeyInformation的secure位。
KeyInformation字段组成
M:
该标志位置1代表MIC可用,在四次握手中除了步骤一,其他步骤该位全置1。
该位是KeyInformation中的keyMIC位。
A:
该标志置1代表要求接收者发送回复。
是Keyinformation字段中的KeyACK
I:
代表成对密钥是否安装好,为Keyinformation字段中Install位。
K:
密钥类型,P为PTK,G为GTK或SMK,为KeyInformation中的Keytype。
SM:
SMK标志位。
KeyRSC:
密钥接收队列计数器,详情请参考80211i文档
Anonce/Snonce:
认证者或申请者的随机值。
MIC:
消息完整性检查,是Eapol—key中的KeyMIC字段,一般用KCK计算而来。
DataDS:
该字段可能包含0或多个信息元素与KDS(比如RSNIE和GTK)
2.5:
80211i的四次握手
在进行四次握手前,工作站先要进行802.1x认证或者PSK认证,认证成功则授权服务器会将PSK(对应PSK认证)或MSK(802.1x)发给认证者和工作者,由于该密钥是认证者和工作站共享,又称为成对主密钥(PMK)。
步骤一:
AP向工作站发送EAPOL-KEY,帧内带上了AP计算出的随机值Anonce,同时KeyAck位置1,表示要求应答,该帧不受MIC保护,但无需担,心被篡改,一旦Anonce被篡改,AP端和STA端计算出的PTK一定不一样从而导致握手失败。
步骤二:
STA收到AP的Anonce之后,加上之前计算出的自身的随机值Snonce,用PRF(参见2.3或者附录)对PMK进行展开,计算出PTK,并回复一个EAPOL-KEY帧,附带STA端的随机值,该帧受消息完整性校验码校验过(该校验码由KCK计算而来)
步骤三:
验证者收到Snonce后,计算出PTK。
再发送一个EAPOL-KEY帧给STA,该帧除了携带GTK,还携带Anonce用于STA进行确认(检查Anonce和步骤一是否相同)。
该帧经过TKIP或CCMP临时密钥加密。
此时双方都拥有同样的临时密钥。
步骤四:
申请者对第三个帧进行应答。
四次握手完成。
802.1x受控端口打开。
三.802.11r的密钥管理
3.1密钥结构
在RSN(802.11i)的基础上,802.11r提出了三层密钥结构和计算方法.而RSN则是一层.RSN通过认证者(对于自治式wlan而言就是AP),申请者(无线工作站)共享的主会话密钥(MSK,在进行802.1X验证时获得)进行展开,获得组临时密钥(GTK)和PTK.因此,80211i的密钥只分一层:
除了作为秘密根源的PMK,就是通过PMK计算而来的PTK。
802.11r则将密钥管理部分分为三层,三层密钥分别为PMK_R0,PMK_R1,PTK。
PMK_R0和PMK_R1的计算则是80211r特有的。
PTK的计算方式与80211i的计算方式也不同,80211i是通过伪随机函数(PRF)展开PMK来获得PTK,而80211i则是通过密钥派生函数(KDF)来展开PMK,KDF函数实际上是PRF的变种。
R0KH(PMKR0Keyholder)和R1KH为认证者一端的密钥管理实体,PMK_R0和PMK_R1的计算由R0KH控制.R0KH同时还要负责提供PMK_R1给R1KH,PTK的计算由R1KH控制.
S0KH和S1KH为申请者(无线工作站)一端的密钥管理实体,S0KH与S1KH的功能与R0KH,R1KH相对应
R0KH-ID是R0KH的标识(NAS—ID),按IEEE标准为1-48字节长,可由厂商自定义,R1KH-ID是认证者的MAC地址.
S0KH-ID和S1KH-ID都为申请者(无线工作站)的MAC地址.
密钥计算流程如下:
如果采用的是802.1X认证方式,R0KH就根据认证交互过程中从radius认证服务器那得到的主绘话密钥(MSK)计算出PMK_R0;如果是采用PSK方式则直接根据PSK进行计算。
当认证成功后,R0KH删除MD中以前存有的与S0KH有关的PMK_R0的安全关联,以及由它计算出来的PMK_R1的安全关联。
R0KH同时根据MD内的不同R1KH_ID计算出PMK_R1,并将它传给同一MD中的所有R1KHs。
PMKRls是用来计算成对临时密钥(PTK)的。
R1KH接收到PMK—R1时就会删除以前的PMK_R1的安全关联,以及它所计算出的PTKSAs
PMK_R0,PMK_R1,PTK的生命周期取决于进行802.1x验证时得到的MSK,长度不能超过MSK本身的生命周期
密钥的计算公式参见下一节
3.2密钥计算公式
具体计算方法请参考IEEE802.11r-2008
3.3密钥的分发和索取
为了实现工作站切换AP时的快速漫游,802.11r规定,在工作站初次与MD进行初始化关联后,认证者在合适的时候(对此802.11r文档没有明确说明,从状态机上看应该是计算出PTK之后,再为其他R1KH计算分发PMK_R1),需要遍历MD中的所有R1KH_ID并计算出相关的PMK_R1发往MD内的所有R1KHs,此后工作站在进行漫游时,可以通过事先配发的PMK_R1计算出PTK,避免再进行费时的802.1x认证。
PMK_R1的计算分发由R0KH完成,所用的计算公式为3-5和3-6,计算过程如下图所示:
由于每个R1KH_ID在MD中的唯一性,计算出的PMK_R1是不同的,因此对于每一个STA,在不同的R1KH里保存的PMK_R1也是唯一的。
但对应的PMK_R0则是一样的。
密钥的索取机制发生的条件为快速漫游时目的AP的R1KH密钥管理实体上没有找到STA要求的PMKR1。
这种情况可能是MD中临时添加了新的AP,或者R0KH密钥管理实体分发密钥时MD中的某个AP没有启动,而不是因为链路不通,或链路不安全。
此时R1KH密钥管理实体会根据STA发出的R0KH_ID字段找到R0KH密钥管理实体索取PMK_R1。
此时R0KH密钥管理实体会根据发出请求的R1KH_ID推演出PMK_R1和PMKRlName存储在R1KH密钥管理实体中。
四.802.11r新增的数据结构
4.1:
MDIE(移动域元素)
一般来说,可将一个ESS看做一个移动域(MD),具体到实现,可将一个AC与其控制下的所有AP及所有关联到这些AP上的STA看做一个移动域.MDIE用于标识该移动域ID与性能.如果MD支持802.11r,那这个元素应该添加到Beacon帧和Proberesp帧里,该元素格式如下
EID用于标识MDIE自身,长度字段设置为3,MDID标识MD,最后一个字段标识MD的性能,格式如下:
B0置1,代表该MD通过over_the_DS的方法执行快速转换;
B0置0,代表该MD通过over_the_Air的方式执行快速转换;
B1置1,代表“带资源请求的FT协议”
B2保留。
4.2:
FTIE(快速转换信息元素)
FTIE元素传递与密钥协商有关的信息,如完整性校验值(MIC)、认证者端的随机数(ANonce)、STA端的随机数(SNonce)、GTK、R1KH—ID和R0KH—ID。
这个信息元素的格式如下图:
SubelementID取值表
GTK字段为已经加密的组临时密钥,格式如下图:
4.3:
TIE(超时间隔信息元素)
4.4:
Action帧
802.11r规定的Action帧分为四类:
请求(request),回复(response),确认(confirm),应答(Ack),Action帧主要用于Over_the_DS类型的快速切换,代替Over_the_Air模式下的Auth帧,
一.FTRequest帧:
该帧用于STA发给CurrentAP,用于进行Over_the_DS的切换,CurrentAP收到该帧后会将其转发给TargetAP。
格式如下:
Category字段:
Action字段:
STAADDR:
工作站的mac地址;
TargetAPaddress:
要切换的AP的mac地址;
帧主体组成:
二.FTresponse帧:
FTresponse帧作为TargetAP对于FTRequest帧的应答,由TargetAP发给CurrentAP,再转发给STA。
格式如下:
前四个字段格式同上,statuscode字段用于通报检查结果,格式如下:
如果statuscode数值为0,表示检查没有问题,帧主体将包含以下三个字段:
4.5:
RICDataIE(RDIE)
一个RIC(resourceinformationcontainer)可以看做一系列的资源请求或者资源回复(resourceresponse),每个资源请求或回复则由一个RDIE组成,格式如下:
长度设置为4;
RDIEIdentifier用于在一个RIC里标识一个RDIE
ResourceDescriptionCount用于说明该RDIE可用的资源描述符数量
StatusCode参见附录
4.6:
RICDescriptorinformationelement
该元素在带资源请求的快速切换期间与RDIE配套使用,用于兑现AP申请的资源。
字段长度视variableparameters字段而变;
Resourcetype字段取值见下表
最后一个字段包含申请的block。
4.7:
RIC(资源信息容器)(Resourceinformationcontainer
在前面提到过,一个RIC是由一系列的资源请求或资源回复组成的。
包括一个或多个ResourceRequest,格式如下:
每个ResourceRequest包含一个RDIE,每个RDIE后包含一个或多个RICDescriptor
五.FT初始化关联
FT初始化关联是STA要接入MD中AP的第一次关联,是后面快速切换的前提。
如果STA支持802.11r,它就会在(Re)Association_Requese帧中加入移动区域信息单元(MDIE);如果支持IEEE802.11i就会加入健壮安全网络信息单元(RSNIE)。
当IEEE802.1X认证通过后(如果是PSK方式则没有这一步),STA和AP就进行4次握手。
握手完毕后IEEE802.1X的受控端口打开,FT的三层密钥结构建立。
详细过程如图
5.1自治式WLAN的初始化关联(支持RSN)
5.2自治式WLAN(不支持RSN)下的初始化关联
5.3集中式WLAN的初始化关联(支持RSN)
5.4流程概述
(1)AP在Beacon帧和proberesponse帧里添加所属移动域的信息(MDIE)和RSNIE;告知STA相关信息
(2)STA与AP进行802.11认证,认证方法为OPEN,而不是sharedkey或FT(FT验证算法只用于Over_the_air方式的快速切换)
(3)STA进行关联操作,如果支持80211r则会添加MDIE,如果支持80211i则添加RSNIE,AP收到assocreq帧后会拿这两个信息元素和自身的MDIE,RSNIE对比(也就是写入Beacon帧里的MDIE),如果不一致会导致关联失败
关联成功后,AP向STA发送assocresp帧,并告知工作站R0KH_ID和R1KH_ID.为以后生产三层密钥(PMK_R0,PMK_R1,PTK)做准备。
(4)关联成功后则进行802.1x的验证(为PSK则跳过)802.1x的流程参见附录,802.1x验证完成后认证者将MSK发给STA,由于该MSK由双方共享,故也称为PMK。
(5)收到MSK后的R0KH和S0KH开始计算PMK_R0和PMKR0Name(详情请参考附录中的R0KH和S0KH状态机,注:
WPA状态机是在初始化关联和快速切换开始的阶段创建的,或者说,是在AP处理Auth帧的时候。
当然,PMK和PTK的计算只针对支持RSN的wlan而言),同时废除以前的,与当前STA相关的PMK_R0安全关联,随后遍历MD内的R1KH_ID计算出PMK_R1安全关联并发布给所有的R1KH(FT-PMK-R1-SA-PUSH)。
R0KH状态机
(6)R1KH状态机如下:
在FT-INIT-GET-R1_SA阶段,R1KH从R0KH获取到PMK_R1,后,随后计算随机值Anonce,接下来开始四次握手。
5.5四次握手
步骤一:
R1KH进入FT-PTK-START阶段后,向工作站发出EAPOL_Key帧,内含随机值Anonce,这一帧不加密,但不用担心被篡改,因为一旦Anonce被篡改,那么STA和AP上计算出的PTK一定不一样(参考3.2)。
步骤二:
STA接收该帧时,S1KH已经计算出PMK_R1(请参考附录里的S1KH_state_machine),随后S1KH计算出本地随机值Snonce,并根据式3.7计算出PTK,流程参见下图:
计算完毕后,STA向AP发送一个EAPOL-KEY帧,附带自己的Snonce,PMKR1Name,MDIE,FTIE。
这一帧也不加密,但附带了MIC校对,篡改内容会导致校验失败。
同时MDIE,FTIE必须和Assocresponse帧内的MDIE,FTIE相同。
步骤三:
AP根据STA发来的snonce由3-7计算出PTK。
AP会在第三次握手中将组临时密钥(GTK)发过去,这一帧经过加密,因为此时双方拥有公共的PTK。
第三次握手时附带的PMKR1Name和第二次握手时发送的PMKR1name必须相同。
步骤四:
STA解密后收到GTK,同时发送带MIC的确认帧,802.1x受控端口打开,STA可以正常访问网络了,如果PTKSA超期,STA需要重新进行FT初始化关联。
六.快速BSS切换(FT)
从切换方式来讲,FBT可以分为Over_the_ds和Over_the_air方式。
Over_the_air方式:
工作站直接和targetAP通信
Over_the_ds方式:
工作站通过currentAP与targetAP通信。
从切换协议来讲,可以分为FTprotocol和带资源请求的FT协议(FTresourcerequestprotocol)两种。
6.1Over_the_airFTprotocolinanRSN
工作站在和TargetAP进行FT时,首先进行验证交互:
步骤一:
FTAA代表该验证请求帧的验证算法为FT,而不是Open和sharedkey;帧中的MDIE必须和TargetAP自身的MDIE一致,否则会导致验证失败;同样的,如果PMKR0name不可用或者R0KH(这里的R0KH—ID必须是进行初始化关联阶段所获得的R0KH_ID)不可达,同样会报错(报错结果参见statecode)。
目标AP的R1KH利用PMKR0Name和帧中的其它信息计算出PMKRlName。
如果AP没有PMKRlName标识的Key(PMK_R1),R1KH就会从STA指示的R0KH获得这个Key。
目标AP收到一个新的PMKR1后就会删除以前的PMKR1安全关联以及它计算出的PTKSAs。
STA和目标AP计算PTK和PTKName时需要用到PMK—R1,PMKRlName,ANonce和SNonce。
如果目标AP在重关联时间到期前没有从STA那里收到ReassociationRequest帧,AP就将PTKSA删除。
相关(部分)状态机如下
如果经过计算找不到PMK_R1,则进入FT-GET-PMK-R1-SA阶段,向R0KH状态机发送请求:
R1KH的请求抵达CALC-PMK-R0-IDLE阶段,R0KH计算出PMK_R1后,通过FT_R0_SEND_PMKR1SA将PMK_R1SA发给R1KH。
随后R1KH进入FT-PMK-R1-SA-RECO阶段,R1KH随后计算随机值Anonce,并通过3.7式计算出PTK,返回一个Authresponse帧给工作站。
步骤二:
Authresponse帧中的R0KH_ID必须和Authrequest帧中的一样,都为初始化关联时的R0KH_ID;
R1KH_ID为targetAP的R1KH_ID;
PMKR0name用于找到对应的PMK_R1;其余字段用于确认.
收到authresponse帧后,S1KH进入FT_PTK_CALC阶段,利用3.7式计算出PTK,如此一来,双方都有了共同的PTK.
随后是重关联阶段:
重关联请求帧里的PMKRlName、ANonee、SNonce、MIC值、R1KH.ID和R0KH_ID都是为了AP端的确认,AP端会将自身的值与这些信息比较,如果发现不同,关联就会失败。
TargetAP收到请求帧并且验证无误的话,回复Reassocresponse帧给STA,帧内带有加密后的GTK,STA可以用PTK解密获取GTK。
重关联完成后,802.1x受控端口打开。
6.2Over_the_dsFTprotocolinanRSN
Over_the_ds快速切换的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 80211 原理 明细