802.1X/EAP 认证框架详解
802.1X 端口访问控制协议
802.1X 定义了基于端口的网络接入控制机制。在 WiFi 环境中,"端口"指的是无线关联的逻辑通道。
受控端口 vs 非受控端口
STA AP
│ │
│── EAPOL ─────────────────→│ (非受控端口: 仅允许 EAPOL)
│ │
│←─ EAPOL ──────────────────│ (非受控端口: 仅允许 EAPOL)
│ │
│ [认证成功] │
│ │
│◄══════════════════════════► (受控端口打开: 允许所有数据)
非受控端口:始终开放,但只允许 EAPOL 帧通过
受控端口:认证通过后才开放,允许正常数据传输
EAP(Extensible Authentication Protocol)
EAP 是一个认证框架,而非具体的认证方法。它定义了消息格式和交换流程,支持多种认证方法(EAP Method)。
EAP 消息格式
┌──────────┬──────────┬──────────┬──────────────┐
│ Code (1) │ ID (1) │ Length(2)│ Data (var) │
└──────────┴──────────┴──────────┴──────────────┘
Code:
1 = Request 2 = Response
3 = Success 4 = Failure
ID: 匹配请求/响应的标识符
Length: 整个 EAP 包的长度(含头部)
EAP 在 WiFi 中的封装层次
EAP Method (如 TLS/MSCHAPv2)
│
▼
EAP Packet
│
▼
EAPOL Frame (802.1X over LAN)
│
▼
802.11 Data Frame (QoS Data, UP=0)
│
▼
PHY PPDU → Air
EAP-TLS 详细流程
Phase A - TLS 握手
Round 1:
Server → Client: EAP-Request/TLS [Start, Length]
Client → Server: EAP-Response/TLS [Empty, ClientHello]
Round 2:
Server → Client: EAP-Request/TLS [ServerHello, Certificate,
ServerKeyExchange, CertificateRequest,
ServerHelloDone]
Client → Server: EAP-Response/TLS [Certificate,
ClientKeyExchange, CertificateVerify,
Finished]
Round 3:
Server → Client: EAP-Request/TLS [ChangeCipherSpec, Finished]
Client → Server: EAP-Response/TLS [ChangeCipherSpec, Finished]
Round 4:
Server → Client: EAP-Success
Phase B - MSK 派生
MSK = PRF(master_secret, "Master Secret",
Client Random || Server Random)
其中 master_secret 来自 TLS 握手。
PMK = MSK[0:128] (前128字节用于四次握手)
EAP-PEAP 详细流程
Phase 1 - 建立 TLS 隧道
Server → Client: EAP-Request/PEAP [Start]
Client → Server: EAP-Response/PEAP [ClientHello]
Server → Client: EAP-Request/PEAP [ServerHello, Certificate,
ServerKeyExchange, Finished]
Client → Server: EAP-Response/PEAP [ClientKeyExchange, Finished]
→ TLS 隧道建立(仅服务器认证)
Phase 2 - 隧道内认证
在加密隧道内:
Server → Client: EAP-Request/MSCHAPv2-Challenge [Challenge]
Client → Server: EAP-Response/MSCHAPv2-Response [Username, NT-Response]
Server → Client: EAP-Request/MSCHAPv2-Success [Challenge-ACK]
(或 MSCHAPv2-Failure)
→ PEAP 封装结束
Server → Client: EAP-Success
EAP-TTLS 与 PEAP 的区别
特性 |
PEAP |
TTLS |
|---|---|---|
隧道建立 |
TLS(服务器证书) |
TLS(服务器证书) |
隧道内方法 |
主要是 MSCHAPv2 |
PAP/CHAP/MS-CHAPv2/Kerberos/EAP |
灵活性 |
较低 |
更高(支持更多内部方法) |
Microsoft 支持 |
原生支持 |
需要第三方 supplicant |
EAP 方法选择指南
决策树:
需要最高安全性?
├── YES → 有 PKI 基础设施?
│ ├── YES → EAP-TLS(最佳选择)
│ └── NO → 部署 PKI,然后使用 EAP-TLS
└── NO → 使用现有 AD/LDAP?
├── YES → PEAP-MSCHAPv2(最简单)或 TTLS
└── NO → 考虑一次性令牌 + PEAP-GTC