【物联网无线通信技术】802.11无线安全认证

news2024/11/17 19:34:47

本文由简入繁介绍了IEEE802.11i无线局域网安全技术的前世今生,帮助路由器开发者对WLAN的加密安全策略有一个概念上的认知,能够更好地分析STA掉线以及漫游等问题。

目录

WEP

WPA

WPA/WPA2-PSK认证过程

802.11i


WEP

WEP是Wired Equivalent Privacy的简称,有线等效保密(WEP)协议对在两台设备间无线传输的数据进行加密的方式,用以防止非法用户窃听或侵入无线网络,用来提供和有线lan同级的安全性。

WEP有2种认证方式:

开放式系统认证(open system authentication)和共有键认证(shared key authentication)。共有键认证系统包括以下几个步骤:

  1. 客户端向接入点发送认证请求。
  2. 接入点发回一个明文。
  3. 客户端利用预存的密钥对明文加密,再次向接入点发出认证请求。
  4. 接入点对数据包进行解密,比较明文,并决定是否接受请求。

WPA

WPA全名为Wi-Fi Protected Access,有WPA和WPA2两个标准,是一种保护无线电脑网络(Wi-Fi)安全的系统,它是应研究者在前一代的系统有线等效加密(WEP)中找到的几个严重的弱点而产生的。WPA实作了IEEE 802.11i标准的大部分,是在802.11i完备之前替代WEP的过渡方案.该标准的数据加密采用TKIP协议(Temporary Key Integrity Protocol),认证有两种模式可供选择,一种是使用802.1x协议进行认证; 一种是称为预先共享密钥PSK(Pre-Shared Key)模式.WPA 超越WEP 的主要改进就是在使用中可以动态改变钥匙的“临时钥匙完整性协定”(Temporal Key Integrity Protocol,TKIP),加上更长的初向量,这可以击败知名的针对 WEP 的金钥匙取攻击。WPA(Wi-Fi Protected Access)加密方式目前有四种认证方式:

  1. WPA
  2. WPA-PSK
  3. WPA2
  4. WPA2-PSK

采用的加密算法有二种:

  1. AES(Advanced Encryption Standard高级加密算法)
  2. TKIP(Temporal Key Integrity Protocol临时密钥完整性协议)

WPA/WPA2-PSK认证过程

首先是PSK的产生方法:PSK = PBKDF2(PassPhrase(HQKS2017), ssid, 4096, 256),在personal状态下:PMK=PSK。实际使用过程中用的是PTK。

四次握手:

  1. AP广播SSID,AP_MAC(AA)→STATION,使用接收到的SSID,AP_MAC(AA)和passphares使用同样算法产生PSK。
  2. STATION 发送一个随机数SNonce,STATION_MAC(SA)→AP接受到SNonce,STATION_MAC(SA)后产生一个随机数ANonce然后用PMK,AP_MAC(AA),STATION_MAC(SA),SNonce,ANonce 用以下算法产生PTK,PTK=SHA1_PRF(PMK, Len(PMK),"Pairwise key expansion",MIN(AA,SA) ||Max(AA,SA) || Min(ANonce,SNonce) || Max(ANonce,SNonce))MIC Key=PTK前16个字节。
  3. AP发送上面产生的ANonce→STATION用接收到ANonce 和以前产生PMK,SNonce,AP_MAC(AA),STATION_MAC(SA)用同样的算法产生PTK。提取这个PTK 前16 个字节组成一个MICKEY使用以下算法产生MIC值用这个MIC KEY 和一个802.1x data 数据帧使用以下算法得到MIC值,MIC = HMAC_MD5(MIC Key,16,802.1x data)。
  4. 用上面那个准备好的802.1x 数据帧在最后填充上MIC值和两个字节的0(十六进制)让后发送这个数据帧到AP。收到这个数据帧后提取这个MIC。并把这个数据帧的MIC部分都填上0(十六进制)这时用这个802.1xdata 数据帧,和用上面AP产生的MIC KEY 使用同样的算法得出MIC’。如果MIC’等于STATION发送过来的MIC。那么第四次握手成功。若不等说明则AP 和STATION 的密钥不相同,或STATION 发过来的数据帧受到过中间人攻击,原数据被篡改过。握手失败了。

 

MIC的派生过程:

  1. PSK=PMK=pdkdf2_SHA1(passphrase, SSID, SSID length,4096)
  2. PTK=SHA1_PRF(PMK, Len(PMK),"Pairwise key expansion",MIN(AA,SA) || Max(AA,SA) || Min(ANonce,SNonce) || Max(ANonce,SNonce))
  3. MIC KEY=提取PTK 的前16 个字节
  4. MIC = HMAC_MD5(MIC Key,16,802.1x data)

802.11i

无线安全标准,WPA是其子集。IEEE 802.11i是802.11工作组为新一代WLAN制定的安全标准,主要包括加密技术:TKIP(Temporal Key Integrity Protocol)、AES(Advanced Encryption Standard)以及认证协议IEEE802.1x。

