【智能家居篇】wifi网络接入原理(中)——认证Authentication

2023-05-16

转载请注明出处:http://blog.csdn.net/Righthek 谢谢!        

        还是用手机来举例,扫描完成后,我们会选择想要加入的WIFI热点。此时,大部分都会弹出一个输入密码的窗口,当然也有不用输入密码的。这个过程叫做:认证(Authentication)。

        有时觉得搞技术的真累,当我们辛辛苦苦地在网上找资料学习新技术时,当我们渐渐掌握这门技术之后,才发现该技术对自己来说是新的,但是对现时来说,已经过时并且被遗弃了!所以说……Shit!

        由于网上大量讲解WIFI技术的资料在认证方面都是侧重讲WEP加密方式。但是,时至今日,WEP已经属于石器时代的技术了,而且破解方法满天飞。虽然现在无线路由器都保留WEP加密方式,但是当你进行设置时,它会用红字提醒你:

        注意:您选择的WEP加密经常在老的无线网卡上使用,新的802.11n不支持此加密方式。所以,如果您选择了此加密方式,路由器可能工作在较低的传输速率上。建议使用WPA2-PSK等级的AES加密。

        看到没?现在的802.11n协议已经不支持WEP加密方式了,更何况最新的802.11ac。所以本文侧重讲解现当代正在使用的WPA/WPA2加密方式,特别是倾向于家庭网络的WPA-PSK/WPA2-PSK。

        无线网络所使用的媒介是经过特殊编码与调制过的无线电波链路。它是众所周知的开放标准,只要对无线传输有所研究和了解的人,都可以在无线覆盖范围内发送和接收信号。因此对数据的拦劫和非法灌注是多么的简单!

        由于无线网络的最大缺陷就是安全性,进行身份认证是必须的,同时认证的连接工作也必须予以加密,以防未经授权的使用者访问。

        早期的IEEE802.11定义了两种认证方式:

        (1)开放系统认证(OpenSystem authentication);

        (2)共享密钥认证(SharedKey authentication)。

        开放系统认证是IEEE802.11默认的认证方式,实质上并没有做认证。连接无线网络时,基站并没有验证工作站的真实身份。认证过程由以下两个步骤组成:第一,工作站发送身份声明和认证请求;第二,基站应答认证结果,如果返回的结果是“successful”,表示两者已相互认证成功。

        共享密钥认证依赖于WEP(Wired Equivalent Privacy,有线等效加密)机制,而上文已经提到WEP渐渐被淘汰,我们就不讲解了,接下来侧重讲解与我们家庭无线网络息息相关的WPA-PSK/WPA2-PSK认证机制。当我们进入无线路由器设置界面,打开无线安全设置,就会看到以下信息,如图1。WPA(Wi-Fi Protected Access)是WIFI联盟制定的安全性标准,WPA2是第二个版本。PSK(PreShared Key)叫做预共享密钥。WPA-PSK/WPA2-PSK主要是针对个人或家庭网络等,对安全性要求不是很高的用户。而WPA /WPA2是针对企业的,对安全性要求很高的用户,在WPA/WPA2选项中,大家可以看到它比WPA-PSK/WPA2-PSK多了一个Radius服务器,这个就是认证服务器。而对我们家庭网络来说,适合选择WPA-PSK/WPA2-PSK选项,因为我们不需要认证服务器。现有我们来详细分析WPA-PSK/WPA2-PSK认证机制。


图1 WPA-PSK/WPA2-PSK、WPA/WPA2

        1、WPA-PSK

        WPA-PSK(Wi-Fi ProtectedAccess,Wi-Fi保护访问)是WiFi联盟推出的标准,它是为兼容原有的WEP硬件产品,所以它采用的模式是:

