车载以太网MACsec

车载以太网MACsec

1.概述

MACsec(Media Access Control Security)定义了基于 IEEE 802 局域网络的数据安全通信的方法。MACsec 可为用户提供安全的 MAC 层数据发送和接收服务,包括用户数据加密(Confidentiality)、数据帧完整性检查(Data integrity)、数据源真实性校验
(Data origin authenticity)及重放保护(Replay protection)。
MACsec 主要涉及 IEEE802.1AE 和 802.1X 两个协议规范:IEEE802.1AE-2006 定义了数据封装、加密和认证的帧格式;802.1X-2010 中的 MKA(MACsec Key Agreement) 定义了密钥管理协议,提供了 Peer-to-Peer 方式或Group 方式的密钥建立机制,使用MKA 协议协商生成的密钥对已认证的用户数据进行加密和完整性检查,可以避免端口处理未认证设备的报文或者未认证设备篡改的报文。
MACsec 不是对现有端到端IPSec、TLS 等三层安全技术的替代,而是它们的互补技术。MACsec 使用二层加密技术,提供逐跳设备的数据安全传输,适用于政府、军队、金融等对数据机密性要求较高的场合,如局域网两台交换机设备之间经过光传输设备,通过MACsec 加密技术可保证数据在中间传输设备上安全传输。

2.MACsec技术原理

2.1 MACsec 组网模式

MACsec 常用的组网模式有:面向主机点到点模式、面向设备点到点模式。
车载以太网MACsec 不支持面向主机点到点模式,支持面向设备点到点模式,本文描述内容为面向设备点到点模式。
在这里插入图片描述
面向设备点到点模式

2.2 MACsec 基本概念

 MKA
MKA(MACsec Key Agreement protocol)用于 MACsec 数据加密密钥的协商协议。
 CA
CA(Secure Connectivity Association,安全连接关联)指通过一个 LAN 互连的支持
MACsec 的全连接的端口集合。CA 由 MKA 创建和维护,CA 成员称为 CA 的参与者。
 CAK
CAK(Secure Connectivity Association Key,安全连接关联密钥)不直接用于数据报文的加密,由它和其他参数派生出数据报文的加密密钥。CAK 可以在 802.1X 认证过程中下发,也可以由用户直接静态配置。
 CKN
CKN(Secure Connectivity Association Key Name,安全连接关联密钥名称)是对应CAK 的名称。
 SC
SC(Secure Channel,安全通道)是 CA 参与者之间用于传输MAC 安全数据的安全通道。每个 SC 提供单向点到点或点到多点的通信。如对于点对点的两台设备 A 和设备 B, A 到 B 单向数据转发链路可认为一个 SC(a) ,B 到 A 单向数据转发链路可认为另外一个 SC(b) 。
 SCI
SCI(Secure Channel Identifier,安全通道标识符)是由 6 字节的 MAC 地址和 2 字节的 Port Identifier 组成,唯一标识系统内的安全通道。
 SA
SA(Secure Association,安全关联)是 SC 安全通道的安全参数集合。包括对数据进行加密算法套件、进行完整性检查的密钥等。一个安全通道中可包含多个 SA,每一个SA 拥有一个不同的密钥,这个密钥称为 SAK。
 SAK
SAK(Secure Association Key,安全关联密钥)由 CAK 根据算法推导产生,用于加密安全通道间传输的数据。MKA 对每一个 SAK 可加密的报文数目有所限制,当使用某SAK 加密的 PN 耗尽,该 SAK 会被刷新。例如,在 10Gbps 的链路上,SAK 最快 4.8 分钟刷新一次。
 ICV
ICV(Integrity Check Value,完整性校验值)是报文完整性检验值,在报文发送端,通过某种算法对报文数据单元计算产生一个检验值,将此检验值放在报文的尾部,报文接收端通过相同算法得到 ICV 值与报文携带的 ICV 进行比对,如果这两个 ICV 相同说明报文没有被修改,否则该报文被丢弃,保证了报文的数据完整性。
 ICK
ICK(ICV Key,ICK 密钥)由 CAK 根据算法推导产生,只用于计算 MKA 协议层面报文的 ICV 值,而数据层面没有专门的 ICK。
 KEK
