欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

802.11--WPS(Wi-Fi Protected Setup)协议简析

程序员文章站 2022-06-09 19:05:37
一、概述WPS全称为Wi-Fi Protected Setup,是WSC规范早期的名字,WSC全称为Wi-Fi Simple Configuration,该项技术用于简化SOHO环境中无线网络的配置和使用。举一个简单的例子,配置无线网络环境时,网管需要首先为AP设置SSID、安全属性(如身份认证方法、加密方法等)。然后他还得把SSID、密码告诉给该无线网络的使用者。可是这些安全设置信息对普通大众而言还是有些复杂。而有了WSC之后,用户只需输入PIN码(Personal Identification Num...

一、概述

WPS全称为Wi-Fi Protected Setup,是WSC规范早期的名字,WSC全称为Wi-Fi Simple Configuration,该项技术用于简化SOHO环境中无线网络的配置和使用。举一个简单的例子,配置无线网络环境时,网管需要首先为AP设置SSID、安全属性(如身份认证方法、加密方法等)。然后他还得把SSID、密码告诉给该无线网络的使用者。可是这些安全设置信息对普通大众而言还是有些复杂。而有了WSC之后,用户只需输入PIN码(Personal Identification Number,一串数字),或者摁一下专门的按钮(WSC中,该按钮被称为Push Button)甚至用户只要拿着支持NFC的手机到目标AP(它必须也支持NFC)旁刷一下,这些安全设置就能被自动配置好。有了这些信息,手机就能连接上目标无线网络了。显然,相比让用户记住SSID、密码等信息,WSC要简单多了。WFA推出WPA后不久,WPS规范便被推出。随着WPA2的出现,WFA又制订了WPS的升级版,即WSC。

二、术语介绍

WSC规范定义了三个核心组件,如下图所示:
802.11--WPS(Wi-Fi Protected Setup)协议简析
  1. Enrollee的角色类似于client端,它向Registrar发起注册请求;
  2. Registrar用于检查Enrollee的合法性,类似于server端,另外,Registrar还能对AP进行配置;
  3. AP也需要注册到Registar中,所以,从Registrar角度来看,AP也是Enrollee;
  4. AP和Registrar以及Enrollee三者交互,Enrollee从Registrar那获取AP的安全配置信息,然后Enrollee利用该信息加入AP提供的无线网络。
  注意,这三个组件只是逻辑上的概念。在具体实现时,AP和Registrar可以由同一个实体实现,也可分别由不同实体来实现。
  支持WSC的无线路由器兼具AP和Registrar的功能,这种AP在规范中被称为Standalone AP。Android智能手机扮演Enrollee的角色。
  如果AP和Registrar分别由不同实体来实现,这种Registrar也被称为External Registrar。
  三大组件之外,规范还定义了组件之间的交互接口。上图中的E、M、A代表三个核心组件之间交互的接口,这些接口定义了交互双方需要实现的一些功能。简要描述如下:
  1. STA中的Interface E包括的功能有
   1) STA首先要寻找周围支持WSC功能的Standalone AP。此步骤将通过发送携带WSC IE的Probe Request帧来实现;
   2) STA关联到Standalone AP后(注意,仅仅是关联成功。由于缺乏安全配置信息,STA无法和AP开展RSNA流程,即四次握手等工作),双方需要借助Registration Protocol协议(以后简称RP协议)来协商安全配置信息。所以,STA必须实现RP协议的Enrollee的功能;
  2. Standalone AP中Interface E包括的功能有:
   1) 回复携带WSC IE的Probe Response帧以表明自己支持WSC功能;
   2) 实现RP协议定义的Registrar的功能。另外,STA和AP可选择实现某种Out-of-Band交互手段,规范中提到的两种手段包括NFC和USB;
  3. 对于Interface A来说:
   1) STA必须实现802.1X supplicant功能,并支持EAP-WSC算法;
   2) Standalone AP需发送携带WSC IE的Beacon帧来表示自己支持WSC功能。同时,AP还必须支持802.1X authenticator功能,并实现EAP-WSC算法;
  4. 由于Standalone AP已经集成了三大组件中的AP和Registrar,所以Interface M的功能几乎简化为0。
  WSC的核心内容集中在WSC IE以及RP协议中。

