PSK 即是ap的密码,密码不足64位,则使用密码加ssid然后hash算出64字节的PSK
PMK使用PSK前32字节,256bit。
Anonce是ap的随机数, Snonce是sta的随机数,各32字节。
PTK = PMK + MAC(AP)+无线网卡MAC(STA)+AP产生的随即值(ANonce)+wifi产生的随机值(SNonce)+登陆密码(pairewise),SHA256和MD5算法得到的,而这种算法是不可逆的。
PTK ← PRF-X(PMK, “Pairwise key expansion”, Min(AA,SPA) || Max(AA,SPA) ||Min(ANonce,SNonce) || Max(ANonce,SNonce))
X = 256 + TK_bit 是生成的PTK的长度,参数X是256加上对应加密的TK位数,不同的加密方式TK_bits不一样,可查下表:
KCK ← L(PTK, 0, 128),它是PTK的前128bit(0-127),用于计算密钥生成消息的完整性校验值
KEK ← L(PTK, 128, 128),它是PTK的中间128bit(128–255),用来加密密钥生成消息
TK ← L(PTK, 256, TK_bits),它是PTK中256bit以后的所有位(256 — 255 + TK_bits),用来对数据包中的数据进行加密。从表中可看出,对于TKIP加密PTK的长度是512bit, 对于CCMP加密PTK的长度是384bit。
KCK和KEK将用于后续EAPOL Key帧中某些信息的加密。 TKIP TK和CCMP TK就是TKIP和CCMP算法中用到的密钥。
后面贴出一个示例,wep目前基本不用了,主要ccmp和tkip。
抓包:
auth req open system, seq = 1
auth rsp open system, seq = 2, status = 0(success)