赞
踩
第一章wifi基础知识内容回顾
WPA-PSK = = Pre-shared Key + TKIP + MIC
WPA2-PSK = = Pre-shared Key + AES + CCMP
WPA = 802.1x + EAP + TKIP + MIC(不在本章讨论范围)
WPA2 = 802.1x + EAP + AES + CCMP(不在本章讨论范围)
802.1x+EAP(不在本章讨论范围)、Pre-shared Key:身份校验算法
TKIP、AES:数据传输加密算法
MIC、CCMP:数据完整性校验算法
802.1x + EAP(不在本章讨论范围):(工业级的,安全要求高的地方用,需要认证服务器)EAP 扩展认证协议,是一种架构,而不是具体算法。常见的有LEAP,MD5,TTLS,TLS,PEAP,SRP,SIM,AKA 其中的TLS 和TTLS 是双向认证模式。这种认证方式不怕网络劫持和字典攻击
Pre-shared Key :(家庭用的,用在安全要求低的地方,不需要服务器),容易被字典攻击
上一章sta-ap连接回顾
在上一章我们学习了wifi的扫描,认证,关联,大致步骤如下
在经过wifi的扫描,认证,关联三步后,第四部则是wifi的接入认证
wep-psk:不需要接入认证,可以直接通信(已经淘汰)
wpa-psk,wpa2-psk 进行一轮新的身份权限认证和密钥协商(四次握手协议),然后通信
四次握手协议
目前我们暂时只分析WPA/WPA2-PSK模式的四次握手,其他方式暂时不做分析(wpa/wpa2等暂时不做分析)
四次握手主要是为了计算出用于后续数据加密的秘钥PTK和GTK
在谈握手前,需要了解的几个公式和概念
1 pmk
pmk的计算公式如下
主要使用了sha系列算法
入参是ssid passwd等,也就是说,只要知道ssid passwd,就可以算出psk和pmk
在4-wayhandshake前,AP/STA就可以算出PMK。
2 ptk
四次握手后用于加密单播数据的密钥
ptk的组成
PTK包含4个部分:KCK(Key Confirmation Key),KEK(Key Encryption Key),TK(Temporal Key),MIC
PTK共64位,具体可以分成如下4个部分
KEK和KCK字段是给EAPOL-KEY使用的,即用于四次握手的过程中的加密和完整性校验。TK字段用于后续的加密。
1) EAPOLKCK(key confirmation key),16位,对应于图5中的EAPOLMIC,以及图1中的MIC,用来在EAPOL4-way shake时校验完整性
2) EAPOLKEK(key encryption key),16位,对应于图5中的EAPOLEncr,用于在EAPOL4-way shake的3/4的时候来加密GTK等数据
3) TK(TemporaryKey),16位,对应于图5中的DataEncr,用于加密单播数据
4) Data Mic(TKIP独有),16位,对应于图5中的DataMIC,具体又可分为8位的Tx key和8位的Rx key,用于数据传输的时候TKIP方式的Michael完整性校验。CCMP不用。
PTK的总长度根据加密方式不同而不同
当加密方式是TKIP(WPA)时,PTK长512位,按顺序分别为KCK占128位,KEK占128位,TK占128位, MIC占128位(下图将TK和MIC合为一个)
当加密方式是CCMP(WPA2)时,PTK长384位,按顺序分别为KCK占128位,KEK占128位,TK占128位,没有MIC
PTK计算公式
PTK = PRF-X(PMK,”pairwisekey expansion”,
min(AA,SPA)||MAX(AA,SPA)||MIN(ANONCE,SNonce)||max(ANonce,SNonce))
AA: ap(认证者)的mac地址
SPA:sta(申请者)的MAC地址
PMK:使用sha算法,根据ssid passwd len生成
Anonce:ap(认证者)生成的随机数
Snonce:sta(申请者)生成的随机数
3 GTK
GTK,四次握手后用于对组播和广播数据的加解密
在图5中,AP在3/4的时候会生成GTK,传给STA
GTK由GMK(Groupmaster key)和成对秘钥扩展获得
GTK=PRF-X(GMK,”Group key expanision”,ap mac|Anonce)
ap mac:ap的mac地址
Anonce:ap生成的随机数
GMK在四次握手前就可以算出
PTK计算公式
PTK = PRF-X(PMK,”pairwisekey expansion”,
min(AA,SPA)||MAX(AA,SPA)||MIN(ANONCE,SNonce)||max(ANonce,SNonce))
AA: ap(认证者)的mac地址
SPA:sta(申请者)的MAC地址
PMK:使用sha算法,根据ssid passwd len生成
Anonce:ap(认证者)生成的随机数
Snonce:sta(申请者)生成的随机数
GTK=PRF-X(GMK,”Group key expanision”,ap mac|Anonce)
ap mac:ap的mac地址
Anonce:ap生成的随机数
GMK在四次握手前就可以算出
1 第一次握手
在扫描,认证,关联阶段,sta和ap应该都已经知道ssid,passwd,双方的mac等信息,且双方都已经计算出了pmk gmk
ap
1 ap生成一个随机数Anonce,(广播)发送给sta
sta
1 sta接收到ap发送过来的随机数Anonce
2 sta生成随机数Snonce
3 sta根据pmk sta mac,ap mac,Snonce,Anonce计算出PTK(sta)
4 提取PTK(sta)的前16个字节KCK(MIC key)和802.1x data数据帧(EAPOL报文)算出MIC
MIC(sta) = HMAC_MD5(MIC key,EAPOL)
2 第二次握手
sta
sta发送Snonce和MIC(sta)给ap
ap
1 ap根据相同算法生成PTK(ap)
2 同理根据PTK(ap)的前16字节和EAPOL生成MIC(ap)
3 对比MIC(ap)和MIC(sta)是否相同(相当于是校验PTK(ap)和PTK(sta)是否相同),不一致则丢弃,握手失败(说明sta端的pmk错误---进一步说明sta端passwd是错的),一致则下一步握手(说明sta端的pmk正确---进一步说明passwd是对的)
3 第三次握手
ap
1 AP根据GMK,Anonce,ap mac生成GTK
2 使用PTK中间16字节的KEK加密GTK
3 根据PTK的前16字节KCK和EAPOL生成MIC(ap)
4 将加密后的GTK和MIC(ap)传给client
sta
1 验证MIC(ap)是否和MIC(sta)一致,一致则继续
2 讲ap发过来的加密的GTK,用PTK中间16字节的KEK解密出来
4 第四次握手
sta
确认无误则发送最后一次EAPOL-KEY给ap进行最终的认证
ap
接收到sta发送的EAPOL-KEY,进行认证,若认证ok,则代表握手成功
(从下图可知每次EAPOL-KEY的计算算法是有差异的,计算出来的MIC值肯定是不一样的)
若认证成功,双方将安装(Install)各自算出来的GTK和PTK,至此四次握手
Controlled Port Unlocked
双方完成认证以后,authenticator 的控制端口将会被打开,这样 802.11 的数据帧将能够正常通过
所有的单播数据帧将会被 PTK 保护,所有的组播数据以及广播数据将会被 GTK 保护。
Supplicant 和 Authenticator 就此完成密钥派生和组对, 双方可以正常进行通信了
每个sta的PTK都不同(因为ptk是根据ap mac sta mac ap随机数 sta随机数 pmk生成,参数和双方都有关)
所有与该AP建立关联的STA均使用相同的GTK(gtk是根据ap的随机数,mac,gmk生成,参数只和ap有关),AP用这个GTK来加密所有与它建立关联的STA的通信报文, STA则使用这个GTK来解密由AP发送的报文并检验其MIC。
该密钥可以分解为三种不同用途的密钥, 最前面的128位作为构造全局“每报文密钥”(Per-packet Encryption Key)的基础密钥(Base Key),后面的两个64位的密钥分别作为计算和检验WPA数据报文的MIC的密钥。AP使用EAPOL-KEY加密密钥将GTK加密并发送给STA,并指明该GTK是否允许STA用作发送报文所使用,STA成功接收到该报文,将GTK解密后,向AP发送应答报文,并根据AP所指示的Key Index将其安装无线网卡的相应位置,如果AP使用GTK作为向某一STA单播传输的密钥,则该STA也需要使用GTK作为向AP发送单播报文的密钥。
注意,TKIP并不直接使用由PTK/GTK分解出来的密钥作为加密报文的密钥,而是将该密钥作为基础密钥(Base Key),经过两个阶段的密钥混合过程,从而生成一个新的每一次报文传输都不一样的密钥,该密钥才是用做直接加密的密钥。 通过这种方式可以进一步增强WLAN的安全性。密钥的生成
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。