WiFi WPS的来龙去脉

  • 1 什么是WPS
  • 2 系统构成
  • 3 协议流程
    • 3.1 PIN方式
    • 3.2 PBC方式
    • 3.3 帧类型
    • 3.4 M1~M8功能说明
  • 4 数据格式
  • 5 总结

1 什么是WPS

WPS(WiFi Protected Setup),又称为WSC(WiFi Simple Configuration)。诞生于2010年,目前最新版本为V2.0.8。主要目的是用简单的操作实现大多数人不懂的WiFi配置,保证WiFi上网的安全性。其本身是一个配置协议,不是一种WiFi的接入方式。它只是用一种黑盒子的方式以简单操作实现了复杂的配置的下发和生效,之后终端会用这些配置参数进行WiFi的连接,从而避免不懂行的用户在页面乱配参数。

此协议核心内容为两部分:1)配置数据的一般表达形式;2)协议流程。

目前使用最多的是PIN码方式和PBC按键方式,均属于带内方式。使用NFC是带外方式,不常见,本文档只对带内方式作详解。

2 系统构成

如下图,WPS系统由三部分构成:管理者(Registrar)、登录者(enrollee)、热点(AP)。这是按功能逻辑分类,实际上可以Registrar和AP在同一台设备上实现。

Registrar可能是独立的设备或是与AP在同一设备上的逻辑功能模块。如果Registrar是独立的设备,则与AP可以通过WiFi或以太网进行连接。

Enrollee是wifi STA设备。与AP的接口A是基于WiFi连接实现的。这里所说的WiFi连接,是WPS协议定义的特殊的WiFi连接过程,其目的是传递配置参数。当参数传递完毕后,这个连接将会断开。

Enrollee和Registrar之间的接口E,是认证和配置传递的接口。认证是通过PIN码实现的。

Registrar和AP之间的接口M,原理和接口E类似,实现Registrar对AP的配置,这时的AP角色与Enrollee类似。

下面举个例子,说明这三个角色的工作过程。
1)首先,AP上电启动,使用默认的WiFi参数工作。因为当前没有与Registrar连接过,所以WiFi Simple Configuration State为“Not Configured”(0x01);

2)AP定期发送beacon帧,帧中带WSC IE信息,其中的WiFi Simple Configuration State为“Not Configured”(0x01);

3)Registrar在扫描时,发现有一个AP支持WSC(带WSC IE),并且state为“Not Configured”,则触发配置流程;

4)Registrar需要知道此AP的PIN码,用户(维护人员)通过在AP上读取标签上的PIN码,并输入到Registrar中;

5)Registrar将按照下面流程与AP进行交互操作;在M8中下发了对AP的配置参数。包括SSID、加密类型(WEP、WPA、WPA2、Mixed)、加密算法(TKIP、AES)、密码等信息。这里的SSID/密码是Registrar根据AP的特征参数(如MAC)和随机数自动生成,生成的算法可以自行定义。

6)AP在接收到Registrar的配置后,断开与Registrar的连接,并启用新的参数;这时WiFi Simple Configuration State变为“Configured”(0x02);

7)Registrar使用新的SSID和密码与AP建立新的安全连接,用于后续对Enrollee的认证和配置。

3 协议流程

在上一节的例子中,已经给出了一个Registrar和AP之间的交互流程。本节,主要讲一下Enrollee(STA)通过WSC获取配置的流程。可分为PIN方式和PBC方式两种。

3.1 PIN方式

分Registrar触发和Enrollee触发两种情况,分别如下面两个图所示:


两种情况大同小异,触发方在beacon或Probe Request帧中带WSC IE信息,其中有configuration methods字段,此字段定义如下:

当Bit2为1时,即代表PIN码来自于标签(Label),Registrar界面上输入当前接入的Enrollee设备标签上印有的PIN码,即可完成WSC配置。

3.2 PBC方式

PBC即按键方式,分为Registrar先按键和Enrollee先按键两种情况。


两种情况类似,WSC IE信息中的configuration methods字段Bit7为1时,表示使用PBC方式。

PBC方式其实是PIN方式的一个变种,为了简化操作,不需要输入PIN码,而是使用全0作为PIN码。

3.3 帧类型

上述流程中,主要涉及两类帧:1)802.11协议定义的WiFi连接过程使用的beacon、probe、authentication、association帧;2)EAP和EAPOL帧。

从过程的角度看,与帧类型对应,分为发现过程和配置过程。发现过程的帧格式是802.11管理帧,可参考802.11协议。EAPOL帧是802.1X协议中定义。

EAPoL帧格式中各字段含义如下:

WSC中EAP帧格式如下:

  • 流程中EAP-request/identity、EAP-response/identity帧,即RFC3748中定义type=1的identity帧。
  • 流程中EAP-request(start) 帧,Op-Code为0x01(WSC_Start)。
  • 流程中M1-M8帧,Op-Code为0x04(WSC_MSG)。
  • 流程中Done帧,Op-Code为0x05(WSC_Done)。
  • 流程中EAP-fail帧,为Code=4的帧。

3.4 M1~M8功能说明


1)M1和M2是双方建立加密连接的过程,分别向对方发送公共密钥(PKE和PKR)。结合随机数N1和N2,生成之后通信的加密/解密密钥。

2)M3~M7是认证过程,通过对E-Hash1和E-Hash2、R-Hash1和R-Hash2的计算,确认双方所使用的PIN码一致。

3)M8携带configData,用于最终的配置。

在特殊情况下,可以在M2中携带configData,并省略M3~M8的过程。

