详解Wi-Fi的四次握手
参考Linux WPA/WPA2/WPA3/IEEE 802.1X Supplicant_linux wpa3-CSDN博客Wi-Fi设备的发现和连接过程-CSDN博客wifi的probe/authentication/association都有对应的MAC帧但是好像没看到有四次握手的帧咋回事WPA是啥WPA全称 Wi-Fi Protected AccessWi-Fi 保护访问是一系列用来保护我们 Wi-Fi 通信安全的协议和标准的总称。它主要负责解决两个最基本的安全问题把关确保只有知道密码的人才能连上你的网络身份验证。加密把你上网的数据如密码、聊天记录变成“乱码”防止被他人窃听数据加密。你可以把 WPA 理解为给自家大门装的“锁”并且这把锁的版本经历了多次升级从最早的木门锁WEP到后来的标准防盗锁WPA/WPA2再到如今支持人脸识别且防撬的智能锁WPA3。1. 为什么要用WPA在 WPA 出现之前Wi-Fi 主要使用WEP有线等效加密协议。但 WEP 存在严重的设计缺陷用现在的普通电脑几分钟就能破解防护能力非常薄弱。为了弥补 WEP 的安全漏洞Wi-Fi 联盟在 2003 年推出了 WPA作为临时且兼容旧设备的过渡方案并在随后发布了更安全的 WPA2。2. 不同版本的WPA根据搜索结果WPA 主要有三个代表性版本它们的安全性差异巨大WPA第一代2003年作为过渡产品虽然引入了动态密钥等措施但仍沿用了旧 WEP 的加密核心RC4存在已知漏洞建议完全避开。WPA2当前主流2004年可以说是 Wi-Fi 安全的里程碑。它强制使用AES高级加密标准算法这是目前公认的最安全的加密方式之一能有效保护数据隐私。注意尽管 WPA2 非常安全但几年前发现的“KRACK 漏洞”可能会被攻击者利用重设密码。不过只要确保你的路由器、手机和电脑都更新了最新的安全补丁这个风险就是可控的。WPA3最新标准2018年在前两代基础上做了重大升级主要解决了 WPA2 长久以来的痛点防暴力破解采用SAE对等实体同时认证协议可以防止攻击者通过离线字典攻击来猜你的密码。就算你设置的密码相对简单也能更好地对抗暴力破解。前向保密即使攻击者以后知道了你家路由器的密码他也无法解密之前截获的上网数据实现了“过去的安全”。强制管理帧保护防止伪造的管理帧让网络连接掉线。3. 两种连接模式无论是 WPA2 还是 WPA3通常都提供两种模式以适应不同场景模式适用场景核心原理WPA-Personal个人版家庭、小型办公室也称为WPA-PSK。所有合法用户共用同一个“预共享密钥”即我们在手机上输入的 Wi-Fi 密码来连接网络-3-6-10。WPA-Enterprise企业版公司、政府、学校每个用户有独立的用户名和密码。需要搭配一台 RADIUS 认证服务器来验证用户身份访问权限控制更精细安全性更高-1-4-6。4. 总结与建议总而言之这一系列标准的安全性排序是WPA3 WPA2 WPA WEP。在选择 Wi-Fi 加密方式时建议遵循以下原则首选 WPA3如果家里路由器、手机、电脑特别是近两年购买的新设备都支持务必开启。这能最大程度保障密码安全和数据隐私。次选 WPA2绝大多数设备都能完美支持 WPA2是目前最稳妥、兼容性最好的选择。只要不设置过于简单的密码如12345678安全性完全足够日常使用-9。避开 WPA 和 WEP目前主流路由器的设置后台如果还提供这两个选项除非有老设备必须兼容否则绝对不要选。它们的安全防护能力已经不适合今天的网络环境-9。四次握手概述你之所以在 Wi-Fi 帧的类别里找不到四次握手是因为四次握手根本就不是以独立的帧类型存在的。1. 简单的答案它穿着数据帧的外衣你之前的理解框架完全正确Wi-Fi 帧主要分为管理帧、控制帧、数据帧三大类。管理帧 (如 Beacon, Probe, Authentication, Association)用于建立连接、宣告网络等。控制帧 (如 RTS, CTS, ACK)用于辅助数据传输如清空信道、确认接收。数据帧 (Data Frame)用于承载上层数据。然而四次握手不属于其中任何一类。它实际上是借用数据帧的通道来传输的一种特殊协议。2. 技术细节它是什么以及如何被携带的四次握手的通用名称是4-Way Handshake其核心是生成和验证加密密钥。它使用的协议叫作EAPoL (Extensible Authentication Protocol over LAN)。在 IEEE 802.11 标准中EAPoL 帧是作为数据帧的有效载荷被传递的。最外层是数据帧当分析软件如 Wireshark捕获到一个数据帧时它首先会显示这是一个 802.11 数据帧。里面包裹着EAPoL当软件进一步解析帧的数据载荷Frame Body部分时它会读取到帧头的类型字段发现是EAPoL协议号 0x888E。这才是四次握手消息紧接着软件在 EAPoL 帧内部找到类型为EAPOL-Key的包。这些包中的 Message 1、2、3、4 就对应了你所知道的四次握手信息。3. 为什么设计成这样数据帧的价值这种设计选择背后有两层非常合理的考量逻辑分层职责清晰 (协议栈解耦)管理帧 (802.11 层)负责连接管理找到 AP、完成认证、关联上 BSS就像拿到大楼门禁卡。数据帧 (802.2 层)负责数据承载传输任何高层数据。EAPoL 帧 (高层协议)负责密钥协商本身是高层业务。将四次握手放在数据帧中清晰地隔离了连接到网络和为网络通信建立安全通道这两件不同的事。这让协议栈的每一层都可以独立演进也使得 802.11 标准本身不需要再为一种特定的认证方法定义新的帧类型。标准兼容平滑升级 (硬件与软件分离)一个不支持加密的旧网卡可能不理解四次握手但它一定认识数据帧。将 EAPoL 帧作为数据帧传输意味着这部分握手过程主要由驱动或固件处理而不是无线芯片底层的硬件状态机。这使得 Wi-Fi 安全协议能够从 WEP 演进到 WPA、WPA2、WPA3而不需要大规模更换硬件。4. 你可能会遇到的特殊情况抓包时如何区分在 Wireshark 等分析工具的过滤栏中输入eapol就能直接过滤出四次握手的报文。这些报文的物理层802.11类型都是数据帧。四次握手一定会发生吗不一定。只有当你连接到使用 WPA/WPA2/WPA3 加密的 Wi-Fi 时在关联Association成功后四次握手才会立即开始。如果你连接的是一个开放无密码的网络就没有四次握手步骤关联成功后就可以直接发送数据了。-4总结四次握手没有专属的 Wi-Fi 帧类型。它通过EAPoL 协议封装并被当作数据帧的货物在空中传输。这种设计是分层架构和标准化需求的共同结果让无线网络在保持稳定的连接管理机制之上也能灵活地支持不断升级的安全标准。四次握手过程四次握手是WPA/WPA2/WPA3个人版中用于验证双方拥有相同的PMK成对主密钥并协商生成用于数据加密的临时会话密钥PTK和GTK的关键过程。它发生在开放系统认证和关联完成之后数据传输开始之前。1. 四次握手的触发时机与位置关键点四次握手不是802.11管理帧而是EAPoL-Key帧封装在802.11数据帧中EthType0x888E。只有在WPA/WPA2/WPA3-PersonalPSK或WPA-Enterprise802.1X模式下才会触发。开放网络、WEP不会进行四次握手。2. 四次握手涉及的密钥体系密钥名称全称长度生成时机作用PSK预共享密钥256位由密码passphrase通过PBKDF2-SHA1派生WPA2用于生成PMKPMK成对主密钥256位WPA2-PSK: PMK PSKWPA3-SAE: 通过SAE协商四次握手的根本信任根ANonce认证者随机数256位AP生成用于派生PTK新鲜性SNonce申请者随机数256位STA生成用于派生PTK新鲜性PTK成对临时密钥384/512位SHA-1/256(PMK, ANonce, SNonce, MAC1, MAC2)加密单播数据KCKEAPoL完整性密钥128位PTK的前128位计算和验证MIC四次握手消息完整性KEKEAPoL加密密钥128位PTK的中间128位加密GTK消息3中的Key Data字段TK临时密钥128位PTK的后128位CCMPAES-CCMP加密单播数据GTK组临时密钥128/256位AP生成由GMK派生加密广播/多播数据IGTKIGTK管理帧保护128位802.11w用于加密管理帧保护Deauth/Disassoc等3. 四次握手详细拆解预备条件STA和AP都已经拥有PMKWPA2-PSK情况下双方PMK相同。STA和AP已通过Association交换了各自的MAC地址。第一次握手AP → STA (ANonce)方向AP → STAEAPoL-Key帧字段Key Descriptor Type: 2 (WPA2)Key Information: Install0, Key Ack1, MIC0, Secure0Key Nonce: ANonceAP生成的随机数Key MIC: 0无MIC字段Key Data: 无STA动作保存ANonce。用PMK ANonce SNonce AP MAC STA MAC计算出PTK此时缺SNonce先继续。第二次握手STA → AP (SNonce MIC)方向STA → APSTA动作生成随机数SNonce。计算PTK PRF(PMK, ANonce, SNonce, AP MAC, STA MAC)。从PTK中提取KCKEAPoL完整性密钥。构造EAPoL-Key帧Key NonceSNonce其他必要字段。用KCK计算MIC消息完整性校验附在帧中。EAPoL-Key帧字段Key Information: Install0, Key Ack0, MIC1, Secure0Key Nonce: SNonceKey MIC: 有效值覆盖整个EAPoL包Key Data: 无AP动作收到SNonce后用同样的PMK、SNonce、本身已知的ANonce和两个MAC地址计算PTK。从PTK提取KCK。验证MIC是否正确判断STA是否拥有相同PMK。MIC正确 → STA通过身份验证 → AP安装PTK。第三次握手AP → STA (分发GTK)方向AP → STAAP动作生成GTK组临时密钥用于加密广播/组播。从PTK中提取KEKEAPoL加密密钥。用KEK加密GTK加上Key RSC等信息放入Key Data字段。构造EAPoL-Key帧。用KCK计算MIC。EAPoL-Key帧字段Key Information: Install1, Key Ack0, MIC1, Secure1Key Nonce: ANonce重复第一次握手的ANonceKey MIC: 有效Key Data: KEK加密的GTK 密钥ID等STA动作验证MIC确保消息完整性。检查ANonce是否与第一次握手收到的相同防重放。用KEK解密Key Data得到GTK。安装PTK和GTK。现在已经能够加密/解密数据帧但在发送普通数据前需完成第四次握手。第四次握手STA → AP (确认)方向STA → APEAPoL-Key帧字段Key Information: Install0, Key Ack0, MIC1, Secure1Key MIC: 有效仅MIC无其他关键负载STA动作构造最终确认帧。用KCK计算MIC。AP动作验证MIC。若正确安装GTK如果之前未安装并将STA的端口状态设为授权Authorized。开始允许STA发送加密数据帧。4. EAPoL-Key帧结构WPA2字段大小(字节)消息1消息2消息3消息4EtherType20x888E0x888E0x888E0x888EVersion12222Packet Type13 (EAPoL-Key)333Packet Body Length295959979Descriptor Type12222Key Information2Key Ack1MIC1Install1, Secure1Secure1Key Length216161616Key Replay Counter81122Key Nonce32ANonceSNonceANonce0Key IV160000Key RSC800GTK的RSC0Key ID800GTK Key ID0Key MIC160MICMICMICKey Data Length200GTK加密后长度0Key Data变长无无加密的GTK无5. WPA3 的变化WPA3-Personal 使用SAE对等同时认证而非 PSK在四次握手前已经完成 SAE 密钥协商双方共享PMK。四次握手本身与WPA2类似仍使用EAPoL-Key但底层PMK不是静态密码衍生的而是通过SAE动态生成抗离线字典攻击。密钥派生函数增强使用 HMAC-SHA-256而非 SHA-1。6. 抓包示例Wireshark过滤表达式eapolMessage 1/4 (AP → STA):EAPOL-Key Key Descriptor Type: 2 (WPA2) Key Information: 0x008a (Key Ack, MIC, Secure) Key Length: 16 Key Replay Counter: 1 Key Nonce: 2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c... (ANonce) MIC: 全零Message 2/4 (STA → AP):EAPOL-Key Key Information: 0x010a (MIC, Secure) Key Nonce: a1b2c3d4e5f60718293a4b5c6d7e8f9a... (SNonce) MIC: a12b3c45d6e7f89a0b1c2d3e4f5a6b7c (有效)Message 3/4 (AP → STA):EAPOL-Key Key Information: 0x13ca (Install, Key Ack, MIC, Secure, Encrypted) Key Replay Counter: 2 Key Data: 加密的GTK (24 bytes) MIC: 有效Message 4/4 (STA → AP):EAPOL-Key Key Information: 0x030a (MIC, Secure) Key Replay Counter: 2 MIC: 有效7. 关键要点总结维度说明触发时机关联成功后数据传输前涉及协议EAPoL-Key封装在802.11数据帧中密钥根PMKWPA2-PSK中PMKPSKWPA3中由SAE协商交换内容ANonce、SNonce、GTK核心算法PRF伪随机函数、HMAC-SHA-1/256、AES-256KEK加密GTK安装时刻消息3后STA安装PTK消息4后AP安装GTK并授权端口安全特性Nonce防重放、MIC防篡改、KEK加密GTK后续WPA2数据传输使用CCMPWPA3使用GCMP-256抓包过滤eapol协议类型0x888E一句话总结四次握手是Wi-Fi安全架构的核心引擎它利用PMK和双方随机数派生PTK和KCK/KEK通过EAPoL-Key帧的4次交换验证身份并安全分发GTK最终开启802.11数据加密传输。