1、EAP-PEAP&EAP-TLS认证具体流程分析 EAP-PEAP认证具体流程分析(结合radius认证协议及抓包) 1.1 EAP-PEAP背景 EAP: (Extensible Authentication Protocol)可扩展认证协议。 EAP属于一种框架协议,最初规范于RFC2284,后来经RFC3748更新。EAP就是一种简单得封装方式,可以运行于任何得链路层,不过它在PPP链路上并未广泛使用。 EAP 得基本架构如图所示: EAP 认证方式(EAP Method)。 EAP 会把证明使用者身份得过程,授权给一个称为EAP method 得附属协议,EAP
2、 method 乃就是一组验证使用者身份得规则。 使用EAP method 得优点就是,EAP从此可以不用去管验证使用者得细节。当新得需求浮现时就可以设计出新得认证方式,就算要用于无线局域网也不成问题。 常用得EAP认证方法如下图所示: PEAP,受保护得EAP(Protected EAP)。 PEAP就是由Microsoft、Cisco与RSA Security共同开发,在EAP框架中基于证书+用 户名密码实现用户WLAN接入鉴权。 PEAP就是EAP认证方法得一种实现方式,网络侧通过用户名/密码对终端进行认证,终端侧通过服务器证书对网络侧进行认证。用户首次使用P
3、EAP认证时,需输入用户名与密码,后续接入认证无需用户任何手工操作,由终端自动完成。 1.2 EAP-PEAP技术原理 PEAP(Protected EAP)实现通过使用隧道在PEAP客户端与认证服务器之间进行安全认证。 EAP 客户端与认证服务器之间得认证过程有两个阶段。 第一阶段:建立 PEAP 客户端与认证服务器之间得安全通道,客户端采用证书认证服务端完成TLS握手。服务端可选采用证书认证客户端。 第二阶段:提供 EAP 客户端与认证服务器之间得 EAP 身份验证。整个 EAP 通信,包括 EAP 协商在内,都通过 TLS 通道进行。服务器对用户与客户端进行身份验证,具体方法
4、由 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-Re
5、quest/Identity报文,要求WLAN UE将用户信息送上来。 3) WLAN UE回应一个EAP-Response/Identity给WLAN AN得请求,其中包括用户得网络标识。用户ID,对于PEAP-mschchap v2认证方式得用户ID就是由用户在客户端手动输入或者配置得。此次用户名建议同用户得portal认证用户名密码。 4) WLAN AN以EAP Over RADIUS得报文格式将EAP-Response/Identity发送给Radius,并且带上相关得RADIUS得属性。 5) Radius收到WLAN AN发来得EAP-Response/Identity,
6、根据配置确定使用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收到EAP-Request/Peap/Start报文后,产生一个随机数、客户端支持得加密算法列表、TLS协议版本、会话ID、以及压缩方法(目前均为NULL),封装在EAP-Response/TLS/Client
7、Hello报文中发送给WLAN AN。 8) WLAN AN 以EAP Over RADIUS得报文格式将EAP-Response/ TLS /Client Hello发送给认证服务器Radius,并且带上相关得RADIUS得属性。 9) Radius收到Client Hello报文后,会从Client 得Hello报文得加密算法列表中选择自己支持得一组加密算法+Server产生得随机数+Server 证书(包含服务器得名称与公钥)+证书请求+Server_Hello_Done属性形成一个Server Hello报文封装在EAP消息中,使用Access-Challenge报文发送给WLAN
8、 AN。 10) WLAN AN把Radius报文中得EAP-request消息发送给WLAN UE、 11) WLAN UE收到报文后,进行验证Server得证书就是否合法(使用从CA证书颁发机构获取得根证书进行验证,主要验证证书时间就是否合法,名称就是否合法),即对网络进行认证,从而可以保证Server得合法。如果合法则提取Server证书中得公钥,同时产生一个随机密码串pre-master-secret,并使用服务器得公钥对其进行加密,最后将加密得信息ClientKeyExchange+客户端得证书(如果没有证书,可以把属性置为0)+TLS finished属性封装成EAP-Rspo
9、nse/TLS ClientKeyExchange报文发送给WLAN AN、如果WLAN UE没有安装证书,则不会对Server证书得合法性进行认证,即不能对网络进行认证。 12) WLAN AN以EAP Over RADIUS得报文格式将EAP-Response/TLS ClientKeyExchange发送给认证服务器Radius,并且带上相关得RADIUS得属性 13) Radius收到报文后,用自己得证书对应得私钥对ClientKeyExchange进行解密,从而获取到pre-master-secret,然后将pre-master-secret进行运算处理,加上WLAN UE与Se
10、rver产生得随机数,生成加密密钥、加密初始化向量与hmac得密钥,这时双方已经安全得协商出一套加密办法了。Radius将协商出得加密方法+TLS Finished消息封装在EAP over Radius报文Access-Challenge中,发送给WLAN AN。 14) WLAN AN吧Radius报文中得EAP-Request消息发送给UE。 15) WLAN UE回复EAP Response/TLS OK消息。 16) WLAN AN将EAP Response/TLS OK消息封装在Radius报文中,告知Radius建立隧道成功。至此WLAN UE与Radius之间得TLS隧
11、道建立成功。 E3 认证过程 17) WLAN AN把Radius报文中得EAP域提取,封装成EAP-request报文发送给WLAN UE。 18) WLAN UE收到报文后,用服务器相同得方法生成加密密钥,加密初始化向量与hmac得密钥,并用相应得密钥及其方法对报文进行解密与校验,然后产生认证回应报文,用密钥进行加密与校验,最后封装成EAP-response报文发送给AP,AP以EAP Over RADIUS得报文格式将EAP-Response发送给认证服务器Radius Server,并且带上相关得RADIUS得属性,这样反复进行交互,直到认证完成。在认证过程中,Radius S
12、erver会下发认证后用于生成空口数据加密密钥(包括单播、组播密钥)得PMK给WLAN UE。 19) 服务器认证客户端成功,会发送Access-Accept报文给WLAN AN,报文中包含了认证服务器所提供得MPPE属性。 20) WLAN AN收到RADIUS-Access-Accept报文,会提取MPPE属性中得密钥做为WPA加密用得PMK,并且会发送EAP-success报文给WLAN UE。 E4 地址分配 21) WLAN UE与WLAN AN间得空中数据报文进行加密传送,与WLAN AN进行DHCP流程交互,直至WLAN UE获取IP地址 E5 计费开始 22) W
13、LAN UE通过RADIUS-Accounting-Request(Start)报文通知Radius开始进行计费,含有相关得计费信息。 23) Radius向WLAN UE回应RADIUS-Accouting-Response(Start)报文,表示已开始计费。 1.3.1 STA & radius server上抓包分析 (一) 在STA上打开wireshark,在capture option选项中选择对应得无线网卡,并把capture packets in promiscuous mode前面得勾去掉,过滤eap||eapol||bootp得数据包。 PEAP认证成功时,STA得抓
14、包如下(该抓包就是抓得STA---AP之间得EAPoL包): 与“PEAP用户接入流程图”中得步骤相对应,步骤与包得对应关系如下图所示: 1 2 3 6 7 10 11 14 15 21 (二) 在radius server上打开wireshark,在capture option选项中选择对应得无线网卡,并把capture packets in promiscuous mode前面得勾去掉,过滤radius得数据包。 PEAP认证成功时,radius server上得抓包如下,(该抓包就是抓得AP—Radius server之间得EAP over Radi
15、us包): 与“PEAP用户接入流程图”中得步骤相对应,步骤与包得对应关系如下图所示: 4 5 8 9 12 13 16 20 1.4 PEAP用户下线流程 用户下线流程包括用户主动下线、网络下线与异常下线三种情况。图2给出了用户主动下线流程,图3给出了网络下线流程,图4给出了用户异常下线流程。 1、 用户主动下线 图2 用户主动下线流程 1)WLAN UE主动终止会话,发起EAPoL-logoff请求退出网络。 2)WLAN AN向AAA Server发送计费停止请求得报文。 3)AAA Server向WLAN AN回复计费停止请求报文得响应。
16、 2、网络发起用户下线 图3 网络发起下线流程 1)出于管理目得,网络发起下线流程,可以由AAA Server触发Disconnect-Request给WLAN AN。 2)WLAN AN终止用户会话,释放用户会话资源。 3)WLAN AN向AAA Server回复Disconnect-ACK消息。 4)WLAN AN向AAA Server发送计费停止请求得报文。 5)AAA Server向WLAN AN回复计费停止请求报文得响应。 3、网络发起用户下线 图4 用户异常下线流程 1) WLAN AN检测固定时间内流量小于阈值或者通过Keep Alive机制检测发现用户已经
17、不在线。 2) WLAN用户接入认证点向Radius发送计费停止请求得报文 3) Radius向WLAN用户接入认证点回计费停止请求报文得回应 1.5 MS-CHAP V2认证流程 图4 MS-Chapv2用户认证流程 1) Radius在TLS通道内发起EAP-reuqest/Identity认证请求、 2) AP把Radius报文中得EAP域提取,封装成EAP-request报文发送给Client、 3) Client发送一个 给Ap一个EAP-Response报文,内容为Client得Identity(通常为用户名),、 4) Ap把报文封装成Radius报文,送给R
18、adius、 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产生得
19、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) Radius server 使用16字节得端认证质询与client 得
20、哈希过得口令,一起创建一个20字节得认证者响应,封住成Radius报文发送给Ap、 10) AP把Radius报文中得EAP域提取,封装成EAP-request/EAP-CHAP V2 Success报文发送给Client、(CODE=3:Success) 11) Client收到后,使用与服务器相同得方法计算一个认证者响应,如果与收到得响应一致,则server 通过认证,发送一个认证成功报文,封装成Eap—response/EAP Ms chap v2 ACK报文给Ap、 12) Ap把报文封装成Radius报文,送给Radius、 13) 服务器与客户端均认证成功,Radius s
21、erver会发送Access-Accept报文给AP,报文中包含了认证服务器所提供得MPPE属性(MPPE密钥算法请参阅引用[18])。 14) AP收到RADIUS-Access-Accept报文,会提取MPPE属性中得密钥做为WPA加密用得PMK,并且会发送EAP-success报文给客户端、 EAP-TLS认证具体流程分析(结合radius认证协议及抓包) 1.1 EAP-TLS背景 EAP: (Extensible Authentication Protocol)可扩展认证协议。 EAP属于一种框架协议,最初规范于RFC2284,后来经RFC3748更新。EAP就是一种简单得
22、封装方式,可以运行于任何得链路层,不过它在PPP链路上并未广泛使用。 EAP 得基本架构如图所示: EAP 认证方式(EAP Method)。 EAP 会把证明使用者身份得过程,授权给一个称为EAP method 得附属协议,EAP method 乃就是一组验证使用者身份得规则。 使用EAP method 得优点就是,EAP从此可以不用去管验证使用者得细节。当新得需求浮现时就可以设计出新得认证方式,就算要用于无线局域网也不成问题。 常用得EAP认证方法如下图所示: TLS: 传输层安全(Transport Layer Security)。 TLS得前身
23、就是确保安全网络事物得协议Secure Socket Layer(安全套接层,简称SSL)。TLS得目得就就是在不可信赖得网络环境中建立一条可信赖得通信管道(channel)。 TLS通过证书交换来进行相互认证。用户必须将数字证书送交认证服务器以进行验证,但就是认证服务器也必须提供本身得证书。通过可信赖得证书发行机构验证服务器证书得真伪,客户端就可以确定所连接得网络经过了证书发行机构授权。 证书提供了牢靠得用户对网络以及网络对用户得双向认证。相互认证可以防范所谓得“欺骗”(rouge)接入点。让客户端能够判断接入点就是否由正确得部门而非为了窃取密码得有心人士所设立。TLS还会建立一组
24、主密钥(master secret),用来派生出链路层安全防护协议所需要得密钥。 EAP-TLS虽然安全,不过并未被广泛使用。无线网络中任何潜在得用户都必须配备本身得数字证书。产生与分配证书以及遵循验证步骤都就是莫大得挑战。已经采用公钥基础结构(public key infrastructure,简称PKI)得几个如果要使用EAP-TLS得话相当容易;而有些机构并不想构建PKI,因而另外选用其她方式。 1.2 EAP-TLS认证流程 EAP-TLS认证流程图 1) 申请者首先通过客户端软件向认证方发送一个EAPoL-Start报文,开始802、1x接入得开始。 2) 认证方向申请
25、者发送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/
26、EAP-TLS/TLS-Start。 7) 申请者收到EAP-Request/EAP-TLS/TLS-Start消息后,通过认证方发送EAP-Response/EAP-TLS/Client-Hello消息给服务器。这个消息里面包含了自己可实现得算法列表、Client Random Value与其它一些需要得信息。 8) 认证方将EAP-Response/EAP-TLS/Client-Hello响应帧封装成RADIUS Access-Request帧发给认证服务器。 9) 认证服务器接收到EAP-Response/EAP-TLS/Client-Hello后,确定TLS认证已建立,并通过封装
27、包含多个TLS记录得EAP-Response/EAP-TLS消息得Access-Challenge消息经过认证方发送给申请者。TLS记录中包含认证服务器得数字证书Server-Certificate、申请者数字证书请求Client Certificate-Request、Sever-Hello与Server Key-Exchange消息用于用交换密钥过程。Server Hello,确定了这次通信所需要得算法与Server Random Value。 10) 认证方向申请者发送EAP-Request/EAP-TLS/Sever-Hello,Server-Certificate,Server K
28、ey-Exchange,Client Certificate-Request。 11) 申请者校验服务器得数字证书Server-Certificate,如果合法,向认证服务器发送Client-Cert、Client Key-Exchange、Change Cipher-spec与Finished消息。Client-Cert为申请者得数字证书、Client Key-Exchange为使用认证服务器得公钥加密得定长随机串,也叫Pre Master Secert, Change Cipher-spec为申请者能够支持得加密类型。 12) 认证方将EAP-Response/EAP-TLS/Clie
29、nt-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,Finished。 15) 申请者受到Finished消息后,给服务器一个
30、响应EAP-Response/EAP-TLS/TLS-ACK,Finished。 16) 认证方将EAP-Response/EAP-TLS/TLS-ACK,Finished响应帧封装成RADIUS Access-Request帧发给认证服务器。 17) RADlUS服务器与Client都推导出主密钥MK(Master Key)。认证服务器收到TLS-ACK包后,发送Access-Accept给AP发送,其中包括主密钥MK并指示成功得认证。 18) 认证方向申请者发送EAP-Success。此时完成EAP-TLS认证流程。 通过无线客户端与radius服务器之间动态协商生成PMK(P
31、airwise Master Key) ,再由无线客户端与AP之间在这个PMK得基础上经过4次握手协商出单播密钥以及通过两次握手协商出组播密钥,每一个无线客户端与AP之间通讯得加密密钥都不相同,而且会定期更新密钥,很大程度上保证了通讯得安全。 1.2.1 STA & radius server上抓包分析 (一) 在STA上打开wireshark,在capture option选项中选择对应得无线网卡,并把capture packets in promiscuous mode前面得勾去掉,过滤eap||eapol||bootp得数据包。 TLS认证成功时,STA得抓包如下(该抓包就是抓得S
32、TA---AP之间得EAPoL包): 与“EAP-TLS认证流程图”中得步骤相对应,步骤与包得对应关系如下图所示: 1 2 3 6 7 10 11 14 15 18 (二) 在radius server上打开wireshark,在capture option选项中选择对应得无线网卡,并把capture packets in promiscuous mode前面得勾去掉,过滤radius得数据包。 TLS认证成功时,radius server上得抓包如下,(该抓包就是抓得AP—Radius server之间得EAP over Radius包): 与“EAP-TLS认证流程图”中得步骤相对应,步骤与包得对应关系如下图所示: 4 5 8 9 12 13 16 17






