EAP-TLS(EAP-Transport Layer Security)被认为是WLAN网络里最安全的认证方法,因此被企业广泛采用。本文会针对EAP-TLS的基本原理进行介绍。
在介绍原理之前,先介绍下WLAN网络里认证加密手段涉及到的一些基本概念。
1 802.1x
IEEE 802.1X 使用认证服务器在无线网卡和无线访问点(AP)之间提供基于端口的访问控制和相互认证。采用EAP作为认证消息交互协议。 如下图所示:
总结一下,WLAN的企业级认证都需要一个认证服务器,充当Authenticator Server的角色。终端(Supplicant)只有通过认证服务器的认证,才能打开受控的业务端口,进行正常网路的访问。AP充当了Authenticator的角色。
2 EAP 和 EAPOL
上面提到了802.1x协议使用EAP协议进行认证消息的传递,因此EAP主要充当消息传递的功能。常见的EAP-TLS,EAP-TTLS,EAP-MSCHAPv2等,都是基于EAP来传递认证协议。
EAP(RFC2284/3748)需要封装在WLAN的数据帧里进行传输,因此EAPOL(EAP over Lan)作为一种封装格式,用来在Wlan数据帧里传送EAP消息,具体封装格式如下图:
EAP的格式定义如下:
其中code有四种取值:
EAPOL(802.1x authentication)的code有5种取值:
3 各种KEY的生成原理
我们家庭里面的WIFI最常用的是密码方式的认证,也就是AP上预先配置一个密码,手机去连接AP的时候,输入正确的密码即可连接AP并传输加密数据。其实这个背后有一些列的密码处理过程。WLAN的802.11i协议定义了一个完整的密钥生成体系,如下图:
用于组播数据加密
从上图可以看出,首先要生成最顶层的MSK;MSK对于家庭的AP,可以简单理解为就是连接AP时候需要输入的不少于8位密码。而对于企业级的Wlan网络,则需要通过EAP-TLS,EAP-TTLS,EAP-MSCHAPv2等认证方法来生成。
其次,要生成第二层的PMK,对于家庭AP,PMK=pdkdf2_SHA1(passphrase,SSID,SSID length,4096);Passphrase(8-63字符),就是连接AP用的密码;
对于企业级的wlan网路,PMK =L(MSK, 0, 256),MSK前256bit。对于AP来说,每一个终端S都有各自的PMK,用PMKID来管理:PMKID = HMAC-SHA1-128(PMK, "PMK Name" || AA || SPA)
最后,就是第三层的PTK的生成,
4 EAP-TLS
所以从上面的介绍可以看出,EAP-TLS主要利用在客户端和服务器端的证书来生成MSK。有了MSK后,再通过算法映射为PSK,然后再通过4次握手的协商过程完成PTK/KCK/KEK/TK的生成。
因此,EAP-TLS最重要的就是确保证书要在客户端和服务器端都正确可靠的安装。
认证服务器和AP之间采用Radius协议传输认证报文
AP和客户端之间使用EAP传输TLS交互报文;
整个交互流程其实就是TLS的报文交互过程(生成MSK)和四步握手过程(生成其他Key)这两部分的组合,如下图:
