802.11r简述:
802.11r是为快速漫游服务的,即移动终端从一个AP切换到另一个AP后,如何在保证安全的基础上快速地计算出PTK,从而缩短漫游的时间
AP1和AP2组成了一个移动域(MD,mobile domain)
STA首先跟AP1进行WiFi连接:
报文交互过程:
sta<——>ap1
AUTH帧交互
sta<——>ap1
association request和association response
关联请求帧中携带了MDIE,里面有MDID(2个字节),该IE从ap1的beacon和probe response中都能找到
通过关联交互双方都可以算出PMK-R0、PMK-R1,计算公式如下:
R0-key-data=KDF-384(PSK, "FT-R0", SSID-Len||SSID||MDID||R0KH-ID-Len||R0KH-ID||S0KH-ID)
"FT-R0":label,固定的字符串
R0KH-ID:一般为AP上设置的字符串,从association response帧中的IE(FTE)中可以找到
S0KH-ID:sta的MAC地址
PMK-R0=L(R0-key-data, 0, 256)
从算出的R0-key-data中从位置0开始取,取出长度为256bits
PMK-R0Name-Salt=L(R0-key-data, 256, 128)
从算出的R0-key-data中从位置256开始取,取出长度为128bits
PMK-R0Name=Truncate-128(SHA256("FT-R0N"||PMK-R0Name-Salt))
PMK-R1=KDF-256(PMK-R0, "FT-R1", R1KH-ID||S1KH-ID)
R1KH-ID:ap的MAC
S1KH-ID:sta的MAC
PMK-R1Name=Truncate-128(SHA256("FT-R1N"||PMK-R0Name||R1KH-ID||S1KH-ID))
注意:AP1在计算出PMK-R1后会通过UDP广播发送给MD内的其它AP,如AP2,当STA切换到AP2时,STA和AP2基于PMK-R1算出新的PTK
PSK计算方法和802.11i即RSN中的计算方法一致:
PSK=PBKDF(SHA1, passphase, SSID, 4096, 256/8)
SHA1:采用的哈希函数
passphase:AP上设置的密码
SSID:AP的ssid
4096:经过4096轮运算
256/8:输出的PSK长度即256bits
sta<——>ap
四次握手交互,ap首先发送其随机数给sta,接着sta回复其随机数给ap
经过M1,M2交互就可以各自生成PTK,计算公式如下:
PTK=KDF-PTKLen(PMK-R1, "FT-PTK", SNonce||ANonce||BSSID||STA-MAC)
M3,M4就是确认生成的PTK是否一致
这里的PTKLen跟AKM有关
STA漫游到AP2:
报文交互过程:
AUTH交互
这里的AUTH帧中跟上面的AUTH帧中的认证算法(auth algorithm)由open变为fast bss transition,同时FTE这个IE中携带随机数。通过AUTH帧的两个报文交互就可以计算出PTK了
association交互