四次握手

详细过程可参考《802.11-2012》11.6.6 4-Way Handshake

WPA2 或者WPA认证在association成功前都是基于open的认证方式,然后在association以后通过四次握手协商出PTK和GTK

WPA2-PSK认证过程

四次握手的目的:

1.Client生成SNonce并告知AP

2.AP生成ANonce并告知Client

3.AP和Client自己计算出PMK,并通过PMK在四次握手中衍生出PTK,GTK,并在四次握手中验证对方的PTK和GTK是正确的。

PTK(pairwise transient key):成对传输秘钥,它用于单播数据帧的加密和解密

GTK(group temporal key):组临时秘钥,它用于组播数据帧和广播数据帧的加密和解密,管理帧、控制帧和空数据帧是不用加密的。


四次握手前需要具备的初始化参数值:

AA:client的MAC

SPA:AP的MAC

ANonce:AP产生的随机值

SNonce:Client 产生的随机值

PMK


不同的协议需要不同的方式获取初始参数值:

对于PSK和EAP,AA、SPA、ANonce、SNonce这四个值的获取方式没有区别都是现成的或者随机生成的。但是PMK不一样:

PSK:PMK由SSID和密码等导出,公式如下

PMK=PSK=pdkdf2_SHA1(passphrase,SSID,SSID length, 4096), 其中passphrase就是客户输入的登录密码

EAP:在Radius认证成功后,AP和client同时会获得一个相同的key(MSK, 这个可以参考另外一篇文章802.1x+EAP的认证过程.)这个key就是用于派生出PMK.

PMK=L(MSK, 0, 256)


如何计算PTK:

PMK转化成PTK是通过下面的函数完成的:

PTK<----PRF-X(pPMK, "Pairwise key expansion", Min(AA,SPA)||Max(AA,SPA)||Min(ANoce,SNoce)||Max(ANonce, SNoce))

(1)X指生成的PTK的长度,X=256+TK_bit,即256加上对应加密的TK位数,不同的加密方式TK_bits不一样。可查下表:

不同加密方式对应的TK位数

(2)KCK ← L(PTK, 0, 128),它是PTK的前128bit(0-127),用于计算密钥生成消息的完整性校验值.使用方法可参考四次握手流程里面。

(3)KEK ← L(PTK, 128, 128),它是PTK的中间128bit(128–255),用来加密密钥生成消息。使用方法可以参考四次握手流程

(4)TK ← L(PTK, 256, TK_bits),它是PTK中256bit以后的所有位(256 — 255 + TK_bits),用来对数据包中的数据进行加密。从表中可看出,对于TKIP加密PTK的长度是512bit, 对于CCMP加密PTK的长度是384bit。


四次握手的流程:


四次握手流程

四次握手第一个报文:

发送方向:AP---->Station

携带参数:ANonce

四次握手报文一

第一次我握手后,Client将会获取到AP的ANonce和AA,这个时候client已经拥有了可以计算出PTK的所有参数,通过

PTK=PRF(PMK+ANonce+SNonce+AA+SPA)

Client将会派生出密钥PTK。生成的PTK前128位是KCK,用于计算密钥生成消息的完整性密钥值。

四次握手第二个报文:

发送方向:Station------>AP

携带参数:SNonce和MIC。其中MIC=mic(KCK,EAPOL),计算方法是令这个第二个报文的初始key mic为0,然后使用KCK加密该EAPOL报文得到报文完整性校验值即为WPA KEY MIC的值。

四次握手报文二

第二次握手后,AP将会从client处得到SNonce和已经计算好的MIC, 这个时候AP拥有了所有能计算出PTK的参数,然后AP将进行同样的计算得到PTK, 然后用得到的前128位对EAPOL报文进行完整性校验,看得到的值是否和收到报文中的WPA KEY MIC的值一致,如果一致,则验证成功,说明client端拥有的PMK是正确的,否则判定Client端拥有的PMK错误,整个握手就此停止。

AP对于第二个包的处理流程:

1.检查重播计数器看是否和第一包相关联,如果不是AP将默默丢掉报文

2.生成PTK

3.根据生成的PTK,得到前128位为KCK,然后计算EAPOL报文得到MIC值,如果不相等,AP将默默丢掉报文

4.如果MIC是相等的,且没有打开roaming,AP将会check 第二个EAPOL报文中携带的RSNE信息和Association request报文中的RSNE信息是否一致。

    i)如果不完全一致,AP发送MLME-DEAUTHENTICATE去终止这次关联

    ii)如果完全比配,AP开始构造四次握手的报文三。

四次握手的第三个报文:

发送方向:AP------>Station

携带参数:组临时密钥GTK, WPA KEY MIC

GTK:用于后续更新组密钥,该密钥被KEK加密,KEK是PTK的中间128bit,MIC同样是KCK加密得来

GTK被包含于KEY DATA中.

KEY DATA中包含的数据有:AP在Beacon或者Probe Response中包含的RSNE,GTK,如果管理帧保护同样被协商了,也包含IGTK KDE。。。。。

四次握手报文三

Client收到报文三后

1. 如果key Reply Counter的值已经被使用或者报文三中的ANonce和报文一种的不一样,则Client默默丢弃该报文

2.利用KEK解密查看报文三中的RSNE, 如果没有开启Roaming,对比Station收到的AP发送的Beason或者Probe Response的RSNE,如果不匹配,取消关联AP,如果信息中有提供第二个RSNE,Client使用第二个RSNE中指定的密钥套件或者取消认证

3.检查MIC,同第二个报文检查流程一样,如果不一致,将默默丢弃第三个报文

步骤2和3的目的都是为了验证AP拥有正确的PMK

4.更新最后看到key replay Counter 的值

5.构造第四个报文

四次握手第四个报文:

发送方向:Station------>AP

携带参数:WPA KEY MIC

四次握手报文四

Client 最后发送一次EAPOL-KEY给AP用于确认,如果认证成功,双方将安装(Install)key,Install的意思是指使用它们来对数据进行加密。

AP在收到第四个报文后

1.检查Key Replay Counter的值,如果不是四次握手中使用的那个,就默默丢弃这个报文,如果是继续下面的流程

2.检查MIC,通报文二,三的检查方法一直,如果不一样默默丢弃该报文,如果一样,将告诉802.11 MAC去使用新的PTK发送或者接受MPDU

3.AP更新KEY Replay Counter的值,以方便需要rekey的时候能使用新值

Controlled Port Unlocked

双方完成认证以后,authenticator的控制端口将会被打开,这样802.11的数据帧将能够正常通过,而且所有的单播数据帧将会被PTK保护,所有的组播数据以及广播数据将会被GTK保护。

Supplicant和Authenticator就此完成密钥派生和组对, 双方可以正常进行通信了


后续:

每个STA都有一个独立的PTK,所有的STA和AP共同拥有一个相同的GTK。如下图所示:


AP和station的秘钥存储关系

比如我们比较常见的TKIP和CCMP混合加密,前者用于兼容旧的设备,后者用于规范新的加密, 一般来说,为了兼容不同版本的设备, GTK会使用TKIP加密(因为GTK是所有设备共享的), PTK既可以是TKIP加密,也可以是CCMP加密。如下图所示:


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,198评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,663评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,985评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,673评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,994评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,399评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,717评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,407评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,112评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,371评论 2 241
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,891评论 1 256
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,255评论 2 250
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,881评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,010评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,764评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,412评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,299评论 2 260