80211r原理明细

更新时间:2024-06-08 06:52:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

NUDT 杨磊

总述

IEEE802.11r(Fast BSSTransition)定义了STA在同一移动域(MD)中的AP 之

间漫游时的交互细则,提供了实现BSS快速转换的标准。协议描述的主要方法 为:STA第一次与MD内的AP关联时,利用802.1x认证获得的主会话密钥(MSK,由于该密钥为认证者和申请者共享,也成为成对主密钥(PMK))和MD内各个AP的R1KH_ID计算出不同的 PMK R1分发给MD内的其它AP;发生切换时,STA直接利用发送到目标AP上的PMK R1协商出 成对临时密钥

(PTK)和组临时密钥(GTK),以此缩短切换时间,避免再进行耗时的802.1x认证。

协议主要描述了四个部分的内容:密钥管理、新增的信息元素、FT初始化关联和快速切换协议。密钥管理部分提出了三层密钥结构及其计算方法;新增的信 息元素部分给出了MDIE、FTIE、TIE等元素的定义;FT初始化关联部分描述了 第一次关联时密钥生成和分发的过程;快速切换协议部分描述了快速漫游过程和 由PMKR1计算PTK和GTK的过程。初始化关联部分和快速切换协议部分分为RSN(Robust SecurityNet)网络和non RSN网络进行描述。快速切换协议分为 两种,FT协议(FT Protocol)和带资源请求的FT协议(FT Resource Request Protoc01)。每种协议的切换方式又可以分为两种,Over-the-Air方式和Over-the—DS 方式。

一.提示

1.本文档主要研究支持RSN(802.11i)的无线局域网下的快速切换为主。 2.IEEE文档里提到的802.11r标准是基于自治式WLAN,而不是集中式WLAN,因此实现时会和标准有一定差别

3.同样的,HostAPD模块里对802.11r的实现也会标准不同。

1

NUDT 杨磊

二.802.11i:强健安全性网络

2.1:RSN简介

除了TKIP和CCMP,80211i还定义了强健安全性网络(RSN)的标准,主要定义密钥的产生与分配方式.

链路层加密协议使用了两种密钥.成对密钥(pairwise key) 用来保护工作站与AP;间往来的数据.组密钥(group key) 用来保护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使用了一种新的完整性校验(Message integrity check,简称MIC)算法:Michael完整性校验散列算法取代WEP的线性散列算法。源地址和目的地址都会受到MIC保护,检测伪造帧也相对容易,而WEP是不保护80211帧头的,WEP的CRC也不具备密码学上的安全性。

(2)TKIP使用TKIP sequence counter(TSC)来为MPDU(Mac protocol data unit)发出的帧进行计数,次序错乱的帧会被丢弃。可由此应对重放攻击

(3)TKIP使用一种密钥混合函数将临时密钥,TSC和TA(发送者地址)联合到WEP seed(wep 随机数种子)中,WEP SEED由wep密钥(或者说secret key)和初始向量(IV)组成,WEP长度为40,104或128位初始向量为24位。如何选取初始向量802.11并未规范。

2

NUDT 杨磊

RC4 key由IV和WEP密钥组成,但IV本身放在帧内,也没有加密。IV本身只有24位长,使用空间约为1600万个,在繁忙的网络里容易出现重复。

TKIP则将IV扩张到了48位,保证了IV的不可重复性。

而对于WEP seed第二部分 secret key,TKIP使用了密钥混合来处理(key mixing),通过密钥混合,用来加密的secret key可以完全避免重复性。也就说,每个帧的加密密钥都是不同的。

3

NUDT 杨磊

2.2.2:CCMP链消息认证码协议

和TKIP一样,CCMP也支持对明文进行加密和完整性保护,加密过程如下图:

4

NUDT 杨磊

2.3:成对密钥的产生和结构

成对密钥的产生取决于身份验证所采用的方式,如果进行的时PSK验证,则获得的密钥为PSK,如果进行的是802.1x验证,则获得的是MSK。计算出密钥后,MSK由Radius服务器传送给验证者和工作站,由于该密钥为验证者和工作站共享,故又称为PMK(成对主密钥)。

TKIP与CCMP均使用单一主密钥来产生帧保护操作所需要的其他密钥。利用派生密钥,工作站可以更新加密密钥而无需重新执行整个认证过程.主密钥本身扮演着秘密根源根源 (root secret) 的角色,必须小心保护 因为所有密钥材料

5

NUDT 杨磊

(keying material)都衍生于此.秘钥分级(key hierarchy)的目的部分是为了派生用来保护临时密钥的传送的密钥.。

由PMK展开为PTK

如果采用CCMP,则展开函数为PRF(伪随机函数)-384,如果采用TKIP,则展开函数为PRF-256,PTK可分为三部分:KCK(确认密钥),KEK(加密密钥)和Temporal Key(临时密钥)。

由GMK展开为GTK。

PTK和GTK的生成的具体过程,会在四次握手一章里详细讲。

6

NUDT 杨磊

2.4:EAPOL-KEY 帧

IEEE802.11标准使用EAPOL-KEY帧在申请者(STA)和认证者之间交换信息,格式如下:

EAPOL-key的具体内容请参考80211.i相关文档。 在进行四次握手时,EAPOL用到以下标记。

S:该标志为1代表初始密钥交换已经完成,该位是Key Information的secure位。

Key Information字段组成

M:该标志位置1代表MIC可用,在四次握手中除了步骤一,其他步骤该位全置1。该位是Key Information中的key MIC位。

