802.1X 网络访问控制协议详解:从 EAP 框架到国密适配路径
协议概述
IEEE 802.1X 是基于端口(Port-Based)的网络访问控制协议,定义于 IEEE 802.1X-2020 标准。它解决了局域网环境中"谁可以接入网络"的问题,是现代企业网络准入控制(NAC, Network Access Control)的基础。
核心角色
802.1X 定义了三个关键角色:
| 角色 | 功能 |
|---|---|
| Supplicant(请求方) | 想要接入网络的客户端设备,运行 802.1X 客户端软件 |
| Authenticator(认证器) | 网络接入设备(交换机、无线 AP),控制端口的开闭 |
| Authentication Server(认证服务器) | 通常运行 RADIUS 协议,执行实际认证逻辑 |
工作原理
802.1X 的核心思想是"默认拒绝":在未通过认证前,端口只允许 EAPOL(EAP over LAN)帧通过,其他所有流量都被阻断。认证通过后,端口进入"已授权"状态,正常流量可以通过。
CODE
┌─────────────┐ EAPOL ┌─────────────┐ RADIUS ┌─────────────┐
│ Supplicant │◄───────────────►│ Authenticator │◄──────────►│ Auth.Server │
│ (客户端) │ (EAPOL帧) │ (交换机/AP) │ (RADIUS) │ (RADIUS) │
└─────────────┘ └─────────────┘ └─────────────┘EAP 扩展认证协议
802.1X 本身不定义具体的认证方法,而是依赖 EAP(Extensible Authentication Protocol) 框架。EAP 定义于 RFC 3748,后续由 RFC 5247 更新。
EAP 消息结构
EAP 消息格式如下:
CODE
+--------+--------+--------+----------------+
| Code | Ident | Length | Data |
| (1B) | (1B) | (2B) | (可变长) |
+--------+--------+--------+----------------+- Code:消息类型(Request=1, Response=2, Success=3, Failure=4)
- Ident:标识符,用于匹配请求和响应
- Length:消息总长度
- Data:具体认证数据,格式由 EAP 方法决定
常见 EAP 方法
| EAP 方法 | 全称 | 特点 |
|---|---|---|
| EAP-TLS | Transport Layer Security | 基于证书的双向认证,最安全 |
| EAP-PEAP | Protected EAP | 建立 TLS 隧道,内部使用 MS-CHAPv2 等 |
| EAP-TTLS | Tunneled TLS | 类似 PEAP,但更灵活 |
| EAP-SIM | GSM SIM 卡认证 | 用于移动网络 |
| EAP-AKA | 3GPP 认证与密钥协商 | 用于 3G/4G/5G 网络 |
| EAP-SM4 | 国密 SM4 认证(厂商扩展方案) | 国密场景适配方法,非 RFC 标准协议 |
802.1X 认证流程
典型三次握手
802.1X + EAP-TLS 的典型认证流程如下:
CODE
Supplicant Authenticator Auth.Server
│ │ │
│──EAPOL-Start──────►│ │
│ │ │
│◄──EAP-Request/ID──│ │
│ │ │
│──EAP-Response/ID──►│────EAP-Request/ID─►│
│ │ │
│◄──EAP-Request/TLS─│◄──EAP-Request/TLS─│
│ │ │
│──EAP-Response/TLS─►│────EAP-Response/TLS►│
│ │ │
│◄──EAP-Success─────│◄──EAP-Success─────│
│ │ │
│◄──EAPOL-Success───│ │
│ │ │
│ [端口已授权] │ │关键步骤说明
- EAPOL-Start:Supplicant 主动发起认证请求
- EAP-Request/ID:Authenticator 向 Supplicant 请求身份标识
- EAP-Response/ID:Supplicant 返回身份标识(通常是用户名或证书域名)
- EAP-Request/TLS:认证服务器要求 Supplicant 开始 TLS 握手
- EAP-Response/TLS:Supplicant 发送证书和签名
- EAP-Success/Failure:认证结果返回给 Supplicant 和 Authenticator
- EAPOL-Success:Authenticator 开启端口,允许正常流量通过
国密适配方案
GM/T 0024 中的 802.1X 扩展
GM/T 0024-2023《SSL VPN 技术规范》虽主要针对 VPN,但其国密 TLS 扩展思路可参考应用于 802.1X 场景。
在国密场景下,802.1X 的适配主要通过以下路径实现:
- EAP 方法国密化:定义基于 SM2 证书的 EAP-TLS 变体
- 密钥派生国密化:使用 SM3-KDF 替代 PBKDF2
- 会话密钥国密化:使用 SM4 替代 AES 作为会话加密算法
国密 EAP-TLS 流程
CODE
Supplicant Authenticator Auth.Server
│ │ │
│──EAPOL-Start──────►│ │
│ │ │
│◄──EAP-Request/ID──│ │
│ │ │
│──EAP-Response/ID──►│────EAP-Request/ID─►│
│ │ │
│◄──EAP-Request/S2C─│◄──EAP-Request/S2C─│
│ (SM2 Server Cert) │ (含 SM2 证书) │
│ │ │
│──EAP-Response/C2S─►│────EAP-Response/C2S►│
│ (SM2 Client Cert) │ (含 SM2 证书) │
│ │ │
│◄──EAP-Request/KDF─│◄──EAP-Request/KDF─│
│ (SM3-KDF 参数) │ │
│ │ │
│──EAP-Response/KDF─►│────EAP-Response/KDF►│
│ (SM4 会话密钥) │ │
│ │ │
│◄──EAP-Success─────│◄──EAP-Success─────│
│ │ │
│◄──EAPOL-Success───│ │
│ │ │
│ [端口已授权,使用 SM4 加密] │关键技术点
| 技术点 | 国际标准 | 国密适配 |
|---|---|---|
| 证书格式 | X.509 (RFC 5280) | GM/T 0015-2023 数字证书格式 |
| 签名算法 | ECDSA (SHA-256) | SM2 签名 (SM3) |
| 密钥交换 | ECDH (P-256) | SM2 密钥交换 (GM/T 0003.3) |
| 会话加密 | AES-128-GCM | SM4-CTR 或 SM4-GCM |
| 密钥派生 | PBKDF2-SHA256 | SM3-KDF (GM/T 0004) |
与相关协议的协同
802.1X + RADIUS
802.1X 认证服务器通常运行 RADIUS 协议(RFC 2865/2866)。RADIUS 负责将 EAP 消息从 Authenticator 透明转发到 Auth.Server。
CODE
Supplicant ←─EAPOL─→ Authenticator ←─RADIUS─→ Auth.Server
│
└──→ LDAP/Database (用户存储)RADIUS 属性中携带 EAP 消息:
- Attribute 1 (User-Name):用户名
- Attribute 79 (EAP-Message):EAP 消息体
- Attribute 80 (Requested-Action):请求操作
802.1X + MACsec
MACsec(IEEE 802.1AE)提供链路层加密,可与 802.1X 协同部署:
- 802.1X 完成用户认证
- 认证成功后,通过 EAP 密钥材料派生 MACsec 密钥
- MACsec 对链路层帧进行加密和完整性保护
CODE
┌─────────────────────────────────────────────────────┐
│ Layer 2 (MACsec) │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ 802.1X 认证 │────►│ MACsec 加密 │ │
│ │ (认证用户) │ │ (保护链路) │ │
│ └─────────────┘ └─────────────┘ │
└─────────────────────────────────────────────────────┘802.1X vs RADIUS vs TACACS+
| 对比项 | 802.1X | RADIUS | TACACS+ |
|---|---|---|---|
| 层级 | 数据链路层 | 应用层 | 应用层 |
| 用途 | 端口级访问控制 | 认证/授权/计费 | 设备管理认证 |
| 加密 | 无(依赖上层) | 仅密码加密 | 完整报文加密 |
| 国密适配 | 可扩展 | 较难 | 可行 |
安全分析与已知攻击
已知攻击向量
| 攻击类型 | 描述 | 防护方法 |
|---|---|---|
| EAP 降级攻击 | 攻击者迫使使用弱 EAP 方法 | 强制使用 EAP-TLS |
| 中间人攻击 | 伪造认证服务器 | 双向证书认证 |
| 字典攻击 | 对预共享密钥进行暴力破解 | 使用强密码 + 速率限制 |
| 端口绕过的物理攻击 | 直接连接交换机端口 | 部署 802.1X 于所有端口 |
| DHCP 饥饿攻击 | 耗尽 DHCP 地址池 | DHCP Snooping |
国密场景下的特殊风险
- SM2 证书兼容性:部分老旧设备不支持国密证书,需双证书方案
- 性能开销:SM2 签名验签比 ECDSA 慢约 20-30%,需评估设备性能
- 密钥管理:国密 SM4 密钥的生命周期管理需符合 GM/T 0034 要求
实施建议
推荐部署架构
CODE
┌─────────────┐
│ 认证服务器 │
│ (RADIUS) │
└──────┬──────┘
│ RADIUS
┌───────────────┼───────────────┐
│ │ │
┌──────▼──────┐ ┌──────▼──────┐ ┌──────▼──────┐
│ 核心交换机 │ │ 接入交换机 │ │ 无线 AP │
│ (802.1X) │ │ (802.1X) │ │ (802.1X) │
└─────────────┘ └─────────────┘ └─────────────┘
│ │ │
┌──────▼──────┐ ┌──────▼──────┐ ┌──────▼──────┐
│ 服务器区 │ │ 办公区 │ │ 访客区 │
└─────────────┘ └─────────────┘ └─────────────┘配置要点
- 强制使用 EAP-TLS:避免使用 EAP-MD5 等弱方法
- 双向证书认证:服务器和客户端都需验证对方证书
- CRL/OCSP 检查:确保证书吊销状态有效
- 端口默认关闭:所有端口默认为未授权状态
- 多因素认证:结合短信验证码或生物识别
相关实践
参考
- IEEE 802.1X-2020: Standard for Local and metropolitan area networks - Port-Based Network Access Control
- RFC 3748: Extensible Authentication Protocol (EAP)
- RFC 5247: EAP Key Management
- GM/T 0024-2023: SSL VPN 技术规范
- GM/T 0015-2023: 数字证书格式