KEK(Key Encrypting Key,密钥加密密钥)由 CAK 根据算法推导产生,用于加密 SAK, 通过 MKA 密钥协议报文将 SAK 密钥发送给同一个 CA 内的参与者,防止用于数据加密的 SAK 在传输过程中被窃取。
 PN
PN(Packet Number,报文编号)对应 SECTAG 中的一个字段,发送方发报文每次按1 递增,用于接收方进行重放保护,当SA 的 PN 达到 0xFFFFFFFF 时,SAK 必须要进行切换,以 10GE 链路为例,最快 4.8 分钟 PN 就会耗尽,一般 PN 即将耗尽时(假设PN 达到 0xC0000000),也可以对 SAK 进行切换。
 Key Server
Key Server 决定加密方案和进行密钥分发的 MKA 实体。
 Supplicant
选举出 Key Server 之后,Supplicant 是确定为非 Key Server 的实体。
 Confidentiality Offset
指加密偏移,取值{0, 30, or 50},SECTAG 后面的Confidentiality Offset 个字节不加密,目的是为了适应某些需要识别 IPv4/v6 头的应用(比如负载均衡)。
 MACsec Mode
指加密模式,包含 None(即不加密,不校验,不封装)、Normal(即既加密又校验), Integrity-only(只做完整性验证、不加密),默认为 None。

2.3 MACsec 运行机制

MACsec 运行机制主要分为三个阶段:CAK 获取、MKA 密钥协商、MACsec 数据加解密。
如图所示,面向设备点到点 MACsec 组网运行机制,两台设备上预配置相同的CAK,两台设备会通过 MKA 协议选举出一个 Key Server,Key Server 决定加密方案,Key Server 会根据 CAK 等参数使用某种加密算法生成 SAK 数据密钥,由 Key Server 将 SAK 分发给对端设备,这样两台设备拥有相同的 SAK 数据密钥,可以进行后续MACsec 数据报文加解密收发。
在这里插入图片描述
面向设备点到点 MACsec 运行机制图

2.4 MACsec 密钥体系

2.4.1 密钥体系结构

在这里插入图片描述
基于静态 CAK 的MACsec 密钥体系结构图:
如图 所示,基于静态 CAK 的 MACsec 密钥体系结构,生成 SAK 密钥流程如下:
1、在同一个安全链接关联 CA 成员 CA(a)和 CA(b)上,用户静态配置相同的(CKN,CAK) 产生的(ICK,KEK)是一样的,用于后续发布 SAK 对其本身进行加密,防止 SAK 明文传递过程中泄密;
2、在 Key Server 基于用户配置的(CKN,CAK)会生成 SAK,并且在本地安装 SAK, 用于 Key Server 端收发数据报文的加解密;
3、Key Server 将 SAK 发布给对端 Supplicant 时,通过 KEK 加密 SAK 密钥本身,由ICK 通过某种算法生成 ICVs 用于校验报文的完整性,在 Key Server 上将 ICVs 值放在MKA 协议报文尾部,将经过KEK 加密的SAK 一起通过MKA 协议报文发送给Supplicant;
4、Supplicant 接收到 MKA 协议报文时,根据其中的 CKN 查找 CAK 和 ICK,如果没有查找到则认为不是来自相同的 CA 并丢弃,查找到之后对 MKA 报文主体进行 ICV 计算得到 ICVc,如果与报文中的 ICVs 不相同,则认为报文被修改(MKA 报文中的 CKN 和ICVs 没有经过 KEK 加密);
5、经过ICV 校验通过之后,使用 KEK 解密出 SAK,Supplicant 进行 SAK 安装,用于Supplicant 端收发数据报文的加解密。

2.4.2 密钥派生关系

在这里插入图片描述
密钥派生关系图
如图 所示,CKN、CAK 采用 KDF 算法生成 SAK、KEK、ICK、ICV,该图展示了它们之间的派生关系。
Key Server 和 Supplicant 两边配置(CKN,CAK)生成 KEK、ICK、ICV,Key Server 同时生成 SAK 并且在本地安装,然后 Key Server 将 SAK 用 KEK 加密,将加密后的SAK 通过 MKA 协议报文发送给 Supplicant,MKA 协议报文中尾部包含 ICV 字段。Supplicant 收到协议报文通过 ICV 检验之后,将 SAK 密钥解密并在 Supplicant 上安装,这样 Key Server 和 Supplicant 两边转发层面都用相同的 SAK 密码,可以对收发的数据报文进行加解密通信。

