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