WPA-PSK = PSK + TKIP + MIC

        PSK:PreShared Key,预共享密钥。

        TKIP:Temporal KeyIntegrity Protocol,临时密钥完整性协议。

        MIC:Message IntegrityCode,消息完整性校验码。

        TKIP的开发目的是为了提高原有的基于WEP硬件的安全性,因此它和WEP一样都是采RC4加密算法,同时保留了WEP的基本结构和操作方式。TKIP是一种过渡的加密协议,现已被证明安全性不高。因此,我们就不去详细的讲解了。

        2、WPA2-PSK

        WPA2是在802.11i颁布之后,WIFI联盟随即推出的最新无线安全标准,它遵循802.11i标准,以下是它采用的模式:

WPA2-PSK= PSK + AES + CCMP

        PSK:PreShared Key,预共享密钥,它是一种802.11身份验证方式,以预先设定好的静态密钥进行身份验证,此密钥必须手动进行传递,即是我们的手机连接WIFI热点时需要输入的密码。

        AES:Advanced EncryptionStandard,高级加密标准。AES是美国NIST制定的替代DES的分组加密算法。AES具有优秀的密钥扩展方案,灵活的密钥生成算法。算法对内存要求极低,即使在限制较大的环境中也能获得很好的性能。分组和密钥被设计成可以在三种长度中自由选择的形式,AES具有128、192、256位的密钥。802.11规定CCMP中的AES使用的是128位密钥,它的加密块大小也是128位。

        CCMP:Counter modewith Cipher-block chaining Message authentication code Protocol,计数器模式及密码块链消息认证码协议。它是基于高级加密标准(AES)的CCM(CTR with CBC-MAC)模式。CCM是一种通用的模式,它可以使用在任何成块的加密算法中。CCM模式使用CTR(Counter Mode)提供数据保密,并采用密码块链信息认证码(Cipher-Block Chaining with Message Authentication Code,CBC-MAC)来提供数据认证和完整性服务。

        CCMP加密时由以下四个输入项组成:

        (1)明文(Plaintext MPDU);

        (2)临时密钥(TK);

        (3)封包编号(PN);

        (4)密钥标识符(KeyId);

        CCMP的加密和解密过程如图2、图3。


图2  CCMP加密过程


图3  CCMP解密过程

        下面让我们来看看CCMP帧封装格式,如图4。MAC Header是明文(Plaintext MPDU)原封不动传递过来的,该MAC Header符合802.11MAC标准帧格式。CCMP扩展了原始的MPDU长度到16个octet(注:在网络术语中,用octet表示8 bits),包括8 octets的CCMP头部和8 octets的MIC。CCMP头部由PN、ExtIV、KeyID组成。PN是48位的代表6个octets的数组,在PN中,PN5是最重要的的,PN0是重要性最低的。Data(PDU)是我们需要传输的数据。MIC(Message Integrity Code)是消息完整性检验码,它是针对一组欲保护数据计算出来的散列值,用以防止数据遭人篡改。FCS(Frame Check Sequence)是帧检验序列,处于802.11网络帧的尾部,用来侦测数据是否损坏,若接收端所计算出的FCS与帧中记载的FCS值不同,则可推断出该帧已经损坏并将其丢弃。


图4  CCMP帧封装格式



