您的位置:首页 > 移动开发 > Android开发

Android Wi-Fi EAP-TLS/EAP-PEAP/EAP-TTLS(扩展认证协议)简介

2017-07-23 22:17 411 查看


1 扩展认证协议

英语: Extensible Authentication Protocol ,縮寫為 EAP,是一个在[无线网络][0]或點對點連線中普遍使用的认证框架。它被定义在RFC
3748中,并且使RFC 2284过时,后又被RFC 5247更新。EAP不仅可以用于无线局域网,還可以用于有线局域网,但它在无线局域网中使用的更频繁。最近,WPA和WPA2标准已经正式采纳了5类EAP作为正式的认证机制。

EAP是一个认证框架,不是一个特殊的认证机制。EAP提供一些公共的功能,并且允许协商所希望的认证机制。这些机制被叫做EAP方法,现在大约有 40种不同的方法。IETF的RFC中定义的方法包括:EAP-MD5, EAP-OTP, EAP-GTC, EAP-TLS, EAP-SIM,和EAP-AKA, 还包括一些厂商提供的方法和新的建议。无线网络中常用的方法包括EAP-TLS, EAP-SIM, EAP-AKA, PEAP, LEAP,和EAP-TTLS。

当EAP被基于[IEEE 802.1X][4]的网络接入设备(诸如802.11a/b/g ,无线接入点)调用时,现代的EAP方法可以提供一个安全认证机制,并且在用户和[网络接入服务器][5]之间协商一个安全的PMK。该PMK可以用于使用[TKIP][6]和[AES][7]加密的无线会话。


2
LEAP

轻量级的扩展认证协议(LEAP) 轻量级的扩展认证协议,或LEAP是一个由[CISCO][15][私人拥有][16]的 EAP。Cisco通过允许其他厂家生产基于EAP的项目来保护该协议。在任何的windows操作系统中不支持LEAP,但LEAP被第三方的用户软件 支持。该协议由于其容易受到字典攻击脆弱性,就象EAP-MD5,而在一开始便广为人知。但直到2003年Joshua Wright发表了ASLEAP以后,人们才开始讨论LEAP存在严重的安全问题。Cisco仍然认为如果使用十分复杂的密码,LEAP是安全的。但是在
现实世界中人们几乎不使用十分复杂的密码,因为这对普通人来将是一件非常困难的事情。新的协议,诸如EAP-TTLS和[PEAP][17],则没有这些问题,因为他们给MSCHAPv2用户认证会话建立了一个安全的[传输层安全][18](TLS)通道,而且可以运行在使用Cisco和不使用Cisco的接入点上。


3
EAP-TLS

EAP-TLS是IETF的一个开放标准,并且在无线厂商之间得到很好的支持。它能够提供很好的安全保证。因为[TLS][19]被认为是[SSL][20]的继承者。它使用[PKI][21]来保护[Radius][22]认 证服务器的通信,这是很难完成的任务。所以即使EAP-TLS良好的安全,用户端在认证时的负载成为它的致命伤。 EAP-TLS是无线局域网扩展认证协议的原始版本,虽然它因为配置困难而很少被使用,但它仍被认为是最安全的EAP标准之一,而且广泛地被无线局域网硬 件和软件制造厂商,包括微软所支持。要求用户方给出证书,虽然不是很流行,则是EAP-TLS在认证方面的长处,而且既方便又安全。一个脆弱的密码不会导
致入侵基于EAP-TLS的系统,因为攻击者仍然需要客户端的证书。当客户端的证书是储存在智能卡中时,EAP-TLS提供了最安全的认证解决方案,因为 如果不窃取智能卡是无法得到客户端证书的。如果将智能卡偷窃的话则会立刻引起注意并且更换新卡。到2005年四月,EAP-TLS是唯一厂商需要保证的 WPA和WPA2的EAP类型。在微软,Cisco,Apple和Linux中都有实现客户端和服务器端的源代码。EAP-TLS在MAC OS 10.3(包括10.3以上), Windows 2000 SP4, Windows
XP, Windows Mobile 2003(包括2003以上),和Windows CE 4.2中被支持。


3.1
EAP-TLS认证流程

EAP-TLS认证流程图



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

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

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

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

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

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

申请者收到EAP-Request/EAP-TLS/TLS-Start消息后,通过认证方发送EAP-Response/EAP-TLS/Client-Hello消息给服务器。这个消息里面包含了自己可实现的算法列表、Client Random Value和其它一些需要的信息。

认证方将EAP-Response/EAP-TLS/Client-Hello响应帧封装成RADIUS Access-Request帧发给认证服务器。

认证服务器接收到EAP-Response/EAP-TLS/Client-Hello后,确定TLS认证已建立,并通过封装包含多个TLS记录的EAP-Response/EAP-TLS消息的Access-Challenge消息经过认证方发送给申请者。TLS记录中包含认证服务器的数字证书Server-Certificate、申请者数字证书请求Client Certificate-Request、Sever-Hello和Server Key-Exchange消息用于用交换密钥过程。Server Hello,确定了这次通信所需要的算法和Server
Random Value。

认证方向申请者发送EAP-Request/EAP-TLS/Sever-Hello,Server-Certificate,Server Key Exchange,Client Certificate-Request。

申请者校验服务器的数字证书Server-Certificate,如果合法,向认证服务器发送Client-Cert、Client Key-Exchange、Change Cipher-spec和Finished消息。Client-Cert为申请者的数字证书、Client Key-Exchange为使用认证服务器的公钥加密的定长随机串,也叫Pre Master Secert, Change Cipher-spec为申请者能够支持的加密类型。

