车载以太网MACsec

news2024/11/13 21:31:14

车载以太网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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/674993.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

新浪股票接口获取历史数据

这两天做了一个调用新浪股票接口获取实时以及历史股票数据的应用&#xff0c;因为新浪没有公开关于其接口的官方文档&#xff0c;所以通过各种百度差了很多关于新浪股票接口的使用&#xff0c;不过大家基本都是转载或者直接复制&#xff0c;对于实时数据的获取讲的很详细&#…

Linux【系统学习】(shell篇)

第 1 章 Shell 概述 1&#xff09;Linux 提供的 Shell 解析器有 Ubuntu 使用的是dash 2&#xff09;bash 和 sh 的关系 3&#xff09;Centos 默认的解析器是 bash 第 2 章 Shell 脚本入门 1&#xff09;脚本格式 &#xff08;结尾不是必须以 .sh 结尾&#xff0c;只是为了区…

《网络安全0-100》VPN 讲解

1、前言 VPN虽好可不要贪玩哦 2、VPN的概念和结构 VPN:虚拟专用网(virtual personal network)是利用internet等公共网络的基础设施&#xff0c;通过隧道技术&#xff0c;为用户提供的专用网络具有相同通信功能的安全数据通道。 ‘虚拟’是指用户无需建立各逻辑上的专用物理线…

​AVS3支持下的8K内容生产和传输应用实践

AVS标准经过20年发展&#xff0c;到AVS3这一代实现了国产标准从跟跑到领跑的突破。博雅睿视团队深度参与AVS3标准制定&#xff0c;开发的8K AVS3实时、离线编解码设备有力支持了我国8K超高清视频产业的落地和推广。 本次分享将会分为三个部分&#xff0c;第一部分重点介绍AVS标…

MusicGen配乐工具开源,教你怎么给抖音短视频配乐,助你涨粉1000!

大家好&#xff0c;我是千与千寻&#xff0c;好久不见了&#xff0c;很多粉丝私信我说&#xff0c;千寻哥这是去哪了&#xff1f;难道被野外捕捉了。 哈哈哈&#xff0c;当然不是了&#xff0c;千寻依然在学习ChatGPT的道路上和大家一起学习&#xff0c;一起搞钱&#xff01; 但…

TC8:TCP_MSS_OPTIONS_05-09

TCP_MSS_OPTIONS_05: Illegal option length for MSS in a SYN-ACK segment 目的 TCP能够处理SYN+ACK报文段中MSS选项的长度非法,而不会崩溃 可以正常地响应,就是不崩溃,这里指的应该是DUT发送ACK 测试步骤 Tester:让DUT侧的应用程序发起主动open调用DUT:发送SYNTester:…

C++类和对象--构造函数和析构函数

0.前言 在我们写某些需要动态开辟内存空间的函数时候&#xff0c;会经常忘记初始化、销毁&#xff0c;而且有时候程序返回的情况很多&#xff0c;那么销毁函数写起来就会很繁琐&#xff0c;那么有没有什么办法解决这个问题呢&#xff1f;答案是&#xff1a;当然有&#xff01;在…

Java类 继承

Java是一种面向对象的编程语言&#xff0c;类是Java中最基本的编程单元。一个类可以包含变量、方法和构造函数等。类的定义需要使用关键字class&#xff0c;例如&#xff1a; public class Person { private String name; private int age; public Person(St…

文心一言 VS 讯飞星火 VS chatgpt (44)-- 算法导论6.1 1题

一、在高度为h的堆中&#xff0c;元素个数最多和最少分别是多少? 文心一言&#xff1a; 在高度为 h 的二叉搜索树&#xff08;BST&#xff09;中&#xff0c;元素个数最多和最少的情况分别如下&#xff1a; 1.最多情况&#xff1a;当每个节点都包含两个子节点时&#xff0c…

CSS3-盒子模型-边距问题

1 清除默认内外边距 场景&#xff1a;浏览器会默认给部分标签设置默认的margin和padding&#xff0c;但一般在项目开始前需要先清除这些标签默认的margin和padding&#xff0c;后续自己设置 比如&#xff1a;body标签默认有margin&#xff1a;8px、p标签默…

