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

 

posted on   sudochen  阅读(766)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示