zoukankan      html  css  js  c++  java
  • Wifi 4 way handshake 四次握手

    参考链接

    https://www.wifi-professionals.com/2019/01/4-way-handshake

    https://kysonlok.gitbook.io/blog/wireless/4_way_handshake

    KEY介绍

    链路层加密协议使用了两种密钥。

    成对密钥(pairwise key)用来保护工作站与AP之间的往来数据。

    组密钥(group key)用来保护AP至所关联工作站之间的广播或组播数据。

    PSK使用SSID和passphares作为入参,通过哈希算法产生。在WPA-PSK 中PSK=PMK=pdkdf2_SHA1(passphrase, SSID, SSID length, 4096)

    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) 作为它的输入参数;
    PMK 下面会谈到;
    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。
    GMK (Group Master Key)
    GMK 用在四次握手来生成 GTK,GTK 在 AP 端由 MSK 生成,所有连接到该 AP 的 Station 共享。
    MSK (Master Session Key)
    由 802.1X/EAP 或 PSK 身份认证后生成的第一个密钥。
    MIC(Message Integrity Check)
    消息完整性校验,针对一组需要保护的数据计算出的散列值,用来防止数据遭篡改。

    Key分层

    四次握手过程

    无线 WiFi 的四次握手就是 key exchange 的过程,上面我们已经了解了相关的 key,现在我们就可以具体分析一下四次握手的过程。
    假设 AP 用的是 WPA2/PSK 加密方式,SSID 为 Test,用一台电脑连接它。整个过程分为身份认证(authentication)、关联(association)和安全验证(security validation)。四次握手不是直接将密码发送到 AP,而是通过 EAPOL(Extensible authentication protocol over LAN)进行消息交换。

    先是身份认证(authentication),身份认证阶段不需要考虑安全问题,因为在这个阶段只是 AP 要确认 Station 是不是 802.11 设备,确认彼此可以正常通讯。
    接着是关联(association),Station 与 AP 关联以便获得网络的完全访问权,关联成功后,Station 会收到AP的响应,包含了成功的状态码和关联标识符。

    4-Way Handshake Message 1

    由 AP 发起四次握手,AP 发送一条包含 ANonce 的消息到 Station,Station 用它生成 PTK,前面已经提到生成 PTK 的公式:PTK = PRF (PMK + ANonce + SNonce + Mac (AA)+ Mac (SA)),由于在 4 次握手之前已经经历了认证和关联的阶段,因此 Station 是知道 AP 的 Mac 地址,所以只需要 ANonce就可以生成 PTK 了。

    4-Way Handshake Message 2

    一旦 Station 创建了自己的 PTK,它会立即响应一条 EAPOL 消息给 AP,包含了 SNonce 和 MIC。AP 用 SNonce 生成自己的 PTK,MIC 是用来校验 Station 发来的消息的完整性,除了 1/4,从 2/4 报文开始,后面的每个报文都会有 MIC。AP 收到 SNonce 之后,生成的 PTK 就可以用来加密后面两次握手的 key 了。

    4-Way Handshake Message 3

    这次握手主要是把 GTK 发送给 Station,并且告知 Station 安装 PTK 和 GTK。由于第二次握手生成了 PTK,可以用来加密数据了,所以这里对 GTK 进行了加密。

    4-Way Handshake Message 4

    第四次是最后一条 EAPOL 消息,相当于一个确认包,告诉 AP PTK 已经安装好,AP 收到该消息后,也安装 PTK。安装的意思是指使用 PTK 和 GTP 来对数据进行加密。

  • 相关阅读:
    从一个整数数组中取出最大的整数,最小整数,总和,平均值
    9、数组知识点小结
    结构类型小结
    枚举类型小结
    asp.net MVC 笔记
    Android自动化测试之Shell脚本一——模拟触屏事件
    Android性能优化案例研究
    ViewHolder模式的简洁写法
    genymotion ddms查看data等文件目录
    Android事件传递机制
  • 原文地址:https://www.cnblogs.com/helloworldtoyou/p/15361145.html
Copyright © 2011-2022 走看看