AUTOSAR MACsec Key Agreement (MKA) 模块详解
目录
- 1. 概述
- 1.1 MACsec简介
- 1.2 MKA模块功能概述
- 2. 架构设计
- 2.1 AUTOSAR软件架构中的MKA模块
- 2.2 MKA模块内部结构
- 3. 密钥协商流程
- 3.1 MKA协议通信流程
- 3.2 MKA状态转换机制
- 4. 数据模型与API
- 4.1 MKA数据结构
- 4.2 关键API接口
- 5. 总结
- 5.1 MKA模块优势
- 5.2 应用场景
1. 概述
1.1 MACsec简介
MACsec(Media Access Control Security,介质访问控制安全)是IEEE 802.1AE标准定义的一种用于有线以太网的安全协议。它在OSI模型的第2层(数据链路层)工作,可以为以太网帧提供完整性检查、数据源认证和加密保护,实现点对点的链路层安全通信。
MACsec提供以下关键安全特性:
- 完整性验证:确保数据在传输过程中未被篡改
- 源认证:验证数据的发送方身份
- 保密性:通过加密保护数据内容
- 重放保护:防止攻击者重放先前捕获的数据包
在汽车网络环境中,MACsec为车载以太网提供安全保障,保护关键控制系统和数据免受攻击。
1.2 MKA模块功能概述
AUTOSAR MACsec Key Agreement (MKA) 模块是AUTOSAR经典平台中负责MACsec密钥协商的组件,实现了IEEE 802.1X-2020标准中定义的MKA协议。该模块的主要职责包括:
- 身份认证:识别和验证属于同一连接关联(CA)的通信对等方
- 密钥管理:生成、分发和更新MACsec安全通道所需的密钥
- 安全参数配置:为MACsec实体(SecY)提供必要的安全参数和密钥数据
- 维护安全通道:监控并维护已建立的安全通道(SC)和安全关联(SA)
MKA模块支持基于预共享密钥(CAK)的认证机制,并通过EAP-MKA协议在通信双方之间建立安全关系。通过MKA协议,通信双方可以安全地协商并交换会话密钥(SAK),从而启用MACsec保护的通信。
2. 架构设计
2.1 AUTOSAR软件架构中的MKA模块
MKA模块在AUTOSAR经典平台软件架构中的定位及其与其他模块的关系如下图所示:
图2.1:MACsec Key Agreement在AUTOSAR软件架构中的位置
从上图可以清晰地看到,MKA模块是AUTOSAR通信栈的重要组成部分,其主要特点和关系包括:
-
层次结构:
- MKA模块位于通信栈中,位于以太网接口(EthIf)之下,上层网络协议之上
- 通过以太网状态管理器(EthSM)与上层应用连接,提供链路状态信息
-
模块关系:
- 与EthIf的连接:MKA由EthIf触发启动MKA序列,并通过EthIf发送和接收MKA消息
- 与CSM的连接:依赖加密服务管理器(CSM)进行密钥派生和加密操作
- 与设备驱动的关系:通过EthIf间接与以太网驱动(EthDriver)、交换机驱动(EthSwitchDriver)和收发器驱动(EthTransceiverDriver)连接
- 与MACsec实体的关系:负责配置MACsec实体(SecY)的安全通道参数
-
内部结构:
- 每个MKA模块包含多个端口访问实体(PAE),每个PAE对应一个物理或虚拟以太网端口
- 每个PAE可以管理多个密钥协商实体(KaY),每个KaY对应一个连接关联密钥标识符(CKN)
这种架构设计使得MKA模块能够在AUTOSAR环境中与其他组件有效协作,为车载以太网网络提供安全保障。
2.2 MKA模块内部结构
MKA模块的内部结构及其组件关系如下图所示:
图2.2:MACsec Key Agreement模块数据模型
MKA模块的内部结构主要包括以下几个关键组件:
-
配置类型:
- Mka_ConfigType:模块主配置结构,包含PAE配置、加密算法配置和密码套件配置
- Mka_PaeConfig:PAE配置,包含PAE实例列表及可绕过MACsec的VLAN和EtherType列表
- Mka_PaeInstance:每个PAE实例对应一个物理或虚拟端口,包含KaY配置
- Mka_Kay:KaY配置,包含关键参数如优先级、生命周期和参与者列表
- Mka_KayParticipant:KaY参与者,每个参与者对应一个预共享密钥(CAK/CKN)
- Mka_CryptoAlgoConfig:加密算法配置,定义用于MKA的各种加密操作
- Mka_CipherSuites:密码套件配置,定义MACsec使用的加密和完整性算法
-
数据类型:
- Mka_MacSecConfigType:MACsec配置参数,包括验证模式、回放保护和保密性偏移
- Mka_PaeStatusType:PAE状态枚举,表示MKA协议的各种操作状态
- Mka_Stats_SecYType:MACsec统计信息,记录传输和接收的数据包统计
-
API函数:
- 初始化函数:如
Mka_Init
初始化模块 - 控制函数:如
Mka_SetEnable
控制MKA的启用状态 - 查询函数:如
Mka_GetPaeStatus
获取PAE状态 - 通知回调:如
Mka_RxIndication
接收MKA消息 - 周期函数:如
Mka_MainFunction
处理定时任务
- 初始化函数:如
这种模块化的内部结构使MKA能够灵活配置和运行,支持多端口、多密钥场景,同时保持清晰的组件责任分离。
3. 密钥协商流程
3.1 MKA协议通信流程
MKA协议的密钥协商流程是实现MACsec安全通信的关键环节。下图展示了基于预共享密钥的MKA协议通信序列:
图3.1:MACsec Key Agreement协议通信序列
MKA密钥协商流程的主要步骤包括:
-
初始化阶段:
- 双方通过配置获取预共享的连接关联密钥(CAK)和连接关联密钥名称(CKN)
- 物理链路建立后(LinkUp),EthIf触发MKA开始密钥协商
- 双方使用密钥派生函数(KDF)从CAK派生完整性检查密钥(ICK)和密钥加密密钥(KEK)
-
认证阶段:
- 密钥服务器构建MKA协议数据单元(MKPDU),包含基本参数集和功能参数集
- 客户端接收MKPDU并使用ICK验证完整性,处理参数集并识别对端为相同CA参与者
- 客户端构建回应MKPDU,密钥服务器验证并确认连接建立
-
密钥分发阶段:
- 密钥服务器生成安全关联密钥(SAK),并使用KEK加密
- 密钥服务器将加密的SAK包含在MKPDU中分发给客户端
- 客户端接收MKPDU,解密SAK并安装到MACsec实体(SecY)中
-
安全通信阶段:
- 客户端配置安全通道(SC)和安全关联(SA),并发送确认MKPDU
- 密钥服务器也安装SAK并配置对应的SC和SA
- 双方通知各自的EthIf模块MACsec链路就绪,上层网络协议开始通信
这个过程确保了只有合法的通信双方能够安全地建立MACsec保护的通信链路,并且密钥交换过程本身也受到保护,防止中间人攻击和密钥泄露。
3.2 MKA状态转换机制
MKA模块在运行过程中会经历一系列状态转换,反映了密钥协商和MACsec设置的不同阶段。下图展示了MKA状态机:
图3.2:MACsec Key Agreement状态转换图
MKA状态机包含以下关键状态和转换:
-
基本状态:
- 初始化(INITIALIZING):模块启动时的初始状态,加载配置和准备资源
- 运行中(OPERATIONAL):初始化完成后的基本运行状态,等待开始MKA协商
- 认证阶段(AUTHENTICATED):成功验证对端身份并确认密钥服务器后的状态
- 已安全(SECURED):MACsec保护已启用,数据传输受到加密和完整性保护
- 失败(FAILED):由于认证失败、密钥不匹配或通信超时等导致的错误状态
-
中间状态:
- 接收中(RECEIVING):正在建立接收路径
- 接收SA(RECEIVE_SA):正在接收和处理安全关联密钥
- 接收时间(RECEIVE_WHEN):正在同步时间参数
- 发送中(TRANSMITTING):正在建立发送路径
-
重要状态转换:
- 初始化完成后进入运行状态
- 接收有效MKPDU并认证成功后进入认证状态
- 成功建立发送和接收路径后进入安全状态
- 安全通道建立完成后回到运行状态,此时MACsec保护已启用
- 在通信中断或密钥超时等情况下可能进入失败状态
- 从失败状态可以通过重新初始化(
Mka_StartPae()
)恢复到运行状态
这种状态机设计使MKA模块能够清晰地跟踪密钥协商的进展,处理各种正常和异常情况,并在必要时进行恢复,确保车载网络通信的可靠性和安全性。
4. 数据模型与API
4.1 MKA数据结构
MKA模块定义了一系列数据结构来支持MACsec密钥协商和安全通道配置。这些数据结构可分为以下几类:
-
配置数据结构:
Mka_ConfigType
:总配置结构,包含所有MKA配置参数Mka_General
:通用配置,如版本信息API、调试支持和主函数周期Mka_PaeConfig
:PAE配置,定义端口控制实体的参数和绕过规则Mka_Kay
:KaY配置,包含密钥服务器优先级、生命周期和Hello时间等参数Mka_KayParticipant
:参与者配置,包含CAK/CKN和密码套件选择
-
运行时数据类型:
Mka_ValidateFramesType
:帧验证模式枚举(禁用/检查/严格)Mka_ConfidentialityOffsetType
:保密性偏移枚举(0/30/50)Mka_PaeStatusType
:PAE状态枚举,反映MKA协议状态Mka_MkaStatusType
:MKA启用状态枚举(启用/禁用)Mka_PermissiveModeType
:宽容模式枚举(允许/不允许)
-
统计和监控数据:
Mka_Stats_SecYType
:MACsec实体统计信息,包括发送和接收统计Mka_Stats_Tx_SecYType
:发送统计,如未标记包数和超长包数Mka_Stats_Rx_SecYType
:接收统计,如无效标签包数和未知SCI包数
这些数据结构形成了MKA模块的完整数据模型,支持模块的配置、运行和监控。特别是配置数据结构,它们通过分层组织,使得MKA能够适应不同的网络拓扑和安全需求,从单端口单密钥场景到多端口多密钥的复杂配置。
4.2 关键API接口
MKA模块提供了一系列API接口用于初始化、控制和监控MACsec Key Agreement过程。关键API包括:
-
初始化和版本信息API:
Mka_Init(configPtr)
:使用指定配置初始化MKA模块Mka_GetVersionInfo(versioninfo)
:获取MKA模块版本信息
-
状态控制API:
Mka_SetCknStatus(PaeId, CknId, status)
:设置特定CKN的启用状态Mka_GetCknStatus(PaeId, CknId, status)
:获取特定CKN的启用状态Mka_SetEnable(PaeId, status)
:启用或禁用特定PAE的MKA功能Mka_GetEnable(PaeId, status)
:获取特定PAE的MKA启用状态
-
PAE操作API:
Mka_GetPaeStatus(PaeId, status)
:获取PAE状态Mka_SetPaePermissiveMode(PaeId, mode)
:设置PAE的宽容模式Mka_StartPae(PaeId)
:启动PAE的MKA协议处理Mka_LinkStateChange(PaeId, LinkUp)
:通知链路状态变化
-
统计和监控API:
Mka_GetMacSecStatistics(SecYId, statistics)
:获取MACsec统计信息
-
回调通知函数:
Mka_RxIndication(PaeId, dataPtr, length)
:接收MKA消息通知Mka_TxConfirmation(PaeId)
:发送确认通知Mka_MacSecUpdateSecYNotification(SecYId, config)
:更新MACsec实体配置通知Mka_MacSecAddTxSaNotification(SecYId, SAId, pn, sakPtr, confidentiality)
:添加发送SA通知
-
周期任务函数:
Mka_MainFunction()
:处理MKA模块的周期性任务,如MKPDU发送和超时检查
这些API接口为上层模块(如EthIf和应用程序)提供了控制和监控MKA功能的能力,使得MACsec安全通信能够与车载网络的其他功能有效集成。
5. 总结
5.1 MKA模块优势
AUTOSAR MACsec Key Agreement模块为车载以太网安全通信提供了以下关键优势:
-
标准兼容性:
- 完全符合IEEE 802.1X-2020和IEEE 802.1AE-2018标准
- 遵循AUTOSAR经典平台规范,确保与其他AUTOSAR组件的兼容性
-
安全性:
- 提供基于预共享密钥的身份认证
- 支持安全密钥交换和周期性密钥更新
- 使用标准加密算法保护通信内容
-
灵活性:
- 支持多端口配置,适应不同的网络拓扑
- 支持多密钥(CKN)管理,允许不同安全域的隔离
- 可配置的绕过规则,允许部分流量不受MACsec保护
-
可靠性:
- 完善的状态管理和错误处理机制
- 支持失败恢复和重新认证
- 详细的统计和监控能力
-
性能:
- 针对汽车环境优化的启动时间和协议收敛时间
- 低资源消耗,适合嵌入式系统实现
5.2 应用场景
MACsec Key Agreement模块适用于多种车载网络安全场景:
-
域间通信安全:
- 保护不同车载域控制器之间的通信,如底盘域与动力域的数据交换
- 为车内区域网络提供安全隔离
-
外部连接保护:
- 保护车辆与外部诊断设备的连接
- 防止未授权设备接入车载网络
-
关键系统保护:
- 为ADAS(高级驾驶辅助系统)和自动驾驶系统提供通信安全
- 保护安全关键功能的数据传输
-
多层安全架构:
- 作为车载网络安全的第一道防线
- 与上层安全机制(如传输层安全TLS)配合,形成深度防御架构
通过在链路层提供强大的安全保障,MACsec Key Agreement模块为现代车载网络应对日益增长的网络安全威胁提供了坚实基础,是实现安全互联汽车的关键技术组件。