EAP-PEAP是一种EAP方法,用于在TLS隧道中封装EAP,保证内部EAP方法的安全。 EAP-PEAP是由Microsoft、Cisco和RSA Security共同开发的一种基于证书+用户名密码实现用户WLAN接入鉴权的认证方式。

EAP-PEAP技术原理是:PEAP(Protected EAP)实现通过使用隧道在PEAP客户端和认证服务器之间进行安全认证。EAP客户端和认证服务器之间的认证过程有两个阶段。第一阶段:建立PEAP客户端和认证服务器之间的安全通道,客户端采用证书认证服务端完成TLS握手。服务端可选采用证书认证客户端。第二阶段:提供PEAP客户端和认证服务器之间的EAP身份验证。整个EAP通信,包括EAP协商在内,都通过TLS通道进行。服务器对用户和客户端进行身份验证,具体方法由EAP类型决定,在PEAP内部选择使用(如:EAP-MS-CHAPv2)。

、问点只会在客户端和 RADIUS 服务器之间转发消息,由于不是 TLS 终结点,访问点无法对这些消息进行解密。目前被 WPA 和 WPA2 批准的有两个 PEAP 子类型:PEAPV0-MSCHAPV2 和 PEAPV1-GTC,使用广泛的是 PEAPV0-MSCHAPV2。

1.3 PEAP 用户接入流程图

1 PEAP 用户接入流程

E1 认证初始化

1) WLAN UE 向 WLAN AN 发送一个 EAPoL-Start 报文,开始 802.1x 接入的开始。

2) WLAN AN 向 WLAN UE 发送 EAP-Request/Identity 报文,要求 WLAN UE 将用户信息送上来。

3) WLAN UE 回应一个 EAP-Response/Identity 给 WLAN AN 的请求,其中包括用户的网络标识。对于 PEAP-mschchap v2 认证方式的用户 ID,是由用户在客户端手动输入或者配置的。此次用户名建议同用户的 portal 认证用户名密码。

4) WLAN AN 以 EAP Over RADIUS 的报文格式将 EAP-Response/Identity 发送给 Radius,并且带上相关的 RADIUS 的属性。

5) Radius 收到 WLAN AN 发来的 EAP-Response/Identity,根据配置确定使用 EAP-PEAP 认证,并向 WLAN AN 发送 RADIUS-Access-Challenge 报文,里面含有 Radius 发送给 WLAN UE 的 EAP-Request/Peap/Start 的报文,表示希望开始进行 EAP-PEAP 的认证。

6) WLAN AN 将 EAP-Request/PEAP/Start 发送给 WLAN UE。

E2 建立 TLS 通道

7) WLAN UE

以下是重构后的内容:

7. 发送Client Hello报文给认证服务器Radius,并带上相关的RADIUS属性。

8. Radius收到Client Hello报文后,会从Client的Hello报文的加密算法列表中选择自己支持的一组加密算法。

9. Server产生随机数Server证书(包含服务器的名称和公钥)。

10. 证书请求Server_Hello_Done属性形成一个Server Hello报文封装在EAP消息中,使用AccessChallenge报文发送给WLAN AN。

11. WLAN AN把Radius报文中的EAP-request消息发送给WLAN UE。

12. WLAN UE收到报文后,进行验证Server的证书是否合法(使用从CA证书颁发机构获取的根证书进行验证,主要验证证书时间是否合法,名称是否合法),即对网络进行认证,从而可以保证Server的合法。如果合法则提取Server证书中的公钥,同时产生一个随机密码串pre-master-secret,并使用服务器的公钥对其进行加密,最后将加密的信息ClientKeyExchange+客户端的证书(如果没有证书,可以把属性置为0)TLS finished属性封装成EAP-Rsponse/TLS ClientKeyExchange报文发送给WLAN AN。如果WLAN UE没有安装证书,则不会对Server证书的合法性进行认证,即不能对网络进行认证。

13. WLAN AN以EAP Over RADIUS的报文格式将EAP-Response/TLS ClientKeyExchange发送给认证服务器Radius,并且带上相关的RADIUS的属性。

14. Radius收到报文后,用自己的证书对应的私钥对ClientKeyExchange进行解密,从而获取到pre-master-secret。然后将pre-master-secret进行运算处理,加上WLAN UE和Server产生的随机数,生成加密密钥、加密初始化向量和hmac的密钥。这时双方已经安全地协商出一套加密方法了。Radius将协商出的加密方法+TLS Finished消息封装在EAP over Radius报文中返回给WLAN AN。

