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