hostapd wpa_supplicant madwifi详细分析(十)——wps原理及实现 二

前面对WPS交互过程有了大概的了解,现在了解一下WPS交互时帧的格式以及每个帧所携带的信息。
WPS使用802.1x和EAP传输in-band注册协议的交互信息,这些信息里面都会携带大端排序的attributes字段。这个协议都会和一个自定义的EAP method相对应。WPS不需要AP支持RADIUS,也不要求网络内包含一个认证服务器,事实上,很多具有WPS功能的AP只支持802.1x使用WPS将它配置成WPA2-Personal证书加密。同时使用自定义EAP method的WPS认证方式并不能保证Enrollee可以直接访问WLAN,EAP method 主要是给Enrollee配置一个证书,用于后面接入WLAN,比如一个AP只支持可分享PSK的WPA2-Personal加密,那么Enrollee将会运行802.1x交互去获取这个PSK,然后断开连接,最后使用这个PSK以WPA2-personal方式接入这个WLAN。当然,如果AP支持802.1x认证,Enrollee首先会尝试运行WPS EAP method去获取一个 shared secret Credential,然后用那个secret结合另外一种EAP method去接入这个WLAN。
WPS EAP method也叫作EAP-WSC,这种算法可用于Registrar和Enrollee的发现,也可以用于Credential的建立。当一个Enrollee第一次接入一个新的WLAN时,它将会发送discovery信息并且执行EAP-WSC method。Enrollee会在Discovery message和M1中提供它自己的信息给WLAN,同时M2和M2D也会给Enrollee提供可用的registrar信息。当Enrollee首次发现并尝试和WLAN建立连接的时候,WLAN中的registrar可能还不知道Enrollee设备的password,这时registrar就会回复不带Enrollee password的M2D给Enrollee。虽然M2D message是没有认证的,但是它可以引导用户通过这个登记过程,也可以帮助信息较少的Enrollee选择一个更具体的registrar,比如选择和vendor拓展功能。
Enrollee在扫描网络中的M2D消息的时候可能会发现没有一个AP有获取到它的device password,那么这时Enrollee需要提示用户去执行一个可靠的自引操作,比如通过out-of-band方式或手动输入设备password(PIN)给Registrar。如果用户将Enrollee的device password输入给了registrar,那么Enrollee可以再次和AP尝试连接;如果Enrollee没有提示用户输入password的接口,那么就可能需要registrar来完成这个提示了。Enrollee和registrar都会提供足够的信息给对方,让他们相互判断是否相互兼容,以保证能够顺利的通过认证。如果用户决定使用out-of-band的方式去交互,那么registrar就会默认的认为这种方式是安全的,然后在M2中将自己的网络配置信息发送给Enrollee。
一、EAP消息帧
AP在WLAN中也是扮演一个EAP认证者的角色,registrar是认证服务器,所以AP会产生EAP Request message,Enrollee和registrar会生成EAP Response。如果registrar独立于AP,那么它会使用UPnP(而不是RADIUS)和AP交互Registration Protocol messages。一个registrar在802.1x也可能扮演认证者的角色,而且这种模式在legacy APs网络中作用很大。
下面将简单的介绍一下EAP-WSC,下面是EAP请求帧和回复帧的格式:
这里写图片描述
code filed: 1–EAP request messages 2–EAP response
Identifier field: 用来关联请求包和回复包
length:EAP包的总长度
Type: 指定EAP method的类型,我们知道EAP method有很多种类型,具体在交互中使用哪种类型,就靠它了,在WPS配置中将它设成254(expanded type)
Vendor-Id:WFA SMI code 0x00372A
Vendor-Type: 0x0000 0001 (SimpleConfig)
Op-Code:这个字段很重要
 0x01 : WSC_Start
 0x02 : WSC_ACK
 0x03 : WSC_NACK
 0x04 : WSC_MSG
 0x05 : WSC_Done
 0x06 : WSC_FRAG_ACK
Flags field:
 0x01 : more fragments (MF)
 0x02 : Length field (LF)
 0x04 – 0x80 : reserved