认证方将EAP-Response/EAP-TLS/Client-Cert,Client Key-Exchange,Change Cipher-spec,Finished响应帧封装成RADIUS Access-Request帧发给认证服务器。

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

认证方向申请者发送EAP-Request/EAP-TLS/Change Cipher-spec,Finished。

申请者受到Finished消息后,给服务器一个响应EAP-Response/EAP-TLS/TLS-ACK,Finished。

认证方将EAP-Response/EAP-TLS/TLS-ACK,Finished响应帧封装成RADIUS Access-Request帧发给认证服务器。

RADlUS服务器和Client都推导出主密钥MK(Master Key)。认证服务器收到TLS-ACK包后,发送Access-Accept给AP发送,其中包括主密钥MK并指示成功的认证。

认证方向申请者发送EAP-Success。此时完成EAP-TLS认证流程。


4
EAP-MD5

EAP-MD5是另一个IETF开放标准,但提供最少的安全。[MD5][23][Hash][24]函数容易受到字典攻击,它被使用在不支持动态WEP的EAP中。


5
EAP-FAST

EAP-FAST (基于安全隧道的灵活认证,Flexible Authentication via Secure Tunneling)是一个由[思科][25]提出的协议方案,用于替代[LEAP][26]。 设计该协议是为了解决LEAP实现“轻量级”时的缺点。在EAP-FAST中使用服务器证书是可选的。EAP-FAST使用一个保护访问凭证 (Protected Access Credential,PAC)来建立TLS隧道,并通过该隧道对客户端证书进行验证。EAP-FAST拥有三个阶段。 阶段0是一个可选的阶段,在该阶段PAC可以是手工或者动态设置,但超出了RFC4851中定义的EAP-FAST的范围。

尽管PAC设置存在着许多实现,但是官方的实现依然在进行状态。PAC典型地只需要为RADIUS服务器和客户端设置一次。 在阶段1中,客户端和AAA服务器使用PAC来建立TLS隧道。 在阶段2中,客户端证书在该加密的隧道中进行传输。当自动PAC设置开启之后,EAP-FAST拥有一个小漏洞。攻击者可以拦截该PAC并随后使用它来获 得用户证书。 该漏洞可以通过手动配置PAC或者在PAC配置阶段使用服务器证书来解决。

还有一个漏洞:黑客的AP可以使用同一个SSID,拒绝用户PAC并提供新的PAC。大多数恳求将会被设置来使得用户接收它。如果用户不这样做,那 么用户将使用内部方法发送他的证书给黑客。而黑客将会获得明文的密码(EAP-FAST w/GTC)或者易受字典攻击的MSCHARPv2散列。值得一提的是,PAC文件的发放时基于每个用户的。这是RFC 4851 第7.4.4节中的要求,因此如果一个新的用户从设备进入网络,他首先需要一个新的已配置的PAC文件。这是为什么很难不以非安全匿名设置模式运行 EAP-FAST的原因。另一种方式是使用设备密码来替代,但这就不是在网络中对用户进行认证了。

EAP-FAST可以不使用PAC文件,则为普通的TLS。


6
EAP-TTLS

EAP-TTLS是由Funk Software和[Certicom][27]合作开发的。它目前是IETF的开放标准草案。它可跨平台支持,提供非常优秀的安全,并且在认证服务器上使用PKI证书。 TTLS与TLS最大的区别是TTLS不需要客户端认证的协议。


7
PEAP

PEAP由[CISCO][15],[微软][28]和[RSA Security][29]联 合提出的开放标准的建议。它早已被运用在产品中,而且提供很好的安全。它在设计上和EAP-TTLS相似,只需要一份服务器端的PKI证书来建立一个安全 的传输层安全通道(TLS)以保护用户认证。 到2005年5月,已有两个PEAP的子类型被WPA和WPA2标准批准。它们是:

PEAPv0/EAP-MSCHAPv2

PEAPv1/EAP-GTC


7.1
PEAP用户接入流程

PEAP用户接入流程






E1 认证初始化

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

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

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

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

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

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


E2 建立TLS通道

WLAN UE收到EAP-Request/Peap/Start报文后,产生一个随机数、客户端支持的加密算法列表、TLS协议版本、会话ID、以及压缩方法(目前均为NULL),封装在EAP-Response/TLS/Client Hello报文中发送给WLAN AN。

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

Radius收到Client Hello报文后,会从Client 的Hello报文的加密算法列表中选择自己支持的一组加密算法+Server产生的随机数+Server 证书(包含服务器的名称和公钥)+证书请求+Server_Hello_Done属性形成一个Server Hello报文封装在EAP消息中,使用Access-Challenge报文发送给WLAN AN。

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

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

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

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

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

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

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


E3 认证过程

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

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

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

WLAN AN收到RADIUS-Access-Accept报文,会提取MPPE属性中的密钥做为WPA加密用的PMK,并且会发送EAP-success报文给WLAN UE。


E4 地址分配

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


E5 计费开始

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

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


8
EAP-AKA

EAP-AKA(EAP for UMTS [Authentication and Key Agreement][30]) 是用来在使用 [USIM][31] 接入 [UMTS][32] 移动通信网络时进行用户认证和密钥协商的方案。EAP-AKA 定义于 [RFC 4187][33] 中。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: