WPA加密的四次握手过程

2023-11-23 17:20
文章标签 加密 过程 四次 握手 wpa

本文主要是介绍WPA加密的四次握手过程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

WPA加密的四次握手过程

一、为什么要四次握手

为了解决无线传输不安全,需要对无线连接的接入进行控制,并实现帧传播的加解密。WPA四次握手有点相当于一个“安全”地协商“交换”秘钥的过程。这个秘钥就是PTK(PairwiseTransient Key),成对传输秘钥。

二、PTK的组成

PTK包含4个部分:KCK(Key Confirmation Key),KEK(Key Encryption Key),TK(Temporal Key),MIC。

KCK用来在EAPOL4-way shake时校验完整性
KEK用于在EAPOL4-way shake的3/4的时候来加密GTK等数据
TK用于加密单播数据
MIC用于数据传输的时候TKIP方式的Michael完整性校验,CCMP不用

PTK的总长度根据加密方式不同而不同。

当加密方式是TKIP时,PTK长512位,按顺序分别为KCK占128位,KEK占128位,TK占128位, MIC占128位。

当加密方式是CCMP时,PTK长384位,按顺序分别为KCK占128位,KEK占128位,TK占128位。

三、PTK的生成

生成PTK,需要5个必要元素*:PMK、ANonce(Nonce 1,AP生成的随机数)、SNonce(Nonce2,STA生成的随机数)、AuthenticateMAC(MAC1,AP的MAC)、SupplicantMAC(MAC2,STA的MAC)

上图的四个输出里面,DataEncr和DataMIC合起来就是TK,EAPOLEncr/MIC分别对应KEK和KCK。_

四、WPA四次握手过程

1. AP把自己的随机数(ANonce)传给STA,STA在收到ANonce后,可以生成PTK。

2. STA把自己的随机数(SNonce)和生成的PTK中的MIC传给AP。AP收到SNonce后,可以生成PTK,将收到的MIC和自己生成的MIC比较进行完整性校验,如果校验失败,握手失败。

3. 校验成功,AP使用PTK加密GTK,然后把加密后的GTK传给STA。

4. STA使用自己生成的PTK解密GTK,同时验证MIC,如果无误则发送ACK进行确认。

注:GTK只包含数据传输部分的Key,也就是GroupEncryption Key(加解密)和Michael Authenticator MIC Key(完整性校验),没有包含EAP-Key部分,所以只有256位。

借鉴博文:WPA 4次握手、关于WPA/WPA2 4次握手

这篇关于WPA加密的四次握手过程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/419535

相关文章

最新版IDEA配置 Tomcat的详细过程

《最新版IDEA配置Tomcat的详细过程》本文介绍如何在IDEA中配置Tomcat服务器,并创建Web项目,首先检查Tomcat是否安装完成,然后在IDEA中创建Web项目并添加Web结构,接着,... 目录配置tomcat第一步,先给项目添加Web结构查看端口号配置tomcat    先检查自己的to

Java中的密码加密方式

《Java中的密码加密方式》文章介绍了Java中使用MD5算法对密码进行加密的方法,以及如何通过加盐和多重加密来提高密码的安全性,MD5是一种不可逆的哈希算法,适合用于存储密码,因为其输出的摘要长度固... 目录Java的密码加密方式密码加密一般的应用方式是总结Java的密码加密方式密码加密【这里采用的

SpringBoot集成SOL链的详细过程

《SpringBoot集成SOL链的详细过程》Solanaj是一个用于与Solana区块链交互的Java库,它为Java开发者提供了一套功能丰富的API,使得在Java环境中可以轻松构建与Solana... 目录一、什么是solanaj?二、Pom依赖三、主要类3.1 RpcClient3.2 Public

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO

SpringBoot整合kaptcha验证码过程(复制粘贴即可用)

《SpringBoot整合kaptcha验证码过程(复制粘贴即可用)》本文介绍了如何在SpringBoot项目中整合Kaptcha验证码实现,通过配置和编写相应的Controller、工具类以及前端页... 目录SpringBoot整合kaptcha验证码程序目录参考有两种方式在springboot中使用k

使用Python制作一个PDF批量加密工具

《使用Python制作一个PDF批量加密工具》PDF批量加密‌是一种保护PDF文件安全性的方法,通过为多个PDF文件设置相同的密码,防止未经授权的用户访问这些文件,下面我们来看看如何使用Python制... 目录1.简介2.运行效果3.相关源码1.简介一个python写的PDF批量加密工具。PDF批量加密

SpringBoot整合InfluxDB的详细过程

《SpringBoot整合InfluxDB的详细过程》InfluxDB是一个开源的时间序列数据库,由Go语言编写,适用于存储和查询按时间顺序产生的数据,它具有高效的数据存储和查询机制,支持高并发写入和... 目录一、简单介绍InfluxDB是什么?1、主要特点2、应用场景二、使用步骤1、集成原生的Influ

SpringBoot实现websocket服务端及客户端的详细过程

《SpringBoot实现websocket服务端及客户端的详细过程》文章介绍了WebSocket通信过程、服务端和客户端的实现,以及可能遇到的问题及解决方案,感兴趣的朋友一起看看吧... 目录一、WebSocket通信过程二、服务端实现1.pom文件添加依赖2.启用Springboot对WebSocket

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

作业提交过程之HDFSMapReduce

作业提交全过程详解 (1)作业提交 第1步:Client调用job.waitForCompletion方法,向整个集群提交MapReduce作业。 第2步:Client向RM申请一个作业id。 第3步:RM给Client返回该job资源的提交路径和作业id。 第4步:Client提交jar包、切片信息和配置文件到指定的资源提交路径。 第5步:Client提交完资源后,向RM申请运行MrAp