802.1X/EAP架构
1. 802.1X
IEEE 802.1X是一种基于端口的访问控制标准,定义了一种授权架构,以允许或阻止流量通过端口访问网络资源。802.1X既可以用于无线网络环境,又可以用于有线网络环境。802.1X授权架构主要由以下3部分组成:
• 请求方 (Supplicant)
• 认证方 (Authenticator)
• 认证服务器 (Auhthentication Server)
请求方、认证方、认证服务器三者之间相互协同工作,以确保只有经过身份验证的用户或设备才被授权访问网络资源。可扩展身份验证协议(Extensible Authentication Protocol,EAP)在802.1X架构内被用于在2层验证用户身份。
1.1 请求方(Supplicant)
请求方是一个尝试访问网络资源的设备,每个请求方具有唯一的身份凭证,并由认证服务器加以验证。请求方使用EAP协议与认证服务器在2层进行通信,请求方身份被认证服务器验证之后才能访问3-7层的网络资源。请求方可以想象成是一个Wi-Fi设备上执行802.1X端点(endpoint)服务的客户端软件程序,包括以下几种:
• 集成OS客户端Supplicant —— 如Windows XP WZC,Apple的AirPort Client;
• 芯片厂家Supplicant —— 802.11射频芯片制造商如Atheros、Broadcom、Intel都有其自己的Supplicant软件程序;
• WLAN厂商Supplicant —— 如Cisco、D-Link、Netgear等厂商的无线网卡通常都自带特定的软件程序;
• 第三方Supplicant —— 第三方的Supplicant软件通常可以与多个WLAN产生射频卡工作,如Juniper OAC;
1.2 认证方(Authenticator)
认证方是一个允许或拒绝请求方流量通过其端口的设备,认证方维护着两个虚拟端口:非受控端口(uncontrolled port)和受控端口(controlled port)。非受控端口允许EAP认证流量通过,受控端口拒绝所有其他流量通过,直到请求方通过身份认证;
认证方并不验证请求方的身份凭证,而是在请求方和认证服务器之间传递消息,扮演的是一个中介的角色。认证方在WLAN中通常是一个AP或一个无线控制器。
1.3 认证服务器(AuhthenticationServer)
认证服务器对请求方提供的身份凭证进行验证,并将认证结果通知给认证方。认证服务器需维护一个用户数据库,或代理一个或多个外部用户数据库以验证请求方身份凭证;如下图所示,RADIUS服务器执行认证服务器的功能,同时也代理查询LDAP数据库:
图-1 代理认证
认证方是一个允许或拒绝请求方流量通过其端口的设备,认证方维护着两个虚拟端口:非受控端口(uncontrolled port)和受控端口(controlled port)。非受控端口允许EAP认证流量通过,受控端口拒绝所有其他流量通过,直到请求方通过身份认证;大多数情况下,认证服务器是一个RADIUS服务器。一些WLAN控制器支持直接查询LDAP数据库,将其作为认证服务器。下表列出了一些的认证服务器例子:
表-1 常见的认证服务器

1.4 802.1X认证过程
请求方、认证方和认证服务器之间相互协作,构成了802.1X架构。在认证过程中使用EAP交换信息,下图显示了在无线网络环境中EAP交换的通用过程:
图-2 EAP交换的通用过程

1. 请求方(802.11客户端)关联AP加入到BSS中;
2. 请求方发送一个802.11
EAPoL-Start帧给认证方来初始化EAP认证过程。这是一个可选帧,根据EAP类型的确定是否被使用;
3. 认证方发送一个802.11
EAP-Request帧以请求请求方的身份;
4. 请求方发送一个携带身份信息的802.11
EAP-Response帧给认证方,用户名(username)在EAP-Response/identity帧中总是明文;
5. 认证方封装EAP-Response帧在RADIUS数据包中并转发给认证服务器;
6. 认证服务器查看请求方的身份信息,并检查数据库中的用户名与密码信息。然后认证服务器发送一个密码挑战 (password challenge) 封装在RADIUS数据包中给请求方;
7. 认证方以802.11EAP帧形式转发密码挑战(password challenge) 给请求方;
8. 请求方取出密码并与哈希算法(MD5或MS-CHAPv2) 进行哈希,然后以802.11EAP帧形式发送哈希响应给认证服务器;
9. 认证方以RADIUS数据包形式转发此哈希给认证服务器;
10. 认证服务器运行一个相同的哈希并与返回的哈希进行比较看是否相同,然后认证服务器会返回一个成功或失败的消息给请求方;
11. 认证方将此消息以EAP-Success帧发送给请求方,请求方完成认证;
12. 最后一步是请求方和认证方之间进行一次4次握手协商以产生动态加***,此步骤并非802.1X/EAP架构的强制要求;
13. 一旦请求方完成二层的EAP认证并产生动态加***,受控端口就会被打开。然后请求方就可以被授权访问网络资源;
1.5 开放式系统认证与802.1X/EAP
802.11无线客户端通过关联和加入到BSS中,会建立到AP的2层连接。然而,如果部署了802.1X/EAP,会直到客户端也通过整个802.1X/EAP过程才会建立2层连接。下图显示了802.1X/EAP认证、标准802.11开放式系统认证和关联的协同工作。
图-3 802.11关联与802.1X/EAP认证

