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

相关文章

使用zip4j实现Java中的ZIP文件加密压缩的操作方法

《使用zip4j实现Java中的ZIP文件加密压缩的操作方法》本文介绍如何通过Maven集成zip4j1.3.2库创建带密码保护的ZIP文件,涵盖依赖配置、代码示例及加密原理,确保数据安全性,感兴趣的... 目录1. zip4j库介绍和版本1.1 zip4j库概述1.2 zip4j的版本演变1.3 zip4

Linux进程CPU绑定优化与实践过程

《Linux进程CPU绑定优化与实践过程》Linux支持进程绑定至特定CPU核心,通过sched_setaffinity系统调用和taskset工具实现,优化缓存效率与上下文切换,提升多核计算性能,适... 目录1. 多核处理器及并行计算概念1.1 多核处理器架构概述1.2 并行计算的含义及重要性1.3 并

Spring boot整合dubbo+zookeeper的详细过程

《Springboot整合dubbo+zookeeper的详细过程》本文讲解SpringBoot整合Dubbo与Zookeeper实现API、Provider、Consumer模式,包含依赖配置、... 目录Spring boot整合dubbo+zookeeper1.创建父工程2.父工程引入依赖3.创建ap

Linux下进程的CPU配置与线程绑定过程

《Linux下进程的CPU配置与线程绑定过程》本文介绍Linux系统中基于进程和线程的CPU配置方法,通过taskset命令和pthread库调整亲和力,将进程/线程绑定到特定CPU核心以优化资源分配... 目录1 基于进程的CPU配置1.1 对CPU亲和力的配置1.2 绑定进程到指定CPU核上运行2 基于

SpringBoot中SM2公钥加密、私钥解密的实现示例详解

《SpringBoot中SM2公钥加密、私钥解密的实现示例详解》本文介绍了如何在SpringBoot项目中实现SM2公钥加密和私钥解密的功能,通过使用Hutool库和BouncyCastle依赖,简化... 目录一、前言1、加密信息(示例)2、加密结果(示例)二、实现代码1、yml文件配置2、创建SM2工具

Java进程异常故障定位及排查过程

《Java进程异常故障定位及排查过程》:本文主要介绍Java进程异常故障定位及排查过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、故障发现与初步判断1. 监控系统告警2. 日志初步分析二、核心排查工具与步骤1. 进程状态检查2. CPU 飙升问题3. 内存

SpringBoot整合liteflow的详细过程

《SpringBoot整合liteflow的详细过程》:本文主要介绍SpringBoot整合liteflow的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋...  liteflow 是什么? 能做什么?总之一句话:能帮你规范写代码逻辑 ,编排并解耦业务逻辑,代码

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

python实现对数据公钥加密与私钥解密

《python实现对数据公钥加密与私钥解密》这篇文章主要为大家详细介绍了如何使用python实现对数据公钥加密与私钥解密,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录公钥私钥的生成使用公钥加密使用私钥解密公钥私钥的生成这一部分,使用python生成公钥与私钥,然后保存在两个文

MySQL中的InnoDB单表访问过程

《MySQL中的InnoDB单表访问过程》:本文主要介绍MySQL中的InnoDB单表访问过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、环境3、访问类型【1】const【2】ref【3】ref_or_null【4】range【5】index【6】