Length field:在WSC消息中,总的WSC TLV attributes长度
Message Data field:所有的WSC TLV attributes,WSC message可能会分段也可能放在不同的EAP包中
1.分片和重组
如果MF(multi fragment)置1,那么原本会被分片发送,如果没有多余的包需要发送,这个MF位不会被置1. 当收到所有带MF标志的包以后,接收端就会回复一个WSC_FRAG_ACK message,接收端会将每一个分片的Message Date组合成最原始的包。
如果LF位置1,那么头部就会包含Message Length field以表明要发送的WSC message data字节大小,如果没有置1,Message Length field会被忽略。如果消息有分片,那么第一个包LF必须置1,后面的包不能设。

  1. EAP Identity
    外部registrar必须使用EAP Identity “WFA-SimpleConfig-Registrar-1-0, Enrollee必须使用EAP Identity“WFA-SimpleConfig-Enrollee-1-0”。
    二、EAP消息种类
    在EAP-WSC中一共有6种EAP消息,下面来简单介绍。
    WSC_Start:
    当AP收到一个包含NAI(network access Id)为“WFA-SimpleConfig-Enrollee-1-0”的EAP Response/Identity报文的时候,这个包的Message Data field是空的
    WSC_ACK:
    如果Enrollee或registrar成功接收并处理了一个包但是没有消息回复的时候,就会发送一个WSC_ACK包回去,比如Enrollee收到一个M2D包,它就会回复一个WSC_ACK包
    WSC_NACK:
    当认证或处理出错的时候会发这个包
    WSC_MSG:
    supplicant和authenticator都会发送这个包,它用来负载MessageData,authenticator不会查询这个消息包里面的信息来决定状态机的状态,他们只是简单的传送给对方
    WSC_Done:
    当Enrollee成功接收并处理了WSC M8报文以后,它会发送WSC_Done报文以表明自己正确的获取到了WLAN的Credential
    WSC_FRAG_ACK:
    当supplicant或authenticator成功接收并处理了一个EAP消息分片并准备接收下一个分片的时候会发送这个包
    三、Enrollee注册过程中,AP端的EAP状态机变化过程
    下图是Enrollee接入AP时,AP的状态机变化过程,虚线表示AP发送的包,实线表示Enrollee发送的包,逗号分隔的表示其中一个,锁步机制在这个表中表示默认开启,只有执行了上一步才会执行下一步,比如发送了一个M5出去,那么只有收到M6以后,它才可能会发一个NACK消息。
    这里写图片描述
    接下来简单分析一下这个过程:
    (1)当Enrollee决定运行EAP-WSC连接到网络的时候,它首先会和AP建立关联并且发送EAPol-Start消息给AP
    (2)AP收到EAPol-Start消息以后,它会回复EAP-Request/Identity
    (3)然后Enrollee会发送一个带有“WFA-SimpleConfig-Enrollee-1-0”的EAP-Response/Identity消息回去(A->B)
    (4)AP开始运行EAP-WSC过程(B->C)
    (5)然后开始8路握手过程,如果Enrollee正确的获取到了M8,它会发送一个EAP-Response/Done message给AP,AP会回复一个EAP-Failure message。Enrollee首先要假定它从M8中获取到的credentials是有用的再发送WSC_Done message。Enrollee收到EAP-Failure message后会和AP disassociates然后用在M8 ConfigData中获取到的Credential进行重连。
    (6)如果Enrollee接收到M2D消息,它应该回复一个ACK message,这样AP才可以继续将其他registrar的discovery messages继续转发下来。
    (7)如果Enrollee收到一个EAP-Failure,那么Enrollee接下来只能做接下来两件事中的一种:
    (a)和AP断开连接,一段时间以后重新发送EAPoL-Start message再进行一次EAP_WSC 过程
    (b)和AP保持连接同时重新发送一个EAPoL-Start message再次进行EAP-WSC
    (8)如果Enrollee发送了M3,那么registrar和Enrollee都要进入锁步状态,直到失败或者成功(收到Done response message),如果Enrollee在解析过程中有任何错误发生,它就会发NAC
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值