对于PBC方式而言,M3~M7有点多余,因为PIN码为全0,认证是没有意义的。不过为了处理流程的一致性,依然保留这个过程。

4 数据格式

WSC IE结构和M1~M8帧里的数据,均使用以下格式:

数据类型汇总表如下:





5 总结

WPS功能是为了让不懂行的小伙伴能简便快捷地接入到WiFi的热点,并且保证连接的安全性。使用PIN码方式比PBC方式更安全,但也相对麻烦一点。WPS流程首先是让AP和STA相互发现,确认对方支持WPS功能,并进入WPS的配置流程。配置流程中,先通过双方交换公共密钥,建立加密连接,然后通过交换用PIN生成的Hash码,进行校验,认证对方身份,最后通过传递configData,实现配置参数的下发。WPS流程结束时,STA与AP连接先断开,然后STA用新的配置参数重新与AP建立安全连接。

关于802.11协议认证、关联相关内容,可参考wifi认证过程wpa/wpa2

WiFi WPS的来龙去脉相关推荐

  1. Android代码实现打开打开wifi wps按钮和wps pin码输入

    wps按钮连接wifi,通过WifiManager.startWps打开wps,并传入wpsinfo,和wpsListener.wpsListener继承自WifiManager.WpsCallbac ...

  2. mac 惠普 HP136w 打印机 wifi wps 打印乱码 扑克牌图标

    mac.惠普打印机同一wifi下, 用wps打印文件,会打印出乱码,且一直在打印 解决方法来源于贴吧用户:@xiaopang0312 https://tieba.baidu.com/p/5284043 ...

  3. android wifi wps 流程,android中WiFi wps连接方式

    Android 个人热点 wps方式连接流程 android手机开启个人热点时,可以选择WPS连接方式 个人热点端 连接端 当个人热点端选择按钮时,连接端只需要点击WPS按钮即可连接:当个人热点端选择 ...

  4. WIFI WPS 种类

    WPS分为PBC(BUTTON)和PIN两种方式 A PBC: 按WPS按钮实现WPS安全连接. 在AP中,在WPS设置中,设置为启用. 按一下客户端(无线网卡)上的WPS按键,搜索WPS网络. 按一 ...

  5. wifi认证过程wpa/wpa2

    今天总结一下前段看协议,关于PSK(pre-shared key)方式下wpa/wpa2的认证过程. 1.RSNE 首先,在beacon或probe response帧中,带有RSNE字段,内容如下: ...

  6. 简单使用Kali WiFi破解实例

    1.需要一个支持监听模式的网卡 # 先查看一下usb网卡是否连接到虚拟机 # 控制台输入airmon-ng 回车查看网卡是否在监听模式 # 如果显示无线网卡wlan0说明不在监听模式 # 如果该命令没 ...

  7. 网络杂谈, Docker, MongoDB

    https://antkillerfarm.github.io/ 网络杂谈 集线器&交换机&路由器 1.集线器,又名HUB.一般只起增强信号的作用,并不对流经的数据进行处理.数据转发采 ...

  8. Zigbee音频, 6LowPAN, IEEE 802

    http://antkillerfarm.github.io/ Zigbee音频 前言 本文是对Zigbee传输音频数据功能的一个资源汇总分析贴. 网上解决方案分析 基于MCF5213及Zigbee技 ...

  9. AiCloud 2.0 AT开发文档【转】

    本文转载自:http://wiki.ai-thinker.com/aicloud/docs/atdevelop AT指令一览表 AiCloud AT指令   指令 描述 AT+CLDSTART 启动云 ...

最新文章

  1. arkit与现实世界距离比_如何使用ARKit和Pusher构建实时增强现实测量应用程序
  2. 《MINECRAFT我的世界 新手完全攻略(第3版)》一1.4 关于快照版
  3. 学生管理系统java mysql_学生信息管理系统 基于Java+mysql开发的学生管理系统 - 下载 - 搜珍网...
  4. Python.with.context-manager
  5. c语言中 字母对应的数值,C语言编程:求下式中每个字母所代表的数字
  6. Windows Phone
  7. 交换机 链路层无法udp通讯_一文读懂计算机底层网络原理,包括TCP、UDP、header,什么是包、帧、段等关键问题...
  8. [转]CMake 生成makefile 步骤
  9. 基于PHPCMS的SQL注入(Havij)
  10. mac下 eclipse支持magic mouse/Trackpad 操作
  11. 10015---Maven笔记
  12. MTK OTA更新方法
  13. Cesium中使用Sampler3D,3D纹理,实现体渲染
  14. 如何优雅地处理Async/Await的异常?
  15. vue根据pc端、移动端做路由适配
  16. bash通配符(wildcard)和特殊符号
  17. 数据结构--图的存储结构
  18. linux pe无法识别硬盘,diskgenius识别不到硬盘是怎么回事?原因以及解决方法
  19. CORR函数 看不明白
  20. 浅谈均值、方差、标准差、协方差的概念及意义

热门文章

  1. b站《双城之战》主题曲《孤勇者》视频评论爬取+简单数据分析+基本可视化(条形图,饼图,词云图)
  2. html 中几次方,平方米,立方米,上标,下标,删除线等的表示方法
  3. 量子保密通信应用与技术探讨
  4. [转] 《Java并发编程的艺术》笔记
  5. 非空判断方法:isNotEmpty和isNotBlank的区别
  6. 如何取消word自动编号
  7. 最全详解Android设备UDID还是唯一ID?
  8. 项目管理 :团队管理中如何激励员工
  9. 微信小程序页面跳转时URL参数丢失问题
  10. spring boot 解决Ajax 跨域问题