7

NUDT 杨磊

A:该标志置1代表要求接收者发送回复。是Key information字段中的Key ACK I:代表成对密钥是否安装好,为Key information字段中Install位。

K:密钥类型,P为PTK,G为GTK或SMK,为Key Information中的Key type。 SM:SMK标志位。

KeyRSC:密钥接收队列计数器,详情请参考80211i文档 Anonce/Snonce:认证者或申请者的随机值。

MIC: 消息完整性检查,是Eapol—key中的Key MIC字段,一般用KCK计算而来。

DataDS:该字段可能包含0或多个信息元素与KDS(比如RSNIE和GTK)

2.5:80211i的四次握手

在进行四次握手前,工作站先要进行802.1x认证或者PSK认证,认证成功则授权服务器会将PSK(对应PSK认证)或MSK(802.1x)发给认证者和工作者,由于该密钥是认证者和工作站共享,又称为成对主密钥(PMK)。

8

NUDT 杨磊

步骤一:AP向工作站发送EAPOL-KEY,帧内带上了AP计算出的随机值Anonce,同时Key Ack位置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来获得

9

NUDT 杨磊

PTK,而80211i则是通过密钥派生函数(KDF)来展开PMK,KDF函数实际上是PRF的变种。

R0KH(PMK R0 Key holder)和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地址.

密钥计算流程如下:

10

NUDT 杨磊

如果采用的是802.1X认证方式,R0KH就根据认证交互过程中从radius认证服务器 那得到的主绘话密钥(MSK)计算出PMK_R0;如果是采用PSK方式则直接根据 PSK进行计算。当认证成功后,R0KH删除MD中以前存有的与S0KH有关的 PMK_R0的安全关联,以及由它计算出来的PMK_R1的安全关联。

R0KH同时根据MD内的不同R1KH_ID计算出PMK_R1, 并将它传给同一MD中的所有R1KHs。PMK Rls是用来计算成对临时密钥(PTK)的。R1KH接收到PMK—R1时就会删除以前的 PMK_R1的安全关联,以及它所计算出的PTKSAs

PMK_R0,PMK_R1,PTK的生命周期取决于进行802.1x验证时得到的MSK,长度不能超过MSK本身的生命周期

密钥的计算公式参见下一节

11

NUDT 杨磊

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,

12

NUDT 杨磊

计算过程如下图所示:

由于每个R1KH_ID在MD中的唯一性,计算出的PMK_R1是不同的,因此对于每一个STA,在不同的R1KH里保存的PMK_R1也是唯一的。但对应的PMK_R0则是一样的。

密钥的索取机制发生的条件为快速漫游时目的AP的R1KH密钥管理实体上没 有找到STA要求的PMK R1。这种情况可能是MD中临时添加了新的AP,或者 R0KH密钥管理实体分发密钥时MD中的某个AP没有启动,而不是因为链路不通,或链路不安全。此时R1KH密钥管理实体会根据STA发出的R0KH_ID字段找到 R0KH密钥管理实体索取PMK_R1。此时R0KH密钥管理实体会根据发出请求的 R1KH_ID推演出PMK_R1和PMKRlName存储在R1KH密钥管理实

13

NUDT 杨磊

体中。

四.802.11r新增的数据结构

4.1:MDIE(移动域元素)

一般来说,可将一个ESS看做一个移动域(MD),具体到实现,可将一个AC与其控制下的所有AP及所有关联到这些AP上的STA看做一个移动域.MDIE用于标识该移动域ID与性能.如果MD支持802.11r,那这个元素应该添加到Beacon帧和Probe resp帧里,该元素格式如下

14

NUDT 杨磊

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。这个信息元素的格式如下图:

15

NUDT 杨磊

Subelement ID取值表

GTK字段为已经加密的组临时密钥,格式如下图:

16

NUDT 杨磊

4.3:TIE(超时间隔信息元素)

17

NUDT 杨磊

4.4:Action帧

802.11r规定的Action帧分为四类:请求(request),回复(response),确认(confirm),应答(Ack),Action帧主要用于Over_the_DS类型的快速切换,代替Over_the_Air模式下的Auth帧,

一.FT Request 帧:

该帧用于STA发给Current AP,用于进行Over_the_DS的切换,Current AP收到该帧后会将其转发给Target AP。格式如下:

Category字段:

18

NUDT 杨磊

Action字段:

STAADDR:工作站的mac地址;

Target AP address:要切换的AP的mac地址; 帧主体组成:

二.FT response帧:

FT response帧作为Target AP对于FT Request帧的应答,由Target AP发给Current AP,再转发给STA。格式如下:

19

NUDT 杨磊

前四个字段格式同上,status code字段用于通报检查结果,格式如下:

如果status code数值为0,表示检查没有问题,帧主体将包含以下三个字段:

20

NUDT 杨磊

36

NUDT 杨磊

七.附录

7.1:R0KH状态机

FT_PMK_R1_SA_PUSH即是遍历MD中每个R1KH_ID,计算出不同PMK_R1后进行分发,但802.11r并没有明说什么时候PUSH—PMK—R1设置为true,应该是当前AP和STA计算出PTK后。

7.2:R1KH状态机

状态一:初始化关联:

37

NUDT 杨磊

38

NUDT 杨磊

状态二:快速切换

39

NUDT 杨磊

7.3:S0KH状态机

7.4:S1KH状态机

状态一:初始化关联

40

本文来源:https://www.bwwdw.com/article/6gt6.html

Top