这里写目录标题

  • 目的
  • 数据加密
    • 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协商步骤