前言
书接上回,WPA包含了802.1X的身份认证和加密,主要分为两种:WPA-Personal (WPA PSK) 和WPA-Enterprise,本文重点介绍WPA-Enterprise,它主要用于大型公司和大型企业。 远程身份验证拨入用户服务(RADIUS)身份验证服务器需要提前部署好,Radius服务器与AP保持通信,用于自动密钥生成和身份验证,并且使用可扩展身份验证协议(EAP)对客户端进行身份验证。
EAP全称是802.1x/EAP,是一种授权架构,允许或阻止流量通过端口访问网络资源,主要由三部分组成:
1.请求方:也就是需要接入网络的设备
2.认证方:决定请求方设备是否可以接入到这个网络,属于一个决断者角色
3.认证服务器:对请求方进行身份认证,并将认证结果告知认证方,最终由认证方决定是否允许其接入
常见EAP认证类型包括:EAP-MD5、EAP-TLS、EAP-TTLS、EAP-LEAP、EAP-PEAP等等,这里不对每一种验证类型做详述,如有兴趣可留言,单独开一篇讲述,本文只用EAP-PEAP验证类型来做讲述,重点关注如何打通整体接入流程。
EAP-PEAP(受保护的EAP协议)提供了一种安全传输验证数据的方法,包括传统的密码协议,通过 802.11 WiFi 网络。PEAP 在PEAP 客户端和验证服务器之间建立一个TLS加密隧道,在该TLS隧道内验证请求方的身份。
认证过程
主要分为三个阶段:
1.认证初始化:radius服务器获取请求方的身份信息,并回应认证开始
2.建立TLS隧道:为了保证认证数据的安全性(跳过这个流程的讲解)
3.认证过程:由于在安全的TLS隧道内传输,只有认证方和认证服务器才能知道使用的是什么挑战方式
认证流程
1.请求方和认证方完成关联;
2.请求方向认证方发送EAPOL-Start报文,通知认证方开始802.1x的接入认证;
3.认证方向请求方发送EAP-request/identity报文,要求请求方将用户信息上报;
4.请求方回复EAP-response/identity报文,并携带用户名;
5.认证方使用Radius协议,将EAP-response/identity及相关Radius属性封装到Radius-access-request,发送给认证服务器;
6.认证服务器收到EAP-response/identity,根据配置确定使用EAP-PEAP认证,向认证方回复Radius-access-challenge报文,里面包含了EAP-request/PEAP/START报文,开始进行EAP-PEAP认证;
7.认证方将EAP-request/PEAP发送给请求方;
8.请求方收到EAP-request/peap/start报文,会执行TLS隧道的建立流程,用服务器相同的方法生成加密密钥。加密初始化向量和hmac的密钥,并用相应的密钥及其方法对报文进行解密和校验,然后产生认证回应报文,用密钥进行加密和校验,最后会回复一个EAP-request/response/PEAP发送给认证方;
9.认证方会转发给认证服务器,并带上相关的Radius属性,反复交互直到认证完成;
10.认证服务器认证请求方成功后,会发送一个RADIUS-access-accept给认证者,并包含认证服务器提供的MPPE属性;
11.认证方收到RADIUS-access-accept报文,会提取MPPE属性中的密钥作为WPA加密用的PMK,并且会发送EAP-SUCCESS报文给请求方;
12.此时双方的PMK都已经创建成功;
13.最后完成空口的4次握手,详见上一篇针对4次握手的描述