安全机制包括以下几个部分:

  1. 安全能力通告协商阶段
    1. AP的安全能力通告
    2. STA同AP之间的链路认证
    3. TA同AP建立802.11关联
  2. 安全接入认证阶段,该阶段主要进行用户身份认证,并产生双方的成对主密钥PMK。PMK是所有密钥数据的最终来源,可由STA和认证服务器动态协商而成,或由配置的预共享密钥(PSK)直接提供。对于802.1X认证方式:PMK是在认证过程中STA和认证服务器动态协商生成(由认证方式协议中规定),这个过程对AP来说是透明的,AP主要完成用户认证信息的上传、下达工作,并根据认证结果打开或关闭端口。对于PSK认证:PSK认证没有STA和认证服务器协商PMK的过程,AP和STA把设置的预共享密钥直接当作是PMK,只有接入认证成功,STA和认证服务器(对于802.1X认证)才产生双方的PMK。对于802.1X接入认证,在认证成功后,服务器会将生成的PMK分发给AP。
  3. 会话秘钥协商阶段,该阶段主要是进行通信密钥协商,生成PTK和GTK,分别用来加密单播和组播报文。AP与STA在PMK的基础上计算出一个512位的PTK,并将该PTK分解成为以下几种不同用途的密钥:数据加密密钥、MIC Key(数据完整性密钥)、EAPOL-Key报文加密密钥、EAPOL-Key 报文完整性加密密钥等,用来为随后的单播数据帧和 EAPOLKey消息提供加密和消息完整性保护。在4次握手成功后,AP使用PTK的部分字段对GTK进行加密,并将加密后的GTK发送给STA,STA使用PTK解密出GTK。GTK是一组全局加密密钥,AP用GTK来加密广播、组播通信报文,所有与该AP建立关联的STA均使用相同的GTK来解密AP发出的广播,组播加密报文并检验其MIC。
  4. 加密数据通信阶段。该阶段主要进行数据的加密及通信。TKIP或AES加密算法并不直接使用由PTK/GTK分解出来的密钥作为加密报文的密钥,而是将该密钥作为基础密钥(Base Key),经过两个阶段的密钥混合过程,从而生成一个新密钥。每一次报文传输都会生成不一样的密钥。在随后的通信过程中,AP和STA都使用该密钥加密通信。


十六宿舍 原创作品,转载必须标注原文链接。

©2023 Yang Li. All rights reserved.

欢迎关注 『十六宿舍』,大家喜欢的话,给个👍,更多关于嵌入式相关技术的内容持续更新中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/705627.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于matlab使用扩张卷积的语义分割(附源码)

一、前言 使用扩张卷积训练语义分割网络。语义分割网络对图像中的每个像素进行分类,从而生成按类分割的图像。语义分割的应用包括自动驾驶的道路分割和医疗诊断的癌细胞分割。 二、加载训练数据 该示例使用 32 x 32 个三角形图像的简单数据集进行说明。数据集包括…

Quiz 14_2-2: Using Web Services | Python for Everybody 配套练习_解题记录