以下是重构后的内容:

10. 在Radius报文的AccessChallenge中,发送给WLAN AN。

11. WLAN AN将Radius报文中的EAP-Request消息发送给UE。

12. WLAN UE回复EAP Response/TLS OK消息。

13. WLAN AN将EAP Response/TLS OK消息封装在Radius报文中,告知Radius建立隧道成功。至此,WLAN UE与Radius之间的TLS隧道建立成功。

E3 认证过程

14. WLAN AN把Radius报文中的EAP域提取,封装成EAP-request报文发送给WLAN UE。

15. WLAN UE收到报文后,用服务器相同的方法生成加密密钥、初始化向量和hmac的密钥,并用相应的密钥及其方法对报文进行解密和校验,然后产生认证回应报文,用密钥进行加密和校验,最后封装成EAPresponse报文发送给AP。AP以EAP Over RADIUS的报文格式将EAP-Response发送给认证服务器Radius Server,并且带上相关的RADIUS的属性,这样反复进行交互,直到认证完成。在认证过程中,Radius Server会下发认证后用于生成空口数据加密密钥(包括单播、组播密钥)的PMK给WLAN UE。

16. 服务器认证客户端成功,会发送AccessAccept报文给WLAN AN,报文中包含了认证服务器所提供的MPPE属性。

E4 地址分配

17. WLAN UE和WLAN AN间的空中数据报文进行加密传送,与WLAN AN进行DHCP流程交互,直至WLAN UE获取IP地址。

E5 计费开始

18. WLAN UE通过RADIUS-Accounting-Request(Start)报文通知Radius开始进行计费,含有相关的计费信息。

19. Radius向WLAN UE回应RADIUS-Accouting-Response(Start)报文,表示已经开始计费。

EAP是一种EAP认证方法,网络侧通过用户名/密码对终端进行认证,终端侧通过服务器证书对网络侧进行认证。用户首次使用PEAP认证时,需输入用户名与密码,后续接入认证无需用户任何手工操作,由终端自动完成。

在STA和radius server上抓包分析中,您可以在STA上打开wireshark,在capture option选项中选择对应的无线网卡,并把capture packets in promiscuous mode前面的勾去掉,过滤eap|eapol|bootp的数据包。PEAP认证成功时,STA的抓包如下(该抓包是抓的STA-AP之间的EAPoL包):和“PEAP用户接入流程图”中的步骤相对应,步骤与包的对应关系如下图所示。

在radius server上打开wireshark,在capture option选项中选择对应该的无线网卡,并把capture packets in promiscuous mode前面的勾去掉,过滤radius的数据包。PEAP认证成功时,radius server上的抓包如下,(该抓包是抓的APRadius server之间的EAP over Radius包):和“PEAP用户接入流程图”中的步骤相对应,步骤与包的对应关系如下图所示。

6、WLAN用户异常下线流程

1. WLAN AN检测固定时间内流量小于阈值或者通过Keep Alive机制检测发现用户已经不在线。

2. WLAN用户接入认证点向Radius发送计费停止请求的报文。

3. Radius向WLAN用户接入认证点回计费停止请求报文的回应,回应时间为1.5MS。

17、MS-CHAP V2认证流程图

1. Radius在TLS通道内发起EAP-Request/Identity认证请求。

2. AP把Radius报文中的EAP域提取,封装成EAP-request报文发送给Client。

3. Client发送一个EAP-Response报文给Ap,内容为Client的Identity(通常为用户名)。

4. Ap把报文封装成Radius报文,送给Radius。

5. Radius收到后,通过Radius报文,返回给AP一个16字节的随机数。

6. AP把Radius报文中的EAP域提取,封装成EAP-request/EAP-MS CHAP V2 Challenge报文发送给Client(CODE=1:Challenge)。

7. Client收到后:

a) Client产生一个16字节的随机数,称为“端认证质询”。

b) client将Radius server中收到的16字节质询,及其产生的16字节端认证质询,以及client的用户名进行SHA1算法的HASH,取结果的开始8字节。

c) client将b产生的8字节质询加密用windows nt hash函数生成的本地口令HASH值(16字节),产生24字节的响应(MD4算法)。

d) client将24字节的响应,结果封装在EAP-Response/EAP MS CHAP V2 Response报文中发送给AP(CODE=2:Response)。

