1. 什么是802.1X
网络层的访问控制手段有多种,最简单的就是基于MAC地址的访问控制方法;另一个就是802.1X,全称为基于端口的链路层访问控制协议,其控制思路可以比喻为居民家中的防盗锁链,当外来人员试图进入家中时,可以先将防盗锁链展开以便观察验证对方,通过后再开锁。
同样道理,802.1X在允许用户访问网络之前,通过EAPoL或者EAPoW报文进行验证,验证成功方可允许网络层接入,即允许IP、ARP等通过。
这里引入了EAP(扩展验证协议),该协议提供一种端对端的验证框架:
- 属于集中式访问控制管理
- 本身并未提供具体的验证方法,而是将选择权交给上层;
- 验证思路可以是挑战/应答模式,也可以是PKI证书模式;
- 本身并未提供承载层,需要借助其他协议,STA和AP之间利用EAPoL协议封装EAP消息,AP和AS之间则基于RADIUS(将EAP消息封装至EADIUS的特性字段当中)
802.1X是EAP的承载层,位于OSI中的第二层,即数据链路层。数据链路层分为LLC子层和MAC子层,而MAC子层分为802.11(无线)MAC子层和802.3(大名鼎鼎的以太网)MAC子层,因此EAP相应的有EAPoL(EAP over LAN)和EAPoW(EAP over wireless)。
2. 802.1X中的访问控制
为了遵循网络资源的安全特性,即CIA即confidential、integrity和avability,802.1X定义了各种访问控制手段,总的过程是首先对方进行身份请求,然后进行身份验证并获得授权,最终得以访问授权范围内的资源。
2.1 身份验证
802.1X提供了身份验证机制,但并不是所有的EAP方法都支持双向验证,比如EAP-MD5就只支持客户端验证。
- 身份验证实际上只在STA和AS之间完成,AP只负责在STA和AS之间传递信息。
- 无论WP2/WPA-Enteprize还是WPA2/WPA-PSK,目的都是完成身份验证。
- EAP身份验证请求由AS发起。
2.2 授权
EAP验证的一个副产品是PMK,可以看做是AS对STA的授权码。
2.3 机密性
数据的机密性需要完善的密钥管理与分发机制,协议载体即EAPoL-key,由四步消息组成,称之为4-way handshake,实际上PTK产生和安装需要两步,GTK的产生的安装需要两步:第一对消息完成PTK产生和安装,第二对消息不仅完成对PTK的确认,而且产生和安装GTK。 如图所示:
为了保证密钥在发送过程中不被篡改(完整性),需要引入验证机制,通常的做法是在消息后面附加一个校验码,这里用一个密钥做验证密钥使用;为了保证机密性,必须得有加密密钥。这几种密钥的产生过程如下:
- PMK转移
EAP验证产生PMK产生之后,AS(一般是RADIUS服务器)并不保留PMK,而是转移至Authenticator(一般是AP),存于一张表中。这个过程通过RADIUS消息通知AP,然后AP传递EAP Response Success报文告知STA。四步握手由AP在这一时间点发起。 - PTK产生
为了加大密钥在传输过程中被破解的难度,增强随机性是常用方法之一,因此需要引入随机因素,这里在STA和AP的MAC地址的基础上引入STA和AP的随机值,由伪随机函数计算得出。由于双方必须知道对方的随机值才能算出PTK,因此必须在握手中发送给对方。根据不同的加密算法PTK产生的位数也不一致,对于TKIP是512位,CCMP是384位。 - PTK分解
PTK分为三个部分,KCK、KEK和TK。其中KCK用于消息验证,即用此密钥计算出完整性校验码(HMAC_SHA1算法)并附加在消息后面发给对方,对方用自己的KCK同样计算一次完整性校验码,比较二者。而KCK在PTK四步握手和GTK两步握手中几乎都会用到,除了PTK四步握手的第一条消息。KEK则用于GTK两步握手分发GTK,具体方法是用该密钥加密GTK发送给对方。 最后,TK才是真正用于数据加密的密钥,对于TKIP,由于验证密钥和加密密钥不能相同,因此对应分为两个部分;对于CCMP,验证密钥和加密密钥是一个。
3. 802.1X VS PSK
基于802.1X无线的安全模式一般称为WPA-Enterprise或者是WPA2-Enterprise(WPA和WPA2的差别在于前者的加密算法基于TKIP,后者则基于CCMP);基于PSK(预共享密钥)的无线安全模式称为WPA-PSK或者WPA2-PSK。两种区别如下:
3.1 是否引入第三方验证
WPA/WPA2-Enterprise需要RADIUS服务器(需要STA和RADIUS服务器协商出PMK,然后由服务器把PMK交给AP),可以覆盖更多的范围;而WPA/WPA2-PSK则不要用,直接由PSK在AP和STA两边各自计算出同样的PMK。
3.2 验证对象不同
WPA/WPA2-Enterprise可以验证双方,取决于EAP方法的选择,而WPA/WPA2-PSK只能验证客户端,即STA。
3.3 是否支持机器验证
WPA/WPA2-Enterprise支持机器验证,而WPA/WPA2-PSK只支持用户验证。
3.4 访问控制的粒度不同
如果要禁止某个用户访问,对于WPA/WPA2-Enterprise只需吊销该用户的访问权限即可;而对于WPA/WPA2-PSK,一旦修改密码意味着所有用户都无法访问。因此,前者相比后者在访问控制的粒度上更为精细。
3.5 安全性不同
从安全角度来看,WPA/WPA2-PSK的主要缺陷如下:
- 用于身份验证的密码是面向所有用户的,一旦被破解,所有用户都面临数据泄露的危险。
- WPA/WPA2-PSK模式下暴露给嗅探着的数据报文更多,因为相同的PMK被不同的用户同时使用。
- 不支持密钥更新,更易遭受蛮力攻击。