一句提示词生成整个代码库——Gpt Engineer神级项目开源(附演示视频)

近日&#xff0c;一个名为Gpt Engineer神级项目开源&#xff0c;并迅速火爆全网。 短短几天内&#xff0c;该项目已经得到了25K的星星。 使用GPT-engineer进行人工智能软件开发&#xff0c;可以改变软件开发的未来。 在软件开发领域&#xff0c;一场巨大的革命正在开始。这一转…

【计算机视觉 | 目标检测】arxiv 计算机视觉关于目标检测的学术速递(6月 22 日论文合集)

文章目录 一、检测相关(9篇)1.1 Wildfire Detection Via Transfer Learning: A Survey1.2 Polygon Detection for Room Layout Estimation using Heterogeneous Graphs and Wireframes1.3 Exploiting Multimodal Synthetic Data for Egocentric Human-Object Interaction Detec…

前端中的相关概念

谁道人生无再少&#xff0c; 门前流水尚能西。 桃花落尽胭脂透&#xff0c; 庭院无声五更鸡。 —— 杜甫《端午节》 HTML中class属性 HTML中class属性是一种用于为元素定义样式和标识的属性&#xff0c;以下是class属性的几种常见用法实例&#xff0c;包括标识元素、定义样…

利用OpenCV计算条形物体的长度

0、前言 在图像处理中&#xff0c;我们可能会遇到求一个线条长度的场景&#xff0c;比如&#xff0c;现在有一条裂缝&#xff0c;需要求其长度&#xff0c;或者有一个长条形的零件需要知道其长度。 本文利用OpenCV和skimage两个库&#xff0c;提供了一个解决方案。 1、解决步…

贪心法与动态规划的对比分析

高级算法设计课程论文 题 目&#xff1a;贪心法与动态规划的对比分析 作者姓名&#xff1a; 作者学号&#xff1a; 专业班级&#xff1a; 提交时间&#xff1a; 2023/6/3 目 录 1 引言 1 2 分析过程 2 2.1多段图的最短路径问题 2 2.2最小生成树问题 4 3动态规划与贪心法的对…

【动态规划算法练习】day3

文章目录 一、931. 下降路径最小和1.题目简介2.解题思路3.代码4.运行结果 二、64. 最小路径和1.题目简介2.解题思路3.代码4.运行结果 三、面试题 17.16. 按摩师1.题目简介2.解题思路3.代码4.运行结果 总结 一、931. 下降路径最小和 1.题目简介 931. 下降路径最小和 题目描述&…

浅析 GeoServer CVE-2023-25157 SQL注入

原创稿件征集 邮箱&#xff1a;eduantvsion.com QQ&#xff1a;3200599554 黑客与极客相关&#xff0c;互联网安全领域里 的热点话题 漏洞、技术相关的调查或分析 稿件通过并发布还能收获 200-800元不等的稿酬 更多详情&#xff0c;点我查看&#xff01; 简介 GeoServer是一个开…

十八、网络基础(一)

一、协议 &#xff08;一&#xff09;前置 协议其实是一种约定&#xff01;&#xff01;&#xff01; 计算机之间的传输媒介是光信号和电信号 , 通过 " 频率 " 和 " 强弱 " 来表示 0 和 1 这样的信息 , 要想传递各种不同的信息 , 就需要约定好双方的数据…

(自己动手开发自己的语言练手级应用)JSON(JavaScript Object Notation) 产生式(BNF)

写自己的开发语言时&#xff0c;很多人都会拿JSON当第一个练习对象 开源net json FJSON 解析工具https://dbrwe.blog.csdn.net/article/details/107611540?spm1001.2014.3001.5502 <json> :: <object> | <array> <object> :: "{" [ <me…

分布式学习第三天 nginx学习

目录 1. 一些基本概念 1.1 Nginx初步认识 1.2 正向/反向代理 1.3 域名和IP 2. Nginx 安装和配置 2.1 安装 2.2 配置 3. Nginx的使用 3.1 部署静态网页 3.2 反向代理和负载均衡 课外知识导读 1. URL和URI 2. DNS解析过程 复习 1. 一些基本概念 1.1 Nginx初步认识…