转载请注明出处:http://blog.csdn.net/Righthek 谢谢!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【智能家居篇】wifi网络接入原理(中)——认证Authentication 的相关文章

  • Lwip从入门到放弃之(一)---基础网络知识扫盲

    Lwip从入门到放弃之 基础网络知识扫盲 一 由于工作中用到了有关Lwip的有关知识 xff0c 本人作为一个网络通信协议的门外汉 xff0c 打算系统的学习一下以太网通讯的有关知识 而Lwip作为一款开源的轻量级TCP IP协议栈 xff
  • nginx电信合规100分配置

    在日常线上部署中 xff0c 总会遇到nginx配置基线漏洞 xff0c 整理了一份nginx100分配置分享下 可以通过基线扫描 nginx conf user nobody worker processes 1 error log lo
  • gitee码云webhook,代码提交后同步到服务器。

    1 创建脚本 xff0c 写入以下内容 脚本放入www根目录下 span class token delimiter important lt php span span class token variable json span spa
  • Socket接口编程

    简介 1 Socket 英文原意是 孔 或者 插座 的意思 在网络编程中 通常将其称之为 套接字 当前网络中的主流程序设计都是使用 Socket 进行编程的 因为它简单易用 更是一个标准 能在不同平台很方便移植 2 socket是统一的编程
  • Linux基础命令-chattr更改文件隐藏属性

    目录 前言 一 chattr命令介绍 二 语法及常用参数和模式 2 1 一样用help或man查看语法 2 2 常用参数 2 3 命令的模式 三 参考实例 3 1 给文件添加无法修改的权限 3 2 从指定文件移除隐藏属性 3 3 给目录添加
  • 四轴飞行器的串级PID参数整定经验

    串级PID即将两个PID控制器按照串联的方式连接起来 xff0c 前一个的输出作为后一个的输入两者共同控制控制对象 对于四旋翼来讲最普通的就是外环角度环 xff0c 内环角速度环 xff0c 两者怎么联系呢 xff0c 有的说法是 xff1
  • 嵌入式C语言复习——Day4

    嵌入式C语言复习 Day4 C语言函数的使用 1 函数概述 xff1a 一堆代码的集合 xff0c 用一个标签去描述它 xff0c 复用化 xff1b 函数三要素 xff1a 1 函数名 xff08 地址 xff09 2 输入参数 3 返回
  • C++基础复习——Day2

    类和对象 封装对象的初始化和清理构造函数和析构函数构造函数的分类及调用拷贝构造函数调用时机深拷贝与浅拷贝 C 43 43 对象模型和this指针友元运算符重载加号运算符重载左移运算符重载递增运算符重载赋值运算符重载 继承继承的基本用法继承方
  • 【模电基础复习】

    模拟电子技术 概念向 1 二极管杂质半导体的形成载流子是什么线性元件与非线性元件PN结形成原理及特性PN结的击穿二极管特性和主要参数二极管应用其他二极管类型 1 思考题为什么称空穴是载流子 xff1f 如何从PN结的电压电流特性方程来理解其
  • 【数电基础复习】

    数字电子技术 概念向 数制和码制数字量与模拟量位权十 二进制运算反码 补码奇偶校验 逻辑函数逻辑代数运算最小项和最大项逻辑函数化简方法 门电路CMOS门电路CMOS反相器CMOS电压传输特性和电流传输特性CMOS反相器静态输入特性和输出特性
  • 数据结构与算法——队列

    数据结构与算法 队列队列的链式存储结构创建一个队列入队列操作 出队列操作销毁一个队列 队列 队列 xff08 queue xff09 是只允许在一端进行插入操作 xff0c 而在另一端进行删除操作的线性表 与栈相反 xff0c 队列是一种先
  • 数据结构与算法——递归和分治

    数据结构与算法 递归斐波那契数列的递归实现 分治 递归 在现实当中 xff0c 我们只有在迫不得已的情况下才使用递归 xff0c 因为递归本身的效率并不理想 xff0c 但他的思想却值得我们留存在记忆之中 斐波那契数列的递归实现 使用递归实
  • 数据结构与算法——字符串

    数据结构与算法 字符串字符串的比较字符串的存储结构BF算法KMP算法 字符串 定义 xff1a 串 String 是由零个或多个字符组成的有限序列 xff0c 又名叫字符串 一般记为 s 61 a1a2a3 an n gt 61 0 串可以
  • 数据结构对齐规则(C语言)

    概念 xff1a 一些概念是为了容易理解 xff0c 自己定义的 1 基本对齐系数 xff1a 默认情况 xff1a 由编译器和操作系统决定 xff0c 一般来说32位系统对齐系数为4 xff08 字节 xff09 xff1b 64位系统对
  • ubuntu grace/xmgrace安装和使用

    grace是什么 xff1f Grace是 GRaphing Advanced Computation and Exploration of data 的缩写 它是在X Window系统和Motif下的所见即所得 xff08 所见及所得 x
  • OFDM多径传输时域和频域模型,以及循环前缀的作用

    1 多径信道传输模型 从信号传输的基本模型入手 考虑如下式所示的线性时不变系统 xff0c y t 61 h
  • 对单片机堆栈的理解

    看关于单片机方面的书籍的时候 xff0c 总是能看到别人说的一些堆栈啊什么的操作 xff0c 之前看到这个术语就直接跳过 xff0c 没想到去探究单片机内部的原理 但是最近课程学习微机原理这门课 xff0c 需要我们写汇编程序 xff0c
  • ROS 中package.xml文件详解01

    package xml文件时每一个ros包都要有的一个文件 xff0c 也是必须要包含的一个文件 1 最简单的xml文件 span class token operator lt span package format span class
  • 常用车载总线CAN、CAN FD、LIN、FlexRay、Ethernet介绍

    文章目录 前言 关于这些总线的详细介绍可分别参考如下 xff1a 一 为什么要这些总线二 车载总线的种类1 CAN1 1 CAN协议简介1 2 CAN协议特点 2 CAN FD2 1 CAN FD协议简介2 2 CAN FD协议特点 3 L
  • Leetcode刷题【8. 字符串转换整数】

    力扣第8题 xff0c 字符串转换整数 atoi 题目描述 xff1a 请你来实现一个 myAtoi string s 函数 xff0c 使其能将字符串转换成一个 32 位有符号整数 xff08 类似 C C 43 43 中的 atoi 函