三、Registration Protocol

当STA和Standalone AP采用In-Band交互方法时,RP协议的完整交互流程如图所示:
802.11--WPS(Wi-Fi Protected Setup)协议简析
  将RP协议分为两个部分,由“Enter passworkd of Enrollee”行隔开,其中:
  1. Discovery Phase为上半部分,在此阶段中,STA借助Beacon帧或Probe Request帧搜索周围的AP。对开启了WSC功能的AP来说,这些帧中都必须携带WSC IE。而没有携带WSC IE的帧则表明发送者不支持或者未开启WSC功能。Discovery Phase结束后,STA将确定一个目标AP;
  2. 如果是PIN方式,此时用户需要将STA显示的PIN码输入到目标AP的设置页面;
  3. STA将关联到目标AP。和非WSC流程不一样的是,STA和AP不会开展4次握手协议,而是先开展EAP-WSC流程;
  4. EAP-WSC流程从EAPOL-Start开始,结束于EAP-Fail帧,一共涉及14次EAPOL/EAP帧交换。在这14次帧交互过程中,STA和AP双方将协商安全配置信息(例如采用何种身份验证方法、何种加密方法,以及PSK等)。另外,这14次帧中,M1到M8属于EAP-WSC算法的内容,它们用于STA和AP双方确认身份以及传输安全配置信息;
  5. 最后EAP-WSC最终以EAP-Fail帧结束,但STA已经和AP借助M1到M8成功完成了安全信息协商。所以,STA已经获得了AP的安全配置情况。另外,由于STA收到的是EAP-Fail帧,所以它会断开和AP的连接(AP会发送Deauthentication帧给STA);
  6. STA将利用协商好的安全配置信息重新和AP进行关联,后续流程和非WSC的无线网络关联一样,即STA关联到AP后,将开展RSNA工作(RSNA工作属于WPA和WPA2规范所指定),如4次握手协议、Group Handshake流程。

四、WSC IE

WSC IE并不属于802.11规范所定义的IE,而是属于Vendor定义的IE。根据802.11规范,Vendor定义的IE有着如图所示的组成结构:
802.11--WPS(Wi-Fi Protected Setup)协议简析
  WSC IE对应的设置如下:
  1. Element ID取值为221。802.11规范中,该值意为“Vendor Specific”;
  2. Length为OUI及Data的长度;
  3. OUI取值为0x00-50-F2-04。其中00-50-F2代表Mircrosoft公司的OUI,04代表WPS;
  4. WSC IE中,Data域的组织结构为一个或多个Attribute(属性)。Attribute的格式为TLV,即Type(长度为2个字节)、Length(长度为2个字节,代表后面Value的长度),Value(最大长度为0xFFFF字节);
  属性字段涉及的就比较多了,下面介绍几个比较常见的:
  1. Version属性
   1) Type:0x104a;
   2) Length:1字节;
   3) Value:Version属性已经作废( Deprecated),但为了保持兼容性,规范要求WSC IE必须包含该属性,并且其Value字段需设为0x10。
802.11--WPS(Wi-Fi Protected Setup)协议简析
  2. Vendor Extension属性
   1) Type:0x1049;
   2) Length:;
   3) Vendor ID:该值由WFA注册, 可在IANA官方网站查询,值为0x00372a。
  Vendor Extension可包含多个子属性,常见的如下:
   1) Version2属性
   取代Version属性的是Version2属性, Version2属性并不能单独存在, 而是作为Vendor Extension的子属性被包含在WSC IE中。
    a) Sub Type:0x00;
    b) Length:1字节;
    c) Value:0x20
802.11--WPS(Wi-Fi Protected Setup)协议简析
   2) AuthorizedMACs属性
   该子属性列出了当前已经注册()的sta的mac地址,只有这些在mac地址列表中sta才可以展开EAP-WSC流程。已注册sta的mac由Registrar给AP,如果Registrar不支持该功能的话,则不使用该属性。
    a) Sub Type:0x01;
    b) Length:<=30字节;
    c) Value:
802.11--WPS(Wi-Fi Protected Setup)协议简析
   3) 其余子属性