文章目录 Python for Everybody课程简介Quiz 14_2-2: Using Web Services单选题(1-15)操作题Autograder 1: Extract Data from JSONAutograder 2: Calling a JSON API Python for Everybody 课程简介 Python for Everybody 零基础程序设计(P…

12 | 领域建模:如何用事件风暴构建领域模型?

还记得微服务设计为什么要选择 DDD 吗? 其中有一个非常重要的原因,就是采用 DDD 方法建立的领域模型,可以清晰地划分微服务的逻辑边界和物理边界。可以说,在 DDD 的实践中,好的领域模型直接关乎微服务的设计水平。因此…

代码随想录算法训练营第4天| 24. 两两交换链表中的节点 19.删除链表的倒数第N个节点 面试题 02.07. 链表相交 142.环形链表II

今日学习的文章链接,或者视频链接 第二章 链表part02 自己看到题目的第一想法 看完代码随想录之后的想法 24: 注意链表的操作: class Solution { public:ListNode* swapPairs(ListNode* head) {auto dummyhead new ListNode(0,head);auto prev …

Apache Doris (五) :Doris分布式部署(二) FE扩缩容

目录 1. 通过MySQL客户端连接Doris ​​​​​​​​​​​​​​2. FE Follower扩缩容 ​​​​​​​3. FE Observer 扩缩容 ​​​​​​​​​​​​​​4. FE扩缩容注意点 进入正文之前,欢迎订阅专题、对博文点赞、评论、收藏,关注IT贫道&#…

超详细|粒子群优化算法及其MATLAB实现

本文主要介绍粒子群算法的背景与理论,并结合对应部分的MATLAB程序对其实现流程做了阐述,代码获取方式见文末。 00 文章目录 1 粒子群优化算法 2 问题导入 3 MATLAB程序实现 4 改进策略 5 展望 01 粒子群优化算法 1.1 粒子群优化算法背景 近年来&…

亿发软件:智慧中药房信息化建设,中医药安全煎煮解决方案

传统的中药饮片煎煮服用较为繁琐,局限了诸多人群的使用。为了优化医疗服务,并满足患者不断增长的中医药需求,智慧中药房的概念应运而生。智慧化中药房通过信息化和自动化相结合,旨在提高中药处方的管理和效率。下面就让我们了解一下中药配方颗…

创建一个nuxt项目

yarn create nuxt-app ssr 启动项目 如果使用npm run start 可能会报错,提示需要配置为开发环境 可以先执行npm run dev 看看

HPM6750系列--第三篇 搭建MACOS编译和调试环境

一、目的 在上一篇《HPM6750系列--第二篇 搭建Ubuntu开发环境》我们介绍了Ubuntu上开发HPM6750,本篇主要介绍MAC系统上的开发环境的搭建过程,整个过程和Ubuntu上基本类似。 二、准备 首先我们在Mac电脑上打开一个terminal,然后创建一个…

苹果Vision Pro手势+眼球融合交互的奥秘

毫无疑问,Vision Pro在眼球追踪手势的融合交互体验上,给AR/VR头戴设备带来了新突破,在用户体验上的提升非常明显。 ​那么,为什么Vision Pro上这一功能会被如此值得关注呢?为了弄清楚,我们先来看看主流VR设…

037:mapboxGL输入经纬度,地址坐标转换,弹出位置点地址信息

第037个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+mapbox中输入经纬度,地址坐标转换,弹出位置点地址信息. 直接复制下面的 vue+mapbox源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共158行)相关API参考:专栏目标示例效果 配置方式…

配置Jenkins slave agent(通过jnlp)方式连接

上一章,使用ssh的方式添加了两个agent,并都成功完成了构建任务,这一章使用jnlp的方式配置agent,jnlp方式配置agent有个好处,就是agent是主动去找到Master请求连接的,master->agent的通道可以配置一个age…

【AUTOSAR】BMS开发实际项目讲解(二十九)----电池管理系统电池充放电功率控制与SOC

电池充放电功率控制 关联的系统需求 Sys_Req_3901、Sys_Req_3902、Sys_Req_3903、Sys_Req_3904; 功能实现描述 电池充放电功率控制主要包括以下内容: 60S可用功率 参见[CELL] 30S可用功率 参见[CELL] 10S可用功率 参见[CELL] SOP算法 ID Description ASI…

LVDS接口ADC要点数据采集流程

一:要点 1.如果两片AD,四路输出做了同步化处理之后,一定只用同步化模块读时钟(一片AD的时钟)去上传数据,到DDR3模块。 2.ADS42和LTC2208的ADC的数据伴随时钟都来源与输入的采样时钟(有些采样时…

虚拟机上用docker + nginx跑前端并支持https和http

情况是这样,我在虚拟机上,使用docker跑前端,需要这个前端支持https,原http的话自动跳转到https。另外,前端部署使用了负载均衡,即使用了3个docker跑前端:1个入口,另外2个是前端&…

Wi-Fi模块(ESP8266)详解

Wi-Fi模块——ESP8266 0. Wi-Fi模块概述1. 常见的Wi-Fi模块2. ESP8266模块2.1 概念2.2 特点 3. STM32F103C8T6使用ESP8266进行无线通信的示例代码 0. Wi-Fi模块概述 Wi-Fi模块是一种用于无线通信的设备,它能够通过Wi-Fi技术实现设备之间的无线数据传输和互联网连接…

java面试Day18

1.什么是 MySQL 执行计划?如何获取执行计划并对其进行分析? MySQL 执行计划是指 MySQL 查询优化器生成的一份详细的查询执行计划,它展示了 MySQL 在执行查询时所采取的具体执行计划,包括表的访问顺序、数据读取方式、使用的索引、…

大模型入局传统算法,LLMZip基于LLaMA-7B实现1MB文本压缩率90%!

论文链接: https://arxiv.org/abs/2306.04050 随着以ChatGPT、GPT-4为代表的AI大模型逐渐爆火进入公众视野,各行各业都开始思考如何更好的使用和发展自己的大模型,有一些评论甚至认为大模型是以人工智能为标志的第四次产业革命的核心竞争产品…

11.窗口看门狗-WWGD

1.窗口看门狗概述: (1)之所以称为窗口是因为其喂狗时间是一个有上下限的范围内(窗口),可以通过设定相关寄存器,设定其上限时间(下限时间固定)。喂狗的时间不能过早也不能过晚。而独立看门狗限制喂狗时间在0-x内&#…

Zigbee模块(CC2530)详解

Zigbee模块(CC2530) 0. Zigbee概述1. 常见的Zigbee模块2. CC2530模块3. STM32使用CC2530模块方法代码模板 0. Zigbee概述 Zigbee是一种无线通信协议,专为低功耗、低数据速率的应用而设计。它工作在2.4 GHz频段,常用于家庭自动化、…