这里写目录标题
- 目的
- 数据加密
- WEP
- RSN
- 身份认证
- EAP
- 802.1X(EAPOL)
- RSNA
- 密钥派生
- 密钥派生方法
- 密钥派生流程
- 密钥缓存
- 密钥缓存流程
目的
1.数据的完整性(Integrity):用于检查数据在传输过程中是否被修改。
2.数据的机密性(Confidentiality):用于确保数据不会被泄露。
3.身份验证和访问控制(Authentication and Access Control):用于检查受访者的身份
数据加密
数据加解密由硬件完成
WEP
数据加密:使用流密码对数据加密,所有数据使用同一个wep key加密,采用CRC完整性校验。
身份认证:支持open和share key两种。
open可以在后续使用安全性更高的RSNA
share key即AP发送challenge text,但不能在后续使用安全性更高的RSNA
RSN
支持两种TKIP和CCMP数据加密及完整性校验算法
TKIP加密:每一帧使用不同key(流密码),采用MIC完整性校验。使用MAC地址等的信息进行加密,更加安全
CCMP加密:采用AES安全块协议,使用PN和keyid的CCMP头信息加密,更加安全。
身份认证
EAP
定义在协议RFC3748
组件:
- Authenticator(验证者):简单点说,Authenticator就是响应认证请求的实体(Entity)。对无线网络来说,Authenticator往往是AP。
- Supplicant(验证申请者)发起验证请求的实体。对于无线网络来说,Supplicant就是智能手机。
- BAS(Backend Authentication Server,后端认证服务器):某些情况下(例如企业级应用)Authenticator并不真正处理身份验证,它仅仅将验证请求发给后台认证服务器去处理。正是这种架构设计拓展了EAP的适用范围。
- AAA(Authentication、Authorization and Accounting,认证、授权和计费):另外一种基于EAP的协议。实现它的实体属于BAS的一种具体形式,AAA包括常用的RADIUS服务器等。在RFC3748中,AAA和BAS的概念可互相替代。
- EAP Server:表示真正处理身份验证的实体。如果没有BAS,则EAP Server功能就在Authenticator中,否则该功能由BAS实现
架构
- EAP Method:(算法)属于具体的身份验证算法层。不同的身份验证方法有不同的Method Type。
- EAP Supplicant/Authenticator Layer:(分发)根据收到EAP数据包中Type字段(见下文介绍)的不同,将其转给不同的EAP Method处理
- EAP Layer:(收发)用于收发数据,同时处理数据重传及重复(Duplicate)包
- Lower Layer(LL):传输层
802.1X(EAPOL)
802.1X讨论了EAP在Wired LAN上的实现
定义了受控端口和非受控端口。非受控端口只允许少量类型的数据流通,如EAPOL认证帧;受控端口认证通过前不允许传输任何数据。
EAPOL数据格式:
0x888e代表EAPOL在802.11帧中的类型。
Key Descriptor Type值为2,表示EAPOL RSN Key。
Descriptor Body的内容就是大括号中所包含的信息。
RSNA
流程
- 发现阶段:选择AP。扫面过程中检查接收的beacon和probe是否包含RSNE信息元素,选择合适AP进行802.11Authentication和Association。
- 802.1X认证阶段:身份认证。分配该次会话所需要的一系列密钥(PMK)用于后续通信的保护。
- 密钥管理:生成单播,组播密钥。通过4-Way Handshake和Group Key Handshake协议。确认上一阶段分配的密钥是否存在,以及确认所选用的加密套件,并生成单播数据密钥和组播密钥用于保护数据传输。
数据加密和完整形校验:采用TKIP和CCMP
密钥派生和缓存:4-Way Handshake和Group Key Handshake
密钥派生
目的:RSNA中要求不同的STA和AP关联后使用不同的Key进行数据加密
PMK(Pairwise Master Key,成对主密钥):在STA中设置的密码。
PMK来源:
- 在soho网络环境中,无专门的验证服务器。来源于双方事先配置好的预共享密钥(Pre-Shared Key,PSK)。
- 在企业网络环境中:PMK和Authenticator Server(如RADIUS服务器)有关,通过EAPOL消息和后台AS经过多次交互来获取。
PTK(Pairwise Transient Key,成对临时Key):PMK密匙派生以得到PTK,安装到硬件中加密数据。PTK利用EAPOL Key帧即4-Way Handshake过程进行信息交换生成。每次关联PTK均重新生成。
密钥派生方法
输入PMK长256位(如果用户设置的密钥过短,规范要求STA或AP将其扩展到256位),通过PRF(Pseudo RandomFunction,伪随机数函数)并结合S/A(Supplicant/Authenticator)生成的Nonce(这两个Nonce将通过4-Way Handshake协议进行交换)以及S/A MAC地址进行扩展,从而派生出TKIP和CCMP用的PTK。
KCK(Key Confirmation Key)用于计算密钥生成消息的完整性校验值
KEK(Key Encryption Key)用来加密密钥生成消息
密钥派生流程
四次握手流程
1.AP生成Anonce,并发送给STA
2.STA生成Snonce,结合PMK、Anonce和MAC地址生成ptk。
STA发送Snonce和KCK计算出的MIC给AP。
AP接收Snonce,并派生出PTK计算MIC校验。
3.AP发送install、GTK、MIC
4.STA发送MIC
4-Way Handshake完成后,STA和AP安装PTK
密钥缓存
目的:由于802.1X协商步骤涉及多次帧交换,故其所花费时间往往较长。在这种情况下,STA缓存这个得来不易的PMK信息就可消除以后再次进行802.1X协商步骤的必要,从而大大提升认证速度。
PMKSA(PMK Security Association):PMK缓存信息。包括AP的MAC地址、PMK的生命周期(lifetime),以及PMKID。
其中PMKID包含(PMK IDentifier,用于标示这个PMKSA,其值由PMK、AP的MAC地址、STA的MAC地址等信息用Hash计算得来)。
密钥缓存流程
STA首先根据APMAC地址判断自己是否有缓存了的PMKSA,如果有则把PMKID放在RSNE中然后通过Association/Reassociation Request发送给AP。
AP根据这个PMKID再判断自己是否也保持了对应的PMKSA。如果是,双方立即进入4-Way Handshake过程,从而避免802.1X协商步骤