本文是「以太网IEEE标准系列」第三篇,聚焦 IEEE Std 802.1X™-2020(Port-Based Network Access Control)。本文分两部分:第一部分解析通用标准(认证架构、MKA密钥层次、EAPOL协议),第二部分对照 OPEN Alliance TC17 Automotive MKA Specification v1.0(2025-02)的车载精简要求。
第一部分:标准篇
一、三个核心问题
❓ Q1:这个标准是什么?
IEEE 802.1X 全称 Port-Based Network Access Control(基于端口的网络访问控制),是 IEEE 802.1 工作组的标准之一,2020 版本号是 802.1X-2020。
它定义了一种通用架构,通过在每个 LAN 端口上划分 受控端口(Controlled Port) 与 非受控端口(Uncontrolled Port):
- 非受控端口 —— 不管主机有没有通过认证,只允许认证相关的协议帧通行(如 EAPOL)。
- 受控端口 —— 通过认证才”打开”,正常业务数据只能从这扇门进出。
❓ Q2:解决什么问题?
| 安全威胁 | 802.1X 的应对 |
|---|---|
| 未经授权设备私自接入 LAN,获取 IP 后渗透内网 | 端口默认关闭 → 必须通过 EAP 认证才能打开受控端口 |
| 链路窃听(Wi-Fi/可接入的铜缆/光模块) | 协商出 CAK → 派生 KEK → Key Server 分发 SAK → MACsec 帧级加密 |
| 多设备/跨域/跨厂商互通 | 标准化协议:EAP over LAN (EAPOL)、MACsec Key Agreement (MKA) |
| CA 内群组成员变动(新增/离开/失效) | MKA Live Peer List + 选举 Key Server + 周期性重协商 |
❓ Q3:如何应用?
标准第 7 章列出 7 类典型应用场景,工业落地通常从中选择:
| 场景编号 | 名称 | 关键组件 | 典型设备 |
|---|---|---|---|
| 7.1 | 物理安全 LAN 的主机接入 | PAC / PAE | 企业办公有线端口 |
| 7.2 | 物理安全 LAN 的基础设施互联 | PAC / PAE | 机房内交换机-交换机互联 |
| 7.3 | 点对点 MACsec 主机接入 | SecY + PAE | 数据中心 ToR-Leaf |
| 7.4 | MACsec 基础设施 LAN | SecY + PAE | 跨机柜/跨机房骨干 |
| 7.5 | 多接入 LAN 的 MACsec 主机接入 | SecY + 虚拟端口 | 工业以太网 / daisy-chain |
| 7.6 | MACsec 组播 | 组 CA(group CAK) | 视频分发 / 软件定义车 CAN 替代 |
| 7.7 | Provider Bridged Network 中的 MACsec | SecY + 桥接 | 运营商接入网 |
二、核心架构:三角色与双端口
2.1 系统角色三件套
802.1X 引入了 EAP 协议里规定的三个角色:
1 | ┌──────────────────┐ |
⚠️ Authenticator 与 Authentication Server 不必同机。大多数企业会把服务器独立部署,通过 RADIUS 把 Authenticator 转发过来的 EAP 包再处理一次。
2.2 端口的”两扇门”
这是整个标准最核心的比喻 — 每个端口都存在两扇门:
| 端口类型 | 状态 | 允许流通的帧 |
|---|---|---|
| Uncontrolled Port | 始终打开 | 仅 EAPOL、Announcement 等”用来开门”的协议帧 |
| Controlled Port | 默认关闭,通过认证后才”受控”打开 | 用户业务数据(被 MACsec 加密或被 PAC 转发) |
标准里用两个组件去”开门”:
- PAE(Port Access Entity):负责执行 EAP 认证 + 派生密钥 + 跑 MKA。详细行为见第 12 章。
- PAC(Port Access Controller):轻量级”协议垫片”,在没有 MACsec、只靠物理隔离保证安全的点对点链路上简单放行/隔离流量。详细行为见第 6.4 节。
二者关系: PAE 兼容 PAC。一款实现可以只做 PAC(物理安全 LAN)或 PAE(完整加密链路),也可以同时启用。
三、密钥层次(Key Hierarchy)
802.1X 的密钥体系是整个 MACsec 链路安全的核心,它将「身份证明」和「数据加密」两个职责解耦:
1 | ┌─────────────────────────────────────────────────────────────┐ |
🔑 一句话:CAK 是”信任根”,由 EAP 协商;SAK 是”加密钥匙”,由 MKA 在 CA 内分发。
3.1 三种 CAK 来源对比
| 类型 | 产生方式 | 适用场景 | Automotive MKA 态度 |
|---|---|---|---|
| EAP 派生(pairwise) | EAP 完成后 KDF(MSK, “IEEE8021 EAP CAK”) | 默认推荐,适合已知用户的接入网 | ⚠️ 可用,但非首选 |
| 预共享密钥(PSK) | 管理员手工配置 pairwise/group CAK + CKN | 无 AAA 环境、点对点专线、车载网络 | ✅ 推荐首选 |
| 组 GAK(group CAK) | 多个 pairwise CAK 一起”再分发”出一个被组内成员共同持有的 CAK | 7.6 节 MACsec 组播 | ❌ 不支持(AutoMKA-03008) |
标准在 6.2.2 节明确禁止”用 EAP 派生出来的 pairwise CAK 再当 group CAK 用”——这是为了防止中间人拦截后扩展权限面。
3.2 关键派生参数
- KDF:与 NIST SP 800-108 计数器模式兼容,PRF 用 AES-CMAC-128 / AES-CMAC-256。
- CAK Label:
"IEEE8021 EAP CAK"(UTF-8, 16 字节,带特定空格布局,见 6.2.2)。 - CKN Label:
"IEEE8021 EAP CKN",来源:EAP Session-ID(16 字节)。 - ICK/KEK 长度:与 CAK 长度相同。
四、协议机制详解
4.1 EAP 认证 —— PACP 状态机
PACP(Port Access Control Protocol)是 802.1X 在链路层”装 EAP”的载体。它定义了两个对称的状态机:
- Supplicant PACP(8.7):7 个状态,典型为
Initialize → Disconnected → Connecting → Authenticating → Authenticated → Aborting → Held → Restart。 - Authenticator PACP(8.9):典型为
Initialize → Disconnected → Connecting → Authenticating → Authenticated → Aborting → Held → Restart。
1 | Authenticator (交换机) Supplicant (终端) |
在 Automotive MKA 场景下,这个握手会被 PSK 模式替代:EAP-TLS 等方法不需要,CAK 由预共享密钥直接提供。
4.2 MKA(MACsec Key Agreement)——最核心的章节
MKA 是 802.1X-2020 第 9 章的精华,本质是 “在一个 CA 内,选出一个 Key Server,周期性广播 SAK 给其他成员”。
4.2.1 核心概念
| 概念 | 含义 |
|---|---|
| MKA Participant | 每个端口上”跑 MKA 的实例”,持有 CAK,生成 Member Identifier(MI)= 1-byte MI 编号 + 6-byte 端口 MAC |
| Key Server | 由最低 Key Server Priority 选举产生(可平局后看 MI 大小),负责生成 + 分发 SAK |
| MKPDU | EAPOL Packet Type=5,广播组地址 01-80-C2-00-00-03 |
| ICV | 用 ICK 对 MKPDU 计算的 MAC,等于”我拥有此 CAK”的实时证明 |
| Live Peer List / Potential Peer List | 在 MKPDU 中广播对组成员的心跳 |
| SAK 轮换 | 默认每 SAK Retire Time 轮换一次 |
4.2.2 MKA 在点对点链路上的典型流程(9.17)
- A、B 上线 → 各自广播 MKPDU(Basic Param + Live Peer List 自报)。
- 双方通过 ICV 互相认证 → 任一方发现自己有权 Key Server 时开始产 SAK。
- Key Server 把 SAK 用 KEK 加密后放在 Distributed SAK 集里广播。
- 双方都安装 SAK 到 SecY → 业务数据开始走 MACsec。
- SAK 即将到寿命 → 提前一个新 SAK 安到 MACsec SAK Use 集中告知 → 到时无缝轮换。
4.2.3 9.8 SAK 生成规则
- Key Server 强 RNG + 各成员贡献:SAK 由 Key Server 的强 RNG 加上 Live Peer List 成员的 MI 拼接后 KDF 得到(9.8.1 节)。
- 分布式 SAK 派发:Key Server 用 KEK 对 SAK 做 AES Key Wrap(RFC 3394)后放入 MKPDU 的 Distributed SAK 集广播。
- SAK 缓存:旧 SAK 在 SAK Retire Time 内保留,供抗重放使用。
4.2.4 9.12 CA Formation
- CA(Connectivity Association)是两个或多个端口之间的安全关联域,共享同一 CAK。
- CA 可包含最多 30 个 MKA Participant(9.1d 节)。
- 组 CAK 分发:Key Server 在 pairwise CA 上再发一个 Distributed CAK Set,把 group CAK 加密派发给大家。
Automotive MKA 将这一数字缩减为最多 2 人/CA(AutoMKA-03001)。
4.2.5 MKA 定时器参数
| 参数 | 默认值 | 说明 |
|---|---|---|
| MKA Hello Time | 2 s | MKPDU 广播间隔 |
| MKA Life Time | 6 s | 成员被认为掉线的超时 |
| SAK Retire Time | 3 s | 旧 SAK 保留时间 |
| Bounded Hello Time | 0.5 s | delay protection 开启时 |
4.2.6 9.4.3 Liveness 判断
- 可接受的最新 MN:对应最近 3 个发出的 MKPDU 的 Message Number。
- 收到更高 MN 的 MKPDU → 对方存活,刷新 Life Timer。
- 超过 Life Time 没收到 → 对方掉线,从 Live Peer List 移除。
五、EAPOL 帧格式
EAPOL(第 11 章)是 EAP 在 LAN 上的封装,以太网类型 0x888E,分为:
| Packet Type | 值 | 用途 |
|---|---|---|
| EAPOL-Start | 0x00 | Supplicant 触发认证(可省) |
| EAPOL-EAP | 0x04 | 核心:承载 EAP 包 |
| EAPOL-MKA | 0x05 | 核心:承载 MKPDU,广播 CA 内心跳/SAK |
| EAPOL-Announcement | 0x06 | 网络身份/能力广播 |
| EAPOL-Announcement-Req | 0x07 | 请求对方发 Announcement |
多播/单播:大多数 EAPOL/EAPOL-MKA 用组地址
01-80-C2-00-00-03(便于发现),EAP-Success/EAP-Failure 用对端单播。
六、802.1AE MACsec 的协作关系
802.1X 真正强大的地方,在于它为 MACsec 提供”密钥分发通道”:
1 | IEEE 802.1X MKA IEEE 802.1AE MACsec |
🔑 一句话:CAK 是”信任根”,由 EAP 协商;SAK 是”加密钥匙”,由 MKA 在 CA 内分发。二者解耦带来极大灵活性——一份 CAK 可以轮换出多把 SAK。
第二部分:车载篇——OPEN Alliance Automotive MKA
本部分对照 OPEN Alliance TC17 Automotive MKA Specification v1.0(2025-02, Final, Public),提取所有规范级需求(AutoMKA-xxxxx),说明车载实现与通用 IEEE 802.1X-2020 的差异。
七、车载 MKA 的设计目标
OPEN Alliance TC17 制定 Automotive MKA 的三个核心目标:
- 缩短最坏启动时间 — 从 IEEE 标准的 8 秒压缩到 ≤ 30 ms (AutoMKA-01014)
- 移除不需要的功能 — 精简掉 in-service upgrade、MKA suspension、distributed CAK、KMD、NID 等车载用不到的特性
- 添加车载特有功能 — 多 CKN 并行支持(适配不同车型项目)、快速 Link Down 恢复、API 管理接口
与通用 MKA 的兼容性:Automotive MKA 与标准 IEEE 802.1X MKA 可互操作,前提是两端配置为仅使用共同特性。但性能会下降到不符合 AutoMKA-01014 的 30 ms 要求。
八、Automotive MKA 必选能力集
以下能力在 Automotive MKA 实现中是必须支持的:
8.1 MACsec 能力协商(AutoMKA-01001, 01004, 01005)
1 | Automotive MKA 必须支持以下 MACsec 能力: |
Confidentiality Offset 30 和 50 是可选的(AutoMKA-01002),目前没有已知的车载用例需要它们。
8.2 启动时间:≤ 30 ms(AutoMKA-01014)
这是 Automotive MKA 与通用标准最大的工程差异:
| 参数 | IEEE 802.1X MKA | Automotive MKA |
|---|---|---|
| 最坏启动时间 | 8 秒(默认) | ≤ 30 ms |
| 测量起点 | Link Up | Link Up |
| 测量终点 | SAK_USE RX/TX 建立(两端) | 相同 |
⚠️ 注意:该要求适用于单个 switched Ethernet 链路。ECU 级的性能目标受 SoC 型号、端口数量、HSM 延迟、MDIO 性能等因素影响,可能无法在所有 ECU 上实现(AutoMKA §1 注)。
8.3 Peer List 上限:2(AutoMKA-03016)
通用标准支持最多 30 个 MKA Participant,但 switched Automotive Ethernet 链路只有两个对等节点,因此 Automotive MKA 将 Peer List 大小限制为 2:
- 最小内存分配:1(正常 Peer) + 1(Reset 场景备用)
九、Automotive MKA 删除的功能
以下通用 MKA 特性在 Automotive MKA 中不支持(可在实现中省略):
| 特性 | IEEE 802.1X 章节 | Automotive MKA 要求 |
|---|---|---|
| In-service upgrades | 9.18 节 | ❌ 不支持(AutoMKA-03006) |
| MKA Suspension | 9.19 节 | ❌ 不支持(AutoMKA-03007) |
| Distributed CAKs | 9.12 节 | ❌ 不支持(AutoMKA-03008) |
| Key Management Domains(KMD) | 6.3.5 节 | ❌ 不支持(AutoMKA-02009) |
| Network Identifiers(NIDs) | 6.3.5 节 | ❌ 不支持(AutoMKA-02010) |
| Cipher Suite 协商 | 9.13 节 | ❌ 不支持(AutoMKA-11001) |
| Secure Announcements | 9.13 节 | ❌ 不支持(AutoMKA-02001) |
| 动态降级 MACsec | 9.13 节 | ❌ 不支持(AutoMKA-02011) |
| Replay Protection 关闭 | 可配置 | ❌ 不支持,Replay Window 固定=0(AutoMKA-01012/01013) |
为什么删除这些? 车载网络是静态设计的,两点之间只有一个网络(AutoMKA-02001 注);车内不需要组播(group CAK);KMD/NID 等多域特性在单一车型内无意义;Cipher Suite 协商增加不必要的复杂度和攻击面。
9.1 Replay Protection 固定为窗口=0(AutoMKA-01012, 01013)
1 | Replay Protection Window = 0: |
十、MKA 传输优化:10ms 起步的 doubling ramp-up(AutoMKA-03003, 03004)
通用标准使用固定的 2 秒 Hello Time,Automotive MKA 使用加速 ramp-up 序列:
1 | Automotive MKA 启动时序(Link Up 后): |
与通用 MKA 的区别:
| 事件 | 通用 MKA | Automotive MKA |
|---|---|---|
| 链路 Up 后首次发送 | 等 2s Hello Time | 立即发送,10ms 后重试(AutoMKA-03004) |
| 收到未知 Peer | 等 Hello Time 到期 | 立即响应(AutoMKA-03003) |
| Peer 变 Live | 等 Hello Time 到期 | 立即发送 SAK(AutoMKA-03003) |
| MN Liveness 判断 | 最近 3 个 MKPDU | 最近 3 个 MKPDU(与通用一致)(AutoMKA-03005) |
十一、Key Server 优化(AutoMKA-03007, 03008)
11.1 Key Server Priority 固定(AutoMKA-03007)
通用标准 Key Server Priority 是可配置参数,Automotive MKA 简化为只有两个有效值:
| Priority 值 | 含义 | 典型用途 |
|---|---|---|
| 0 | 始终是 Key Server | 交换机侧(网关/域控制器) |
| 255 | 永不主动成为 Key Server | 终端侧(sensor ECU) |
这样设计确保 link up 后没有选举争议,Key Server 直接开始生成和分发 SAK,零协商延迟。
11.2 SAK 提前分发优化(AutoMKA-03010)
1 | 通用流程: |
此优化在 Key Server 安装 SAK 时间较长时(例如 MACsec 在外置 PHY,通过 MDIO 配置)尤其有效。
11.3 强制立即 rekey(AutoMKA-03011)
如果 Key Server 收到 Peer 的 MKPDU 满足以下任一条件,立即触发 rekey:
- MKPDU 没有 SAK Use
- MKPDU 有无效 SAK Use
- MKPDU 有空 SAK Use
十二、PAE 状态机优化(AutoMKA-05001, 05002, 05003)
12.1 多状态一次 tick 完成(AutoMKA-05001)
通用标准要求 PAE 状态机逐个状态切换,Automotive MKA 允许一次 tick 内到达终态:
1 | 通用 MKA PAE 状态机(逐状态跳转,每事件一个状态): |
12.2 unauthAllowed 和 unsecureAllowed 固定为 never(AutoMKA-05002, 05003)
| 参数 | IEEE 802.1X | Automotive MKA |
|---|---|---|
| unauthAllowed | 可配置 | 固定=never(AutoMKA-05002) |
| unsecureAllowed | 可配置 | 固定=never(AutoMKA-05003) |
这意味着未认证状态下,即使 MACsec 未建立,受控端口也绝对不放行任何非认证帧。只有认证完成且 SAK 安装后,业务流量才放行。
12.3 删除的 PAE 功能(AutoMKA-05004)
| 删除功能 | IEEE 章节 | 说明 |
|---|---|---|
| Network Identities | 12.5.3 | NID 不支持,自然删除 |
| Session Statistics | 12.5.4 | 车内诊断不需要 |
| Virtual Port Creation/Deletion | 12.7 | 点对点链路不需要虚拟端口 |
| EAPOL Frame Reception Statistics | 12.8.1 | 精简 |
| EAPOL Frame Reception Diagnostics | 12.8.2 | 精简 |
| EAPOL Frame Transmission Statistics | 12.8.3 | 精简 |
12.4 CAK Cache KMD/NID 变为可选(AutoMKA-05005, 05006)
通用标准要求 CAK Cache 必须包含 KMD 和 NID,Automotive MKA 将其改为可选。
十三、诊断与管理 API(AutoMKA-06001)
通用标准依赖 SNMP MIB 进行管理,Automotive MKA 不使用 SNMP 和 MIB,改为 API 方式:
1 | 必须支持的 API(所有 API 参数名和类型均可在实现中做等价映射): |
十四、配置管理(AutoMKA-08001, 08002, 08003, 08004)
14.1 全局配置项(所有端口统一)
| 参数 | 默认值 | 说明 |
|---|---|---|
| Hello time | 2 s | 标准 MKA 默认值 |
| Bounded hello time | 0.5 s | delay protection 开启时 |
| Lifetime | 6 s | 标准 MKA 默认值 |
| SAK retire time | 3 s | 标准 MKA 默认值 |
| Hello time ramp | [10ms, 20ms, 40ms, …, 2s] | doubling 序列(AutoMKA-08003) |
| Rekey 周期 | 可配置(0s~24h) | SAK 生命周期(AutoMKA-08002) |
14.2 每端口配置项(AutoMKA-08004)
| 配置项 | 选项 | 说明 |
|---|---|---|
| PSK(CAK & CKN) | 16~32 字节 | 预共享密钥 |
| Include SCI in SecTAG | OFF/ON | 仅在某些架构下需要 |
| MKA enabled | true/false | 端口级开关 |
| MACsec enabled | true/false | MACsec 使能 |
| KAY role | SERVER / CLIENT | AUTO 不支持(AutoMKA-08004) |
| Delay protection | ON / OFF | 开启时使用 bounded hello time |
| Participant activation | DISABLED / ONOPERUP / ALWAYS | 激活时机 |
| Logon enabled | true/false | MKA 会话开关 |
| Use_EAP | NEVER / IMMEDIATE / ON_MKA_FAIL | EAP 用途 |
| Cipher preference | 单条目(无协商) | 固定 cipher suite |
| Confidentiality | integrity_only / integrity_with_confidentiality | 是否加密 |
| Confidentiality offset | 0 / 30 / 50 | 0 必选,30/50 可选 |
十五、高级特性
15.1 多 CAK/CKN 并行支持(AutoMKA-09001, 09002, 09003)
一辆车可能有多个车型项目,同一 ECU 会被用于不同项目而有不同 CAK 配置。Automotive MKA 支持:
1 | ECU 启动时: |
- Link Down 或 MKA 会话终止时,所有 CKN 恢复发送,下次 Link Up 重新协商(AutoMKA-09002)。
- 最大并行 CKN 数量由实现决定(AutoMKA-09003 注)。
15.2 快速 Link Down 恢复(AutoMKA-10001)
通用标准链路 Down 后,Peer 需等待 6 秒 Life Time 才认为对方掉线。Automotive MKA 通过 MI 刷新机制加速:
1 | Automotive MKA 链路 Down 恢复流程: |
通用 MKA 实现需要在收到新 MI + 本端 MI 在对方 Potential/Live Peer List 中时,才确认是新会话(AutoMKA-03006)。
15.3 MACsec 禁用时的固定时序(AutoMKA-12001, 12002)
Automotive MKA 支持在 MACsec 禁用的情况下运行 MKA,此时:
- MACsec 与 MKA 的联动被禁用(不安装 filter、不安装 key、不读取 PN/XPN 计数器)
- 配置自动设为
MACsec_desired=false+ 显式选择 Null Cipher Suite - 链路 Up 信令延迟与正常 MKA 启动时序一致(~30 ms),避免应用层因时序差异而需特殊处理
十六、Automotive MKA 与 Automotive MACsec 的协同
1 | ┌──────────────────────────────────────────────────────────────────┐ |
本节协同关系基于 OPEN Alliance Automotive MACsec Specification v1.0 §2(AutoMACsec-01001
01008)和 Automotive MKA Specification v1.0 §1§4。
总结
标准部分(★ 三句话回顾 ★)
- 是什么:IEEE 802.1X 是基于 MAC 端口的”认证 + 授权 + 密钥协商”通用框架,通过受控/非受控端口二象限模型隔离未授权流量。
- 解决什么:阻止未授权 LAN 接入、把密钥分发链路(MKA)与 MACsec(数据加密)解耦,使 CAK/SAK 滚动轮换成为可能。
- 怎么用:选 PAE 还是 PAC,选 EAP-TLS / PSK / 组 CAK;按 Clause 7 七大场景(物理安全 / 点对点 MACsec / 多接入 / 组播 / Provider Bridged)落地。
车载部分(★ Automotive MKA 要点 ★)
- ≤ 30 ms 启动:Doubling ramp-up Hello Time(10ms→20ms→40ms→…→2s) + 立即响应未知 Peer + 固定 Key Server Priority(0/255)。
- 删除不需要的特性:无 KMD/NID、无 in-service upgrade/suspension、无 distributed CAK、无 cipher suite 协商。
- 车载特有增强:多 CKN 并行支持(首个成功者建立 MACsec)、MI 刷新快速 Link Down 恢复、Replay Window 固定=0、API 管理接口替代 SNMP。
版权声明: 本文引用了 IEEE Std 802.1X-2020 和 OPEN Alliance Automotive MKA Specification v1.0 的内容,版权归各标准组织所有,引用仅供学习。