从上图可以看出,成对主钥PMK,使用申请者和认证者的MAC地址和nonce随机产生一个数值,并拆分为不同的密钥。
成对密钥层次结构中,各密钥的推导方法如下:
(1) PMK:PMK由预先共享密钥(PSK)直接得到,或由主会话密钥(MSK)推导得出。如果PMK有MSK推导得出,PMK的计算使用函数L(psk,0,256),即MSK的前256位。因此,当使用MSK推导PMK时,MSK至少由256位组成。PMK的生命周期由认证服务器决定,而PTK的声明周期则要短于PMK的声明周期
PMK的获取方式:802.1X认证过程,PSK推导,PMK缓存
(2) PTK:PTK = PRF-X(PMK,”pairwisekey expansion”,
min(AA,SPA)||MAX(AA,SPA)||MIN(ANONCE,SNonce)||max(ANonce,SNonce))
AA: 是认证者的MAC地址
SPA:是申请者的MAC地址
TKIP使用X = 512,CCMP使用X= 384
(3) KCK(keyconfirmation key):KCK=L(PTK,0,128)即PTK的前128位。密钥确认密钥用来计算密钥生成消息的完整性检验值。
(4) KEK(keyencryption key):KEK=L(PTK,128,128)即PTK的128位-256位。密钥加密密钥,用来加密密钥生成消息
(5) TK:L(PTK,256,128)或L(PTK,256,256)
CCMP使用PTK的第256位至383位计算TK:用来认证和加密
TKIP使用PTK的第256位至511位计算TK:TKIP严格区分认证和加密,TK的前半部分作为临时密钥,后半部分作为完整性检验
(6) PMKID:PMKIDßHMAC-SHA1-128(PMK,”PMK Name”||AA||SPA)
更新成对密钥:四道磋商
1、 认证者将nonce传给申请者;nonce是防范重放攻击的随机值。信息本身并未经过认证,但并没有被篡改的危险。如果信息遭人更改,磋商就会失败并重新执行
2、 申请者所送出的的信息中包含申请者的nonce以及初次与网络连接所取得的安全参数副本。整个信息系经过(以EAPOL密钥确认密钥计算而来的完整性检验值)的验证。
认证者取出消息中的申请者nonce,依次衍生出完整的密钥层次结构。
3、 此时磋商双方的密钥均已就绪,但仍需确认。认证者会将一个信息传给申请者;此信息代表将被加入之成对密钥的序号。它同时包括了目前的群组临时密钥,以便后续能够更新群组密钥。GTK以EAPOL密钥加密密钥来加密,以密钥确认密钥来认证
4、 申请者最后会送出确认信息给认证者,告诉认证者已经接收到配钥信息,可以开始使用这些密钥。此信息系经过密钥确认密钥的认证。
更新群组密钥:群组密钥的磋商
1、 认证者送出群组临时密钥,并以成对密钥体系中的密钥加密密钥进行加密。此信息亦经过密钥确认密钥计算出来的检验值的认证。
2、 申请者送出的回应信息,告诉认证者开始使用新的群组密钥。此信息也就是使用密钥确认密钥进行认证的。
1. WPA-PSK :
PMK=PSK= pdkdf2_SHA1(passphrase,SSID,SSID lenth,4096)
其中
passphrase就是登陆密码
SSID就是无线网络名
2. 802.1X+EAP中
PMK =L(MSK, 0, 256)
MSK 需要通过802.1X交换获得。
如果802.1X认证成功,认证者会发出EAP-Success表示授权使用连接端口,再接下来AP就可以立即使用EAPOL-Key消息将MSK发给申请者,以后就和WPA-PSK一样用MSK最终导出PTK(MSK,PMK就是PTK的密钥生成密钥)
如上图所示,802.1X认证中的key1报文,带有PMKID。
上图为 PSK认证中的key1报文。