网络安全:MACsec车载应用技术解读

发布时间:2023-09-20  

01前言
我们在以往的分享中介绍了网络安全的相关技术在车载通信中的一些内容,包括E2E和SecOC等,但这些技术通常更多地是做数据校验,数据本身还是以明文进行传输。而随着网络安全级别的提高以及以太网在车载中更大规模的使用,我们迫切地需要数据加密的手段来防止数据被监听。同时由于车载通信对延迟性能的要求和部署的特点,MACsec可能是一个更容易被选择的方案。

02什么是MACsec
MACsec全称为Media Access Control Security,基于协议802.1AE和802.1X,主要功能是用于数据加密,同时还有认证、校验的功能。其保护的数据是以太网中二层以上的数据,即包括ARP在内的数据,都会被加密进而无法通过网络监听获取。


同时相比于其他加密手段,如TLS,MACsec由于可以基于硬件实现,因此可以做到更低的延时和更高的性能。并且对于上层应用来说,MACsec是在二层进行加密,因此对于上层来说是无感的,这意味着上层不需要做任何改动就可以进行加密的部署。这对于当前无加密系统切换加密系统来说有着很大的优势。03MACsec工作流程
MACsec使用对称加密,其密钥生成分发过程为EAPOL-MKA(EAP是Extensible Authentication Protocol,EAPOL即EAP over LANs,MKA即MACsec Key Agreement protocol ,见IEEE Std 802.1X),标准的MACsec的EAPOL-MKA流程会先进行密钥服务器的选举,但在车载网络中,更可能的情况是预先定义好密钥服务器,因此本文就不赘述密钥服务器选举流程(可以参考IEEE 802.1X),直接看一下密钥服务器如何生成和分发密钥。


首先所有的MACsec设备中会预先配置好一个密钥,称为CAK(Secure Connectivity Association Key),由于其是预先定义的密钥,因此也叫做Pre-Shared-Key。需要注意的是,CAK并不是能直接参与数据加密的密钥,实际用于数据加解密的密钥是SAK(Secure Association Key),SAK是通过CAK进行派生,SAK的生成过程如下所示:
11893c7a-1621-11ee-a579-dac502259ad0.png

预配置密钥


除了预先配置CAK外,还需要配置密钥标识CKN(Connectivity Association Key Name)。CKN就是额外的一个数据参数,CAK+CKN共同用于密钥派生函数KDF(Key Derivation Function)。


密钥派生

CAK通过不同的派生函数(派生函数参考AUTOSAR AUTOSAR_SWS_MACsecKeyAgreement、IEEE 802.1X、NIST 800-108)和参数生成3个密钥:ICK(Integrity Check Value Key,即校验的密钥)、KEK(Key Encryption Key,即加密SAK的密钥)、SAK(Secure Association Key,即实际加密数据的密钥)。其中ICK和KEY是通过CAK+CKN生成固定的密钥,可以认为MACsec设备均已预先得知。ICK用于流程校验,KEK用于SAK的加密。SAK是由CAK+RNG(Random Number Generator,即随机数生成)生成的随机密钥,用于实际数据的加密。


加密SAK

使用KEK加密SAK(加密算法参考rfc3394中AES Key Wrap algorithm),将加密SAK传输到以太网总线中。


获取解密后的SAK

伙伴节点使用相同的KEK解密后获取SAK,将SAK用于实际数据的加解密。在SAK成功分发到MACsec节点后,MACsec中的二层以太网报文就都可以用加密的方式进行数据的交互。

04MACsec报文格式
MACsec的报文格式如下图所示:11925b52-1621-11ee-a579-dac502259ad0.png

其中DMAC即目标MAC,SMAC即源MAC,CRC即帧校验,这部分都是以太网帧中原有的内容。802.1Q+payload即原有以太网中携带的数据(包含以太网帧类型),这部分数据会以GCM-AES-128(也允许支持GCM-AES-256)的加密算法进行加密(密钥为上一章节中分发的SAK)。ICV(Intergrity Check Value)为校验码。SecTAG为加密头,用于识别MACsec相关信息,其结构如下:
11ab9d24-1621-11ee-a579-dac502259ad0.png

MACsec EtherType为固定值0x88E5,表示MACsec报文;

TCI(TAG Control Informatin)为控制信息;

AN(Association Number)为关联号;

SL(Short Length)为短数据长度(小于48字节才会使用,见IEEE 802.1AE);

PN(Packet Number)为包的序号,用来防止重放攻击;

SCI(Secure Channel Identifier)中还包含PI(Port Identifier),即通道和端口的标识,对简单网络来说应该是固定值。

SecTAG的解析见如下示例:
11c51bc8-1621-11ee-a579-dac502259ad0.png

另外对于GCM-ASE算法来说,有3个参数:nonce(即加密向量IV)、add(附加消息)、tag(消息认证码)和MACsec中字段有映射关系。Nonce对应SCI+PN,add对应DMAC+SMAC+SecTAG,tag对应ICV(参考IEEE 802.1AE)。


05 CANoe MACsec示例
在CANoe中我们建立多个节点:ChatClient1和ChatClient2以TCP的连接与ChatServer建立会话关系,他们的通信不需要关注MACsec。实际在总线的数据由Switch_1的Port1与Switch_2的Port2进行以太网数据的发送接收,拓扑关系如下所示:
11da9232-1621-11ee-a579-dac502259ad0.png

环境启动后,Port1和Port2就进行MACsec的SAK分发过程,分发完成后,Port1和Port2就可以正常以MACsec进行加密通信,如下所示:
11e40b8c-1621-11ee-a579-dac502259ad0.png

当我们在ChatClient1发送会话数据“Polelink”,ChatClient2响应会话“YES”时,对于ChatClient1和ChatClient2来说数据的收发是原封不动的明文,如下所示:
1227432a-1621-11ee-a579-dac502259ad0.png

而对于实际以太网数据而言,Port1和Port2的收发数据就全是密文数据,如下所示:
129b2042-1621-11ee-a579-dac502259ad0.png

06总结
北汇信息专注于汽车电子测试、与众多OEM合作,在总线网络诊断测试开发相关领域积累了丰富的经验。本次为大家简单介绍了MACsec,但很多细节还有待商榷,后续我们也会带来更多关于网络安全的测试开发内容,也欢迎大家共同探讨。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>