随机推荐

  • Leetcode刷题【10. 正则表达式匹配】

    力扣第10题 xff0c 正则表达式匹配 题目描述 xff1a 给你一个字符串 s 和一个字符规律 p xff0c 请你来实现一个支持 和 的正则表达式匹配 匹配任意单个字符 匹配零个或多个前面的那一个元素 所谓匹配 xff0c 是要涵盖
  • Jetseon TX2 & IntelRealsense D435i & Python

    Jetseon TX2 amp IntelRealsense D435i amp Python amp Socket 一 IntelRealsense Python Wrapper GitHub 1 Installation pip ins
  • Unix 环境高级编程(一):开发环境

    Unix 环境高级编程 xff08 一 xff09 xff1a 开发环境 一 Unix操作系统二 Linux操作系统三 GNU编译工具 xff08 GCC xff09 1 简介2 基本用法3 文件后缀4 构建过程5 预处理指令6 预定义宏7
  • pyqt判断鼠标点击事件——左键按下、中键按下、右键按下、左右键同时按下等等

    我用自定义的myLabel类继承pyqt中的QLabel类 xff0c 然后在myLabel类中重载了鼠标按下事件函数 xff0c 在这一函数中实现了判断左右中键按下的代码 from PyQt5 import QtCore QtGui Qt
  • 无人驾驶学习笔记--路径规划(一)【Path Finding -- Hybrid A* 】

    无人驾驶学习笔记 路径规划 xff08 一 xff09 Path Finding Hybrid A 混合A算法 xff08 Hybrid A xff09 It uses continuous search space 连续空间It alwa
  • rosbag remp 以及/velodyne_packets和/velodyne_points的相互转换

    在采集velodyne雷达数据的时候 xff0c 本来想要采集的是 velodyne points topic xff0c 却不小心复制成了 velodyne packets topic 采完数据才发现不对 xff0c 一脸懵逼 赶紧查一下
  • 串口调试助手vc源程序及其详细编写过程

    目次 xff1a 1 建立项目 2 在项目中插入MSComm控件 3 利用ClassWizard定义CMSComm类控制变量 4 在对话框中添加控件 5 添加串口事件消息处理函数OnComm 6 打开和设置串口参数 7 发送数据 8 发送十
  • 18张含金量最高的大数据证书

    这年头从事数据行业很不赖 用人需求量之大达到创记录的水平 xff0c 薪资也水涨船高 几乎任何数据认证都会让你的薪资涨一涨 本文介绍了哪几大数据认证可以让你稳赚丰厚薪水 顶级数据技能拿顶薪 你是不是在想 xff1a 为获得那下一份数据认证付
  • XML解析——Java中XML的四种解析方式

    XML是一种通用的数据交换格式 它的平台无关性 语言无关性 系统无关性 给数据集成与交互带来了极大的方便 XML在不同的语言环境中解析方式都是一样的 只不过实现的语法不同而已 XML的解析方式分为四种 xff1a 1 DOM解析 xff1b
  • JVM调优总结 -Xms -Xmx -Xmn -Xss

    Xms 是指设定程序启动时占用内存大小 一般来讲 xff0c 大点 xff0c 程序会启动的快一点 xff0c 但是也可能会导致机器暂时间变慢 Xmx 是指设定程序运行期间最大可占用的内存大小 如果程序运行需要占用更多的内存 xff0c 超
  • Spring Boot 传参方式

    最近在搞Spring Boot的项目 xff0c 把传参方式总结一下 网上也参考一些文章 xff0c 总结的很不错 xff0c 这里借鉴一下 注解 64 RequestParam 这个注解用来绑定单个请求数据 xff0c 既可以是url中的
  • Java BigDecimal开方

    前言 一般开平方使用的是Math中的静态方法Math sqrt double a xff0c 涉及到金融计算的时候 xff0c Math sqrt double a 精度就不够了 金融领域的计算 xff0c 用的都是BigDecimal类型
  • Spring Boot 集成RabbitMQ

    RabbitMQ is an open source multi protocol messaging broker 前言 参照官方Messaging with RabbitMQ xff0c 记录在实战中的一些坑 搭建RabbitMQ服务
  • Java 获取接口所有实现类

    利用Spring的Bean工厂 xff0c 获取接口所有实现类 前言 在学习Spring Boot 集成RabbitMQ时 xff0c 发现定义了好几个bean xff0c 这些bean在什么地方用到呢 xff1f 查看RabbitAdmi
  • Intellij IDEA-SSH executable-Native

    Connecting to gitlab using PuTTY generated SSH key in IDEA 背景 项目开发中 xff0c 使用Gitlab搭建git服务 xff0c 做代码的版本管理 xff0c 一开始是使用htt
  • 匿名四轴PID参数调试讲解

    过程详解 1 要在飞机的起飞油门基础上进行PID参数的调整 xff0c 否则 烤四轴 的时候调试稳定了 xff0c 飞起来很可能又会晃荡 2 内环的参数最为关键 xff01 理想的内环参数能够很好地跟随打舵 xff08 角速度控制模式下的打
  • 使用cv2eigen或eigen2cv时注意头文件包含顺序

  • 对Socket CAN的理解(3)——【Socket CAN发送数据流程】

    转载请注明出处 xff1a http blog csdn net Righthek 谢谢 xff01 对于本文 xff0c 我们将从用户层使用Socket CAN进行数据发送时 xff0c 数据从用户空间到底层驱动的整个通信流程 xff0c
  • 【智能家居篇】嵌入式WIFI与普通WIFI的区别

    转载请注明出处 xff1a http blog csdn net Righthek 谢谢 xff01 既然我们这系列的文章名称为 智能家居篇 xff0c 那么我们有必要提出一个与智能家居相关的概念 曾经一次在TI的无线研讨会上 xff0c
  • 【智能家居篇】wifi网络接入原理(中)——认证Authentication

    转载请注明出处 xff1a http blog csdn net Righthek 谢谢 xff01 还是用手机来举例 xff0c 扫描完成后 xff0c 我们会选择想要加入的WIFI热点 此时 xff0c 大部分都会弹出一个输入密码的窗口