2.5 MKA 密钥协商交互流程

在这里插入图片描述
MKA 协议协商流程图
如图 所示,SAK 密钥协商交互流程如下:
1、选举 Key Server
CA 成员之间通过 EAPOL-MKA 协议报文交互选举出一个 Key Server,负责加密套件的选择、密钥管理及分发。CA 成员可以设置 Key Server Priority 优先级用于 Key Server 角色的协商,Key Server Priority 值越小,优先级越高。如果 Key Server Priority 相等, 则选择安全通道标识 SCI(即 MAC 地址+端口 ID)小的为 Key Server。
2、SAK 密钥协商
Key Server 由 CKN 和 CAK 计算生成 SAK 密钥后,先在本地转发层面安装 SAK,同时使能允许接收方向数据解密,然后将加密SAK 通过EAPOL-MKA 发布给对端Supplicant; Supplicant 接收到 SAK 解密之后在本地安装,同时使能数据双向收发加解密;接着Supplicant 再发送消息通知 Key Server 打开发送方向的数据加密,Key Server 再给Supplicant 应答一个确认消息,这样 CA 成员之间完成密钥协商能够开始正常转发数据。
MI(Member Identifier)是成员标识符,MN(Message Number)是消息编号,
(MIA,MN=i)代表成员标识符 A 的设备当前发送报文消息编号为 i。如(MIA,MN=2)
(MIB,MN=1)表示当前 A 向 B 发送消息编号为 2 的报文时,最新收到过对端 B 报文编号是 1 的协商报文。
3、会话Hello 探测
CA 成员之间完成密钥协商之后,就进入正常数据转发阶段,成员互发 Hello 报文维护会话状态,MKA Life Time 内如果收不到 hello 报文,就会导致协议重新协商。MKA Hello Time 一般为 2s,MKA Life Time 对端生存时间一般为 6s,MKA Life Time 可配置。
4、外界条件变化触发密钥切换或重新协商
外部条件发生变化会触发 SAK 密钥切换或重新协商,外界触发条件可能如下:
<C.1> MKA Life Time 超时,会导致 SAK 切换(仅在 Key Server 上生效);
<C.2> Key Server 转发层面上报报文编号 PN 即将或已经耗尽;
<C.3> 如果是非 MN 翻转导致的 MI 变化,会导致协议重新协商;
<C.4> Key Server 接收到对端 Supplicant 的报文编号 PN 即将或已经耗尽;
<C.5> 用户配置 CAK、Confidentiality Offset(只在 Key Server 侧生效,由 Key Server
通知系统内其他成员)、MACsec Mode 等配置;
<C.6> 用户配置 Key Server Priority 需要重新启动 Key Server 选举。

2.6 MACsec 数据结构

在这里插入图片描述

如图 所示,CA 成员之间完成 SAK 密钥协商和密钥安装之后就开始数据报文的转发。在数据报文的发送端,可以采用加密算法 GCM-AES-128 对原始数据报文的MSDU 部分和 SAK 一起加密变成密文(Secure Data),对源/目的 MAC、SEC TAG、密文(Secure Data)与 SAK 一起进行加密计算输出 ICV 放在报文尾部,这样组装成一个完整的MACsec 加密报文发送给对端。在数据的接收端,将密钥 SAK 和密文经过算法 GCM- AES-128 计算得到明文,同时采用加密算法计算出 ICV 与报文携带的ICV 作比较,如果一致表明报文合法没有被修改,组装成原始报文进行后续的 LAN 转发,否则会丢弃该报文。
MACsec 支持重放保护功能,MACsec 封装的数据帧在网络中传输时,可能出现报文顺序的重排。MACsec 重放保护机制允许数据帧有一定的乱序,这些乱序的报文序号在两边约定的窗口范围内可以被合法接收,超出窗口的报文会被丢弃。SecTAG 中的报文编号 PN 字段可用于重放保护机制,发送方在每发送一个报文会 PN 计数会加一,接收方会记录已接收报文的编号,报文编号PN 在重放窗口范围内的报文都允许接收。
MACsec 数据报文格式如下:
在这里插入图片描述
ICV 格式:
在这里插入图片描述
SECTAG 格式:
在这里插入图片描述
在这里插入图片描述
TCI 字段:
在这里插入图片描述
在这里插入图片描述

