一、802.1x简述
- 802.1x协议是一种认证协议,主要用于解决端口的访问控制问题。是工作于数据链路层的协议。在企业无线网络中,使用802.1x协议作为接入认证的方法。
- IEEE的802.1X使用了EAP认证框架。EAP协议是使用可扩展的身份验证协议的简称,全称Extensible Authentication Protocol。是一系列验证方式的集合,设计理念是满足任何链路层的身份验证需求,支持多种链路层认证方式。
二、EAP协议简述
- EAP协议是IEEE 802.1x认证机制的核心,它将实现细节交由附属的EAP方法协议完成,如何选取EAP方法由认证系统特征决定。这样实现了EAP的扩展性及灵活性。
- EAP支持多种链路层认证方式,下面选取几种典型的认证方式进行叙述。
三、EAP-TLS
- EAP-TLS使用TLS协议作为认证方式,TLS有很多优点,所以EAP选用了TLS作为基本的安全认证协议,并为TTLS和PEAP建立安全隧道,TLS已经标准化,并且进过了长期应用和分析,都没有发现明显的缺点。
- TLS认证是基于Client和Server双方互相验证数字证书的,是双向验证方法,首先Server提供自己的证书给Client,Client验证Server证书通过后提交自己的数字证书给Server,客户端的证书可以放到本地、放到key中等等.
- TLS有一个缺点就是TLS传送用户名的时候是明文的,也就是说抓包能看到EAP-Identity的明文用户名。
- TLS是基于PKI证书体系的,这是TLS的安全基础,也是TLS的缺点,PKI太庞大,太复杂了,如果企业中没有部署PKI系统,那么为了这个认证方法而部署PKI有些复杂,当然,如果企业已经部署了PKI,那么使用EAP-TLS还是不错的选择。
四、EAP-TTLS和EAP-PEAP
- 正因为TLS需要PKI的缺点,所以设计出现了TTLS和PEAP,这两个协议不用建立PKI系统,而在TLS隧道内部直接使用原有老的认证方法,这保证了安全性,也减小了复杂度。
- 把TTLS和PEAP放到一起介绍的原因是他们俩很像,两个都是典型的两段式认证,在第一阶段建立TLS安全隧道,通过Server发送证书给Client实现Client对Server的认证(这里TTLS和PEAP仍然使用证书,但是这里的证书都是服务器证书,管理起来比TLS客户端证书要简单那的多);当安全隧道一旦建立,第二阶段就是协商认证方法,对Client进行认证(Android中称为阶段2身份认证)。
- PEAP之所以叫Protected EAP,就是它在建立好的TLS隧道之上支持EAP协商,并且只能使用EAP认证方法,这里为什么要保护EAP,是因为EAP本身没有安全机制,比如EAP-Identity明文显示,EAP-Success、EAP-Failed容易仿冒等,所以EAP需要进行保护,EAP协商就在安全隧道内部来做,保证所有通信的数据安全性。
五、MSCHAPv2
- Microsoft 质询握手身份验证协议 (MS-CHAP v2) 是一个通过单向加密密码进行的相互身份验证过程。
- MSCHAPv2是一种典型的阶段2身份认证方式,但是不够安全。可以将MSCHAPv2作为EAP-TLS、EAP-TTLS、EAP-PEAP的内部协议结合使用。
六、GTC
- GTC是Cisco提供的一种token令牌认证方式。可以将GTC作为EAP-TLS、EAP-TTLS、EAP-PEAP的内部协议结合使用。
七、Android中的企业无线网络功能
- 在Android中对802.1x、EAP等协议都有完善的支持,在连接到企业网络时会显示连接选项,其中EAP方法可以选择EAP方法协议,包括PEAP、TLS、TTLS等,而阶段2身份认证是在非TLS的场景下,可以对内部协议进行选择,CA证书可以指定信任CA,用于认证服务器数字证书,用户证书即为客户端证书,用来完成双向认证,证明自己的身份。
八、总结和对比
- 802.1x提供了接入认证的方法,但是具体的认证方法使用了EAP协议作为实现。
- EAP协议支持多种链路层认证方式,将实现细节交由附属的EAP方法协议完成。
- EAP-TLS是一种常见的EAP方法协议,可以借助PKI系统进行双向认证,提供了最高的安全性。
- EAP-TTLS和EAP-PEAP是典型的两段式认证协议,只需要对服务器进行认证,默认不对客户端进行认证。对服务器的认证也依赖于CA的数字证书进行。如果需要对客户端再进行认证,需要配合MSCHAPv2或者GTC等内部协议结合使用。