WiFi四部握手
术语
PTK(Pairwise Transient Key):成对传输密钥,用于单播数据的加密和解密,
GTK(Group Temporal Key):组临时密钥,用于组播数据的加密和解密
PMK(pairwise master key):成对主密钥
AA: client的MAC地址 SPA:
AP的MAC地址 ANonce:
AP产生的随机数 SNonce:Client产生的随机数
导出公式
PMK=pdkf2_SHA1(passphrase, SSID, SSID_length, 4096),
passphrase就是用户连接无线时输入的密码
PTK=SHA1_PRF(PMK,Len(PMK),"Pairwise key expansion",MIN(AA,SA)||MAX(AA,SA)||MIN(AN,SN)||MAX(AN,SN))
目前常见的PTK有两种CCMP和TKIP,其长度如下图:
TKIP和CCMP的PTK被分成下面部分
1.EAPOL KCK(key confirmation key) 密钥确认密钥,用来计算密钥生成消息的完整性
2.EAPOL KEK(key Encryption key) 密钥加密密钥,用来加密密钥生成消息
3.TKIP TK(CCMP TK) 这部分是正真用来进行数据加密的
4.TKIP MIC key 用于Michael完整性校验的(只有TKIP有)
GMK主组密钥(group master key)以作为临时密钥的基础 和成对密钥一样扩展获得GTK (groupTransient Key) ,公式如下:
GTK=PRF-X(GMK,"Group key expansion",AA||GN)
GN - Authenticator生成的 Nonce
AA - Authenticator MAC地址
注意和成对密钥扩展不同的是没有supplicant的 AA,AN
4步握手流程
每个STA都有一个独立的PTK,所有STA共同拥有一个相同的PTK,我们比较常见的TKIP和CCMP混合加密,前者用于兼容老旧设备,后者用于新设备的加密解密,一般来说为了兼容不同的版本,GTK会使用TKIP加密(因为GTK是所有设备共享的),PTK一般TKIP和CCMP混合,不同终端可根据实际进行协商使用CCMP或者TKIP
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程