freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

关于无线网络WPA2的四次握手及中间人攻击
2021-12-05 17:33:13

WPA加密算法的的两个版本介绍:
WPA = 802.1x + EAP + TKIP + MIC
= Pre-shared Key + TKIP + MIC
802.11i(WPA2)
= 802.1x + EAP + AES + CCMP
= Pre-shared Key + AES + CCMP
这里802.1x + EAP,Pre-shared Key是身份校验算法(WEP没有设置有身份验证机制)
TKIP和AES是数据传输加密算法(类似于WEP加密的RC4 算法)
MIC和CCMP数据完整性编码校验算法(类似于WEP中CRC32算法)

专业术语:

首先是:主密钥:PMK,GMK

临时密钥:PTK,GTK

PTK (Pairwise Transit Key)

PTK 用来加密 AP 和 Station 通讯的单播数据包,AP 与每个 Station 通讯用的 PTK 都是唯一的。我们来看一下生成 PTK 的函数,参数是生成 PTK 需要的信息:

PTK = PRF(PMK + ANonce + SNonce + Mac(AA) + Mac(SA))

PRF是 pseudo-random function 的缩写,表示伪随机函数,PMK、ANonce、SNonce、Mac(AA) 和Mac(SA) 作为它的输入参数;

ANonce是 AP 生成的随机数,A 表示 authenticator;

SNonce是 Station 生成的随机数,S 表示 supplicant;

Mac(AA)是 AP 的 Mac 地址;

Mac(SA)是 Station 的 Mac 地址;

由此可知,生成 PTK 依赖 PMK。

GTK (Group Temporal Key)

GTK 用来加密 AP 和 Station 通讯的多播/广播数据包,连接该 AP 的所有 Station 共享一个 GTK。生成 GTK 的公式:

GTK = PRF(GMK + ANonce + Mac(AA))

与 PTK 不同的是没有 SNonce 和 Mac(SA),GTK 也依赖 GMK。

PMK (Pairwise Master Key)

PMK 是由 MSK 生成,WPA2/PSK 的情况下,当 supplicant 和 authenticator 身份验证后,PSK 变成 PMK。PMK 会驻留在 AP 和所有 Station,不需要进行 key 交换,用它来生成用于加密单播数据的PTK。

PMK=SHA-1(ssid,psk)

PSK由ssid和passphrase生成,知道AP名和密码就能得出PSK

GMK (Group Master Key)

GMK 用在四次握手来生成 GTK,GTK 在 AP 端由 MSK 生成,所有连接到该 AP 的 Station 共享。

MSK (Master Session Key)

由 802.1X/EAP 或 PSK 身份认证后生成的第一个密钥。

MIC(Message Integrity Check)

消息完整性校验,针对一组需要保护的数据计算出的散列值,用来防止数据遭篡改。

WPA和WPA2四次握手操作应该是不一样的

初步了解时很迷茫,因为看人家文章里讲四次握手有两种类型,原先不知道就感觉很迷糊

给出两组图

我主要是研究WPA2的四次握手

WAP:1638696398_61ac85ceef40e6a986fd4.png!small

WPA2:

1638696404_61ac85d48a6ab1cb81f28.png!small

接着是我自己手写的一份截图

在进行四次握手前ap和station会进行身份认证(authentication)、关联(association)和安全验证(security validation),这个过程后双方互相知道对方的Mac地址,但网上有些文章里也有说在第一次和第二次握手时给对方发送自己的Mac地址,问题应该不大。

第一次握手:

ap把自己的随机产生的ANonce发给station,这时station就具备了生成PTK的5个数据(PMK,ANonce,SNonce,Mac(AA),MAC(SA)),接着station生成自己的PTK。

第二次握手:

station 生成自己的PTK后给ap发送SNonce和MIC。ap收到SNonce也具备了生成PTK的条件,会生成PTK和GTK,接着计算MIC进行校验,如果和station发来的相同就可以进行第三次握手操作。从第二次握手的报文开始接下去每个报文都会由MIC,AP 收到 SNonce 之后,生成的 PTK 就可以用来加密后面两次握手的 key 了。

第三次握手:

ap把生成MIC和加密的GTK发送给station(告诉station安装PTK和GTK),这里因为station已经生成了PTK,可以用来加密数据,所以GTK进行了加密。MIC检验成功后就可以进行第四次握手确认了。

第四次握手:

发送ACK和ap确认,告诉ap PTK和GTK已经安装好了,ap收到后也开始安装PTK和GTK。安装的意思是指使用 PTK 和 GTP 来对数据进行加密。

以上是WPA2四次握手的大致流程。

接下去提一下KRACK(密钥重装攻击),这里给出一个链接:

https://zhuanlan.zhihu.com/p/40585697

我个人总结KRACK攻击就是:中间人卡在两个传输信道中间,在第四次握手时不让station的确认包传输到ap那去,这样ap就会再发送第三次握手的数据包,但是此时station这边已经安装了PTK,它收到这个数据包后再传第四次握手的确认包时就是个加密的数据包了。接着攻击者就同时拥有加密前和加密后两个包(这里加密的方式是PTK和Nonce混合成密钥流,与明文进行异或操作得到密文)所以让明文数据异或密文数据,就可以倒推出来密钥流,有了密钥流就可以进行数据的解密。(Nonce重置问题我表达不太好,可以通过链接里的文章了解详细过程)

# 无线安全
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者