802.11--WPS(Wi-Fi Protected Setup)协议简析
  3. Request Type属性
   1) Type:0x103a;
   2) Length:1字节。
   3) Value:Request Type属性必须包含于Probe/Association Request帧中,代表STA作为Enrollee想要发起的动作。该属性一般取值0x01(含义为Enrollee,open 802.1X),代表该设备是Enrollee,并且想要开展WSC后续流程。它还有一个取值为0x00(含义为Enrollee,Info only),代表STA只是想搜索周围支持WSC的AP,而暂时还不想加入某个网络。
802.11--WPS(Wi-Fi Protected Setup)协议简析
  4. Response Type属性
   1) Type:0x103b;
   2) Length:1字节。
   3) Value:Response Type属性代表发送者扮演的角色,包含于Probe/Association Response帧中。对于AP来说,其取值为0x03(含义为AP),对于Registrar来说,其取值为0x02,对于Enrollee来说,其取值可为0x00(Enrollee,Info only)和0x01(Enrollee,open 802.1X)。Standalone AP也属于AP,故图6-12右图的Response Type取值为0x03。
802.11--WPS(Wi-Fi Protected Setup)协议简析
  5. Select Registrar Configuration Methods属性
  用于表达Enrollee或Registrar支持的WSC配置方法。前文提到的PIN和PBC就属于WSC配置方法。考虑到支持Wi-Fi的设备类型很多,例如打印机、相机等,故WSC规范定义的WSC配置方法较多。
   1) Type:0x1053;
   2) Length:2字节;
   3) Value:共16位,每一位都代表Enrollee或Registrar支持的WSC配置方法。
  PS:Display还需细分为Physical Display或Virtual Display。二者区别是Physical Display表示PIN码能直接显示在设备自带的屏幕上,而Virtual Display只能通过其他方式来查看(由于绝大多数无线路由器都没有屏幕,所以用一般情况下,用户只能在浏览器中通过设备页面来查看)PIN码。Keypad表示可在设备中输入PIN码。另外,是否支持Push Button由Push Button位表达。同PIN码一样,它也分Physical Push Button和Virtual Push Button。由于AC9硬件上有专门的按钮,且在软件中实现了一个按钮用来触发Push Button,所以这里的设置为支持Physical Push Button和Virtual Push Button。
802.11--WPS(Wi-Fi Protected Setup)协议简析
  6. Device Password ID属性
  用于标示设备Password的类型,默认值是PIN(值为0x0000),代表Enrollee使用PIN码(静态或动态PIN码都可以)。
   1) Type:0x1012;
   2) Length:2字节。
   3) Value:可取值包括0x0001(User-Specified)、0x0002(Machine-Specified)、0x0003(Rekey)、0x0004(PushButton)等。
802.11--WPS(Wi-Fi Protected Setup)协议简析
802.11--WPS(Wi-Fi Protected Setup)协议简析
  7. RF Bands属性
  用于代表设备所支持的无线频率。
   1) Type:0x103c;
   2) Length:1字节。
   3) Value:可取值包括0x01(2.4G)、0x02(5G)、0x03(2.4G、5G)。
802.11--WPS(Wi-Fi Protected Setup)协议简析
  8. Primary Device Type属性
  代表设备的主类型。在Discovery Phase阶段,交互的一方可指定要搜索的设备类型(需设置Requested Device Type属性,该属性的结构和取值与Primary DeviceType一样)。这样,只有那些Primary Device Type和目标设备类型匹配的一方才会进行响应。
   1) Type:0x1054;
   2) Length:8字节。
   3) Value:该属性的格式如下所示:
802.11--WPS(Wi-Fi Protected Setup)协议简析

字段说明:
   a. Type(即Attribute ID)字段的值为0x1054,Length字段的值为8字节
   b. Category ID为WSC规范中定义的设备类型,Telephone设备取值为0x000a,具体参见文档;
   c. OUI默认为WFA的OUI编号,取值为0x00-50-f2-04;
   d. WSC还划分了Sub Category,如0x0005代表Smartphone-dual mode类设备,具体参见文档;
802.11--WPS(Wi-Fi Protected Setup)协议简析
  9. Selected Registrar属性
  该属性的作用是,当AP已选择合适的Registrar后,该属性值为0x01,否则为0x00。对于Standalone AP来说,如果其内部的Registrar组件启动,则设置该值为0x01。
   1) Type:0x1041;
   2) Length:1字节。
   3) Value:当AP已选择合适的Registrar后,该属性值为0x01,否则为0x00。