3.AUTOSAR MACsec协议栈

AUTOSAR 模块之间依赖关系图

AUTOSAR 模块之间依赖关系图

3.1 与AUTOSAR 模块之间依赖关系

 EthIf
配置、控制和监控MACsec实体(按SW或HW)。
 CSM:
1.保护发出的MKA消息并验证接收的MKA消息。
2.生成、加密和解密会话密钥(SAKs)。

3.1.1.EthIf通信接口

MKA模块和EthIf通信的目的是:
接收并发送MKA消息。
向底层提供MACsec的具体参数。
协调上层接口的Link-Up和Link-Down信令(即通过EthSM)。
如果以太网接口受MACsec保护,它将使用特定的MKA模块应用实例来配置MACsec实体(HW或SW)进行发送和接收。
如果EthSM激活受MACsec保护的以太网接口,在收发器或交换机端(ETH_MODE_ACTIVE)发出物理连接的信号之后,EthIf会将通过配置的MKA应用实例与通信对等体建立至少一条安全通道。
一旦建立了MACsec安全通道,并且两个参与者都可以成功地接收和发送,以太网接口将发出信号与上层连接(例如,通过Ethernet State Manager)。
在已建立的SCs的生命周期内,MKA模块将通过EthIf与MACsec实体通信来维护他们。既更新MACsec实体(Phy、Switch或SW实体)中的SC特定参数。
触发MKA模块建立MACsec SC是在EthTrcv或EthSwt模式切换到ACTIVE之后,向EthSM指示此状态之前完成的(即EthSM将保持在ETHSM_STATE_WAIT_TRCVLINK状态,因为在这种状态下,EthSM和底层EthIf正在启动物理网络接口,但上层协议(例如,TCP/IP中)尚未启动)。
一旦触发,MKA模块可以启动所需的操作,通过提供的端口建立MACsec安全通道。如果端口中没有配置MACsec, MKA模块调用将被跳过。

3.1.2.与EthDriver、EthSwitchDriver和Eth-TransceiverDriver的间接通信

当MACsec实体下载到HW设备时,MKA模块通过EthIf与EthDriver、EthSwitchDriver、ethtranceverdriver间接相连去建立、配置和管理所需的MACsec安全通道。在EthDriver、EthSwitchDriver和EthTransceiverDriver接口中有相应的接口函数。
建立安全通道是通过MACsec密钥协商协议完成的,MKA模块将处理所有协议步骤。这些特定的协议数据报是由MKA模块设置和组织的。因此,MKA模块通过现有的函数调用向以太网接口提供数据报,以太网接口再将数据报发送给通信的对端。这种行为是通过特定的一对EtherType和message类型处理的,是通过接口设置的。以太网接口使用此EtherType处理Rx和Tx链路上的数据报。

3.1.3.CSM (Crypto Service Manager)通信接口

MKA模块需要连接到AUTOSAR的BSW Crypto模块。
运行MKA模块通过[5,IEEE-802.1X-2020]和[4,IEEE-802.1AE-2018]中指定的加密算法来派生和使用所需的密钥
MKA模块需要BSW crypto提供以下支持:
1.KDF(如[5,IEEE-802.1AE-2018]第6.2.1章所述)从CAK推导出ICK和KEK。
2.AES-CMAC,使用AES CMAC 128位,使用ICK生成和验证MKA消息ICVs。
3.一个生成随机数据的函数(用于SAK和成员标识符)。
4.AES-KEY WRAP基于[6,RFC 3394]加密传输密钥。

3.1.4.通信初始化流程图

通信初始化流程图说明了通信协议栈的预期行为,MKA模块如何参与以太网协议栈的启动,包括上层模块和下层模块。
在这里插入图片描述
MACsec保护EthIf通信初始化流程图
在这里插入图片描述
MACsec保护EthIf和Switch通信初始化流程图

参考文件:
1.智简园区交换机MACsec技术白皮书
2.AUTOSAR_SWS_MACsecKeyAgreement

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值