作用四次握手通过一系列的交互,从PMK(PairwiseMasterKey)生成PTK(PairwiseTransientKey)。PMK来自MSK(MasterSessionKey),是MSK的前256位,32字节。本文的主要目的是讲PTK,所以暂时忽略PMK和MSK。PTK的内容PTK包含3个部分,KCK(KeyConfirmationKey),KEK(KeyEncryptionKey),TK(TemporalKey)。PTK的总长度根据加密方式不同而不同。当加密方式是TKIP时,PTK长512位,按顺序分别为KCK占128位,KEK占128位,TK占256位。当加密方式是CCMP时,PTK长384位,按顺序分别为KCK占128位,KEK占128位,TK占128位。KEK和KCK是给EAPOL-Key,也就是四次握手时,加密和完整性验证用的。TK用于后续的数据加密。四次握手的报文都是基于EAPOL-Key的。EAPOL-Key的结构如下:PTK的生成生成PTK,需要5个必要元素,PMK,ANonce(Nonce1),SNonce(Nonce2),AuthenticateMAC(MAC1),SupplicantMAC(MAC2)。如下图:2个Nonce分别是Authenticator和Supplicant生成的随机数。这张图里的输出包含4个部分,其实DataEncr和DataMIC合起来就是前面提到的TK。而EAPOLEncr/MIC分别对应前面的KEK和KCK。四次握手的交互过程下面的交互仅仅是一个流程,对内部的一些数据的处理就不细说了。1/4:Authenticator->SupplicantAuthenticator把ANonce送给Supplicant。Supplicant收到1/4后,就有了生成PTK的所有元素。因为1/4里同时也包含了Authenticator的MAC地址。2/4:Supplicant->AuthenticatorSupplicant计算出PTK,把SNonce和自己的MAC地址送给Authenticator。同时,从2/4报文开始,后面的每个报文都会有MIC。1/4没有。3/4:Authenticator->SupplicantAuthenticator向Supplicant证明自己有有效的,同样有MIC加入其中4/4:Supplicant->Authenticator仅是对3/4的一个ACK。说明PTK已经装好,后面的数据可以加密了。
因篇幅问题不能全部显示,请点此查看更多更全内容