802.11--WPS(Wi-Fi Protected Setup)协议简析
  10. UUID属性
  全称是Universally Unique Identitifier,设备的唯一标识符,Enrollee和Registrar都有UUID,为了区分,WSC规范分别定义了UUID-E和UUID-R两个属性。
   1) Type:0x1047;
   2) Length:16字节。
   3) Value:
802.11--WPS(Wi-Fi Protected Setup)协议简析

Note:篇幅所限,并没有罗列所有的属性,详细的属性内容可以查阅WSC-V2.0.4.pdf。

五、EAP-WSC

由RP协议交互流程可知,Discovery Phase阶段之后,STA和AP将通过EAP包交换来完成安全信息协商。
  1. 在STA和AP双方开展EAP-WSC流程前,AP需要确定STA的Identity以及使用的身份验证算法。该过程涉及四次EAP包交换,EAP协议的格式如下图所示:
802.11--WPS(Wi-Fi Protected Setup)协议简析
   1) Code:EAP协议第一字节,目前仅有四种取值,分别为1(Request)、2(Response)、3(Success)、4(Failure);
   2) Identifier:消息编号(ID),用于配对Request和Response;
   3) Length:2字节,用于表示EAP消息包长度(包括EAP头和数据的长度);
   4) Data:EAP中具体的数据(Payload)。当Code为Request或Response的时候,Data字段还可细分为Type以及Type Data。Type就是上图中的EAP Method Type。
  这四次包交换的内容分别如下:
   1) sta发起EAP start;
802.11--WPS(Wi-Fi Protected Setup)协议简析
   2) AP发送EAP-Request/Identity以确定STA的ID;
802.11--WPS(Wi-Fi Protected Setup)协议简析
   3) 对于打算使用WSC认证方法的STA来说,它需要在回复的EAP-Response/Identity包中设置Identity为"WFA-SimpleConfig-Enrollee-1-0";
802.11--WPS(Wi-Fi Protected Setup)协议简析
   4) AP确定STA的Identity为"WFA-SimpleConfig-Enrollee-1-0"后,将发送EAPRequest/WSC_Start包以启动EAP-WSC认证流程。
802.11--WPS(Wi-Fi Protected Setup)协议简析
  2. WSC规范利用EAP的扩展功能新定义了一种EAP算法,即EAPWSC。EAP-WSC的包格式如图所示:
802.11--WPS(Wi-Fi Protected Setup)协议简析
  3. M1消息
  M1消息由STA发送给AP,EAP-WSC消息也是由一个一个的属性字段构成,如下所示:
802.11--WPS(Wi-Fi Protected Setup)协议简析
  M1消息中很多属性在上一章节中有讲述,这里简要讲述几个比较重要的属性:
   1) Message Type:代表Enrollee和Registrar发送的消息类型,其可取值从0x01(代表Beacon帧)到0x0F(代表WSC_DONE)。该属性一般只在EAP-WSC帧中用到。对于M1消息而言,其Message Type取值为0x04;
   2) MAC Address:代表STA的MAC地址;
   3) Enrollee Nonce:代表STA产生的一串随机数,它用于后续的密钥派生等工作;
   4) Public Key:STA和AP的密钥派生源头也是PMK。不过和PSK不同的是,在WSC PIN方法中并没有使用PSK(PIN码的作用不是PSK)。双方采用了Diffie-Hellman[6](D-H)密钥交换算法,该算法使得通信的双方可以用这个方法确定对称密钥(注意,D-H算法只能用于密钥的交换,而不能进行消息的加密和解密。通信双方确定要用的密钥后,要使用其他对称密钥操作加密算法以加密和解密消息。Public Key属性包含了Enrollee的D-H Key值);
   5) Authentication Type Flags和Encryption Type Flags:表示Enrollee支持的身份验证算法以及加密算法类型;
   6) Connection Type Flags:代表设备支持的802.11网络类型,值0x01代表ESS,值0x02代表IBSS;
  4. M2消息
  AP收到并处理M1后,将回复M2,M2消息如下所示:
802.11--WPS(Wi-Fi Protected Setup)协议简析
  AP的M2将携带以下信息:
   1) Registrar Nonce:Registrar生成的随机数;
   2) Public Key:D-H算法中,Registrar一方的D-H Key值;
   3) Authenticator:由HMAC-SHA-256及AuthKey算法得来一个256位的二进制串。注意,Authenticator属性只包含其中的前64位二进制内容;
  PS:AP发送M2之前,会根据Enrollee Nonce、Enrollee MAC以及Registrar Nonce并通过DH算法计算一个KDK(Key Derivation Key),KDK密钥用于其他三种Key派生,这三种Key分别用于加密RP协议中的一些属性的AuthKey(256位)、加密Nonce和ConfigData(即一些安全配置信息)的KeyWrapKey(128位)以及派生其他用途Key的EMSK(Extended Master Session Key)。
  5. M3消息
  STA处理完M2消息后,将回复M3消息,其内容如图所示:
802.11--WPS(Wi-Fi Protected Setup)协议简析
  sta的M3将携带以下信息:
   1) Registrar Nonce:来源于M2的Registrar Nonce属性;
   2) E Hash1和E Hash2:计算过程比较复杂,如下:
    a. 利用AuthKey和PIN码利用HMAC算法分别生成两个PSK。其中,PSK1由PIN码前半部分生成,PSK2由PIN码后半部分生成;
    b. 利用AuthKey对两个新随机数128 Nonce进行加密,以得到E-S1和E-S2;
    c. 利用HMAC算法及AuthenKey分别对(E-S1、PSK1、STA的D-H Key和AP的D-H Key)计算得到E Hash1。E Hash2则由E-S2、PSK2、STA的D-H Key和AP的D-H Key计算而来。
   3) Authenticator:STA利用AuthKey(STA收到M2的Registrar Nonce后也将计算一个AuthKey)计算出来的一串二进制位;
  6. M4消息
  AP收到并处理完M3后将回复M4,其内容如图所示:
802.11--WPS(Wi-Fi Protected Setup)协议简析
  AP的M4将携带以下信息:
   1) 计算R Hash1和R Hash2。其使用的PIN码为用户通过AP设置界面输入的PIN码。很显然,如果AP设置了错误PIN码的话,STA在比较R Hash 1/2和E Hash 1/2时就会发现二者不一致,从而可终止EAP-WSC流程;
   2) Encrypted Settings:AP利用KeyWrapKey加密R-S1得到的数据。
  7. M5消息
  M5消息和M4消息类似,Encrypted Settings为STA利用KeyWrapKey加密E-S1得来,如下图所示:
802.11--WPS(Wi-Fi Protected Setup)协议简析
  8. M6消息
  M6消息和M5消息类似,Encryped Settings为AP利用KeyWrapKey加密R-S2而来,如下图所示:
802.11--WPS(Wi-Fi Protected Setup)协议简析
  9. M7消息
  STA的M7将发送利用KeyWrapKey加密E-S2的信息给AP以进行验证,如下所示:
802.11--WPS(Wi-Fi Protected Setup)协议简析
  10. M8消息
  当AP确定M7消息正确无误后,它将发送M8消息,而M8将携带至关重要的安全配置信息,如下所示:
802.11--WPS(Wi-Fi Protected Setup)协议简析
  安全配置信息保存在Encrypted Settings中,它由KeyWrapKey加密。WSC规范规定,当Enrollee为STA时(对Registrar来说,AP也是Enrollee),Encrypted Settings将包含若干属性,其中最重要的就是Credential属性集合,该属性集的内容如下表所示:
802.11--WPS(Wi-Fi Protected Setup)协议简析
  11. WSC_DONE消息
  STA处理完M8消息后,将回复WSC_DONE消息给AP,表示自己已经成功处理M8消息。整个EAP-WSC就算完成了,接下来的就是断开重新连接的过程了:
   1) AP发送EAP-FAIL以及Deauthentication帧给STA;
   2) STA收到该帧后将取消和AP的关联;
   3) STA将重新扫描周围的无线网络。由于STA以及获取了AP的配置信息,所以它可以利用这些信息加入AP所在的无线网络。

本文地址:https://blog.csdn.net/zhuhuan_5/article/details/107593368

相关标签: 802.11