2. 请求方身份凭证
请求方使用EAP协议向认证服务器提供身份凭证以证明其身份,根据EAP协议类型的使用,请求方身份凭证可以有多种形式,包括如下几种:
• 用户名与密码(Usernames and passwords)
• 数字证书(Digital certificates)
• 受保护的接入凭证(Protected Access Credentials ,PAC)
• 动态安全令牌设备(Dynamic security token devices)
• 智能卡(Smart cards)
• USB设备(USB device)
• 机器认证(Machine authentication)
• 预共享密码(Preshared keys ,PSK)
• 近距离徽章(Proximity badges)
• 射频识别标签(RFID tags)
• 生物识别技术(Biometrics)
2.1 用户名与密码
用户名与密码是最常用的一种身份形式,被多种EAP类型所使用。当使用Windows
AD作为用户数据库时,请求方提供其身份凭证时可以以DOMAIN-NAME/USERNAME的格式,或者[email protected]的格式。需要注意的是,某些RADIUS服务器只接受其中的一种格式。
注意:请求方是一个软件程序,有些请求方软件会提示你输入用户名、密码、域。而有些请求方软件只需要你输入用户名和密码,假定你输入的用户名形式为DOMIAN/USERNAME。
2.2 数字证书与受保护的接入凭证
EAP可以使用服务器端(Server-side)证书和客户端(Client-side)证书。如果EAP协议使用客户端证书,则需要架设PKI,为WLAN用户或设备创建、分发和管理客户端证书,一旦证书过期还需要进行更新。由于请求方使用客户端证书用作其身份凭证,因此认证服务器验证客户端证书。受保护的接入凭证(PAC)是一种类数字证书,被请求方用作其身份凭证,EAP-FAST就是使用PAC作为其身份凭证。由于使用客户端证书需要架设PKI,PKI的安装和管理成本很高,如果仅仅用于WLAN则不划算。因此,Cisco设计了EAP-FAST和PAC文件。PAC文件由RADIUS服务器分发,因此可以把EAP-FAST PAC/RADIUS架构想象成一个Mini-PKI。
2.3 一次性密码
安全令牌是一个分发给授权用户的物理设备,一些安全令牌包含一次性密码(one-time password,OTP)功能。一次性密码是一个只对单一的回话有效的密码,通常每隔30s或60s更新一次。OTP安全令牌既可以是硬件也可以是软件形式,下图显示的一个硬件的OTP安全令牌
图-4 OTP安全令牌

2.4 智能卡与USB令牌
智能卡和USB令牌可以用于单一因素(single-factor)认证,虽然他们没有想曾经预期的那样大规模普及,但是他们也有自己的一个市场。如下图所示,智能卡是一个包含了集成电路卡(ICC)的口袋大小的卡。智能卡和USB令牌的关键是可以安全存储用户个人信息到集成电路芯片上,且数据不可修改和复制。大多数智能卡技术是基于X.509数字证书,智能卡和USB令牌的功能也相当于客户端数字证书。
图-5 智能卡

2.5 机器认证
机器认证的概念是确保“设备”访问网络是被授权的,用户认证通常发生在机器认证之后。在Windows AD环境下,机器认证的机器身份凭证是基于SID(System Identifier)值。每一个加入到AD域中的计算机,都有一个独一无二的信息存储在SID中。
2.6 预共享**
预共享**只是一个简单的密码或密码短语,在请求方和认证方之间共享。预共享**通常用于SOHO的无线网络环境中,不建议在企业WLAN中部署。
2.7 近距离徽章与射频
如下图所示,近距离徽章通常被并入到企业名牌中。当用户走到计算机前,徽章阅读器或RFID标签将会识别用户所在的位置,然后要求用户输入密码或PIN以获取访问计算机的权限。
图-6 近距离徽章

2.8 生物识别技术
生物识别技术是指使用人体上独特可识别的部分,将其扫描并存储在一个认证服务器上,然后对每个登录者进行认证。当生物识别技术与密码或PIN结合使用时,将是一个非常有效的身份识别方式。
3. 认证服务器身份凭证
任何802.1X/EAP架构中,认证服务器都会验证请求方的身份凭证。其中,最安全的的EAP身份认证协议结合了双向认证(mutual
authentication)的概念,即请求方也会验证认证服务器的身份凭证。大多数EAP身份认证协议都使用服务器端证书作为其身份凭证,请求方对其进行验证。当请求方验证认证服务器时,通常使用以下两种方法之一:
• 第一种方法是经过由可信任的根授权中心分发的证书;
• 第二种方法是使用自签名证书安装到每个请求方上,对于没有PKI的企业来说,此方法更常用。
服务器端证书必须被创建并安装到认证服务器上,服务器端公共证书的副本也必须安装到请求方。服务器端证书主要有以下两个目的:
• 验证认证服务器 —— 服务器端证书的第一个目的就是请求方用于验证认证服务器的身份;
• 创建一个加密的TLS隧道 —— EAP协议需要服务器端证书的第二个目的就是用于创建一个TSL加密隧道,请求方身份凭证则在此加密TSL隧道内进行交换。这样TSL加密隧道可以保护请求方身份凭证,避免受到监听以及离线字典的攻击。
由于数字证书中包含了主机、发行机构、以及其他一些信息,因此客户端请求方可以利用这些信息,采用模式匹配(pattern match)的方式对证书进行验证。
客户端请求方也可以选择配置不验证认证服务器的证书,这样请求方就会信任来自任何可信任授权机构颁发的任何证书,但这种容易遭受到中间人攻击。例如,Windows WZC请求方可以不勾选如下图所示的选型框,则不验证认证服务器的证书。
图-7 服务器证书验证

参考文献:
[1] Certified Wireless Security Professional Official Study Guide
[2] Certified Wireless Network Administrator Study Guide