WIFI接入认证-WPA/WPA2-PSK

        前言 

        WPA(WiFi 保护接入)目前有WPA、WPA2和WPA3三个版本,高版本强化了安全性和设备支持等等,本篇不对每一种认证都展开比较,只针对WPA接入的流程做讲解。

        WPA分为两个流程,一个是STA(接入的终端设备)与AP(无线接入点)的关联流程,另一个就是认证流程。

        关联流程

        首先,STA会主动广播Probe帧,用于探测周围可用WIFI,AP收到后会向STA告知当前的SSID(可认为是WIFI名称),然后是用户搜索到WIFI后,点击要连接的WIFI,开始进行关联和认证流程:

        (1)STA向选定SSID所在的AP发送Authentication Req报文,向AP表明自己的算法类型(0-open System;1-Shared Key),open System可以认为当前不需要身份的认证,放在后面的四次握手来做;Shared Key表示使用WEP加密,如果选择了SharedKey,那就不需要后面的四次握手认证过程了。最后对SharedKey来单独讲解;
        (2)AP对认证请求进行响应;

        (3)STA发送关联请求,包括SSID,支持的速率,信道等等;

        (4)AP响应关联请求,告知STA自己支持的一些802.11参数

        经过这四步,关联已经完成,如果之前在认证过程中,选用的算法类型是open System,那么接下来会进行空口的4次握手,握手完成后STA才可以接入到WiFi;

        名词详解

        认证过程是通过802.1x来进行的,下面对四次握手中比较重要的字段做解释:

        PSK(Pairwise Shared Key):预共享密钥(共享密码),PSK=PMK=pdkdf2_SHA1(passphrase,SSID,SSID length,4096);

        PMK(Pairwise Master Key):成对主密钥,是申请者和认证者之间所有密码数据推导的主要来源。由PSK直接得到。同时也可以由身份验证过程中EAP过程来推导得出(下一篇文章讲解),或者直接由PSK来提供;

        PTK(pairwise transient key):成对传输秘钥,它用于单播数据帧的加密和解密,PTK = PRF-X(PMK,”pairwisekey expansion”,
min(AA,SPA)||MAX(AA,SPA)||MIN(ANONCE,SNonce)||max(ANonce,SNonce));

        根据802.11,上图中PTK主要由3部分组成,其中KCK用于MIC值的计算,用于校验消息完整性;KEK 用于四次握手中的WPA Data的加密;TK主要用于后续用户数据的加密。

        GMK (Group Master Key):组主密钥,可以是一个随机数

        GTK (Group Temporal Key):组临时密钥,由组主密钥(GMK)通过哈希运算生成,是用于加密广播和组播数据流的加密密钥,GTK = PRF-X(GMK, “Group key expansion” || AA || GNonce)

        AA:STA的MAC地址;

        SPA:AP的MAC地址;

        ANonce:AP产生的随机值;

        SNonce:STA产生的随机值;

        MIC(Message Integrity Code):消息完整性代码,由KCK与当前802.1x的数据帧做一个hash计算,如果当前802.1x数据帧中的MIC值与接收方通过上述方法计算得到的值一致,则校验通过,否则四次握手终止。

        认证流程

        Supplicant就是STA,Authticator就认为是AP,也可能是AP中部署的hostapd等 

        (1)第一次握手,由AP广播自己的EAPOL报文,其中包含了AP的随机数(ANonce);

        (2)第二次握手,STA产生自己的随机数,填充802.1x报文,通过上述方式计算出PTK,推导出KCK后,与802.1x报文一起计算MIC值,然后发送第二个EAPOL报文,报文中主要包括:SPA和MIC;

        (3)第三次握手,AP收到STA的第二次握手报文后,可以拿到SPA和MIC值,通过上述计算PTK的方式,算出PTK并推导出KCK,然后计算MIC值与二次握手报文中的MIC值进行比对,如果不一致则结束认证流程;如果一致,则构造第三次握手EAPOL报文,主要包括使用GMK,ANonce,AA生成GTK,使用KEK来加密GTK;计算当前的MIC值;

        (4)第四次握手,STA收到第三次握手后,首先先计算MIC值,如果不一致,则握手失败;一致,则使用PTK推导的KEK对GTK进行解密,然后将TK安装到系统中,作为后续数据加密的密钥,然后最后一次握手回复一个ACK消息给AP,表示密钥已经安装完毕,这个消息中主要包含一个MIC值。

        AP收到这个EAPOL消息后,也会进行密钥安装,至此,四次握手已经结束,STA可以安全的接入网络。

        最后说一下前面提到的,使用WEP加密方式来进行认证:

                a.STA发起认证请求,携带认证算法类型为:Shared Key;

                b.AP 回复一个挑战明文(challage text),可认为是一个随机数;

                c.STA 使用预设密钥对挑战明文进行加密,然后发送给AP;

               d.AP收到后,使用密钥对收到的信息进行解密,如果解密成功且明文一致则表示认证成功,回复successful。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值