8. Ap把报文封装成Radius报文,送给Radius。

9. Radius server收到后:

a) 使用跟Client相同的方法进行用户口令的哈希值加密响应值,如果结果与质询值相同,则客户端认证通过。

b) Radiu

EAP-TLS认证是一种基于RADIUS的认证方式,它是在RADIUS的基础上实现了EAP协议的一种扩展。EAP-TLS认证的具体流程如下:

1. 客户端向RADIUS服务器发送EAP-Request报文,请求进行EAP-TLS认证。

2. RADIS服务器回复EAP-Response报文,其中包含了用于生成PMK的信息。

3. 客户端使用RADIUS服务器提供的用户名和密码等信息,向RADIUS服务器发送EAP-Identity报文,请求获取用户的预共享密钥(PSK)。

4. RADIS服务器回复EAP-Success报文,其中包含了用户预共享密钥(PSK)。

5. 客户端使用用户预共享密钥(PSK)和RADIUS服务器提供的其他信息,向RADIUS服务器发送EAP-Start报文,请求开始加密通信。

6. RADIS服务器回复EAP-Success报文,表示加密通信已经开始。

Socket Layer(安全套接层,简称SSL)是一种用于在计算机网络上进行安全通信的协议。TLS是一种基于SSL的加密协议,它在SSL的基础上增加了更多的安全性和可靠性。TLS通过证书交换来进行相互认证,用户必须将数字证书送交认证服务器以进行验证,但是认证服务器也必须提供本身的证书。通过可信赖的证书发行机构验证服务器证书的真伪,客户端就可以确定所连接的网络经过了证书发行机构授权。

EAP-TLS认证流程包括以下几个步骤:

1. 申请者首先通过客户端软件向认证方发送一个EAPoL-Start报文,开始802.1x接入的开始。

2. 认证方向申请者发送EAP-Request/Identity请求帧,要求提供身份标识。

3. 申请者接收到认证方的请求后,向其发送EAP-Response/Identity响应帧,提供身份标识。

4. 认证方将EAP-Response/Identity响应帧封装成RADIUS Access-Request帧发给认证服务器。

5. 认证服务器通过用户身份标识检索认证数据库,获知采用TLS认证机制。通过向申请者发送封装EAP-Request/EAP-TLS/TLS-Start的Access-Challenge消息,启动TLS认证过程,等待进行TLS认证。

6. 认证方向申请者发送EAP-Request/EAP-TLS/TLS-Start。

7. 申请者收到EAP-Request/EAP-TLS/TL

5、在S-Start消息发送后,认证方会向服务器发送EAP-Response/EAP-TLS/Client-Hello消息。这个消息中包含了认证方可以实现的算法列表、Client Random Value以及其他一些必要的信息。

26、接下来,认证方将EAP-Response/EAP-TLS/Client-Hello响应帧封装成RADIUS Access-Request帧,然后将其发送给认证服务器。

27、认证服务器在接收到EAP-Response/EAP-TLS/Client-Hello消息后,会确认TLS认证已经建立。然后,通过封装包含多个TLS记录的EAP-Response/EAP-TLS消息的Access-Challenge消息,将其发送给认证方。

28、最后,认证方向申请者发送EAP-Request/EAP-TLS/Server-Hello、Server-Certificate、Server Key-Exchange和Client Certificate-Request。

29、在这个过程中,Server Hello消息确定了这次通信所需要的算法和Server Random Value。

30、接着,申请者会对服务器的数字证书进行校验。

以上就是整个过程的重构内容,并保持了原有的段落结构。

7、服务器证书。如果合法,认证服务器将向客户端发送以下消息:Client-Cert(申请者的数字证书)、Client Key-Exchange(使用认证服务器的公钥加密的定长随机串,也称为预主密钥)、Change Cipher-spec(表示客户端支持的加密类型)以及Finished。

12) 在收到上述消息后,认证方将EAP-Response/EAP-TLS/Client-Cert、Client Key-Exchange、Change Cipher-spec和Finished响应帧封装成RADIUS Access-Request帧,并发送给认证服务器。

13) 认证服务器会校验申请者的证书Client-Certificate。如果证书合法,认证服务器将回复申请者Change Cipher-spec和Finished消息。Change Cipher-spec中包含了认证服务器指定使用的加密类型。

14) 最后,认证方向申请者发送EAP-Request/EAP-TLS/Change Cipher-spec和Finish消息,结束EAP-TLS握手过程。