01 前言
我们在以往的分享中介绍了网络安全的相关技术在车载通信中的一些内容,包括e2e和secoc等,但这些技术通常更多地是做数据校验,数据本身还是以明文进行传输。而随着网络安全级别的提高以及以太网在车载中更大规模的使用,我们迫切地需要数据加密的手段来防止数据被监听。同时由于车载通信对延迟性能的要求和部署的特点,macsec可能是一个更容易被选择的方案。
02 什么是macsec
macsec全称为media access control security,基于协议802.1ae和802.1x,主要功能是用于数据加密,同时还有认证、校验的功能。其保护的数据是以太网中二层以上的数据,即包括arp在内的数据,都会被加密进而无法通过网络监听获取。
同时相比于其他加密手段,如tls,macsec由于可以基于硬件实现,因此可以做到更低的延时和更高的性能。并且对于上层应用来说,macsec是在二层进行加密,因此对于上层来说是无感的,这意味着上层不需要做任何改动就可以进行加密的部署。这对于当前无加密系统切换加密系统来说有着很大的优势。
03 macsec工作流程
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的生成过程如下所示:
预配置密钥
除了预先配置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中的二层以太网报文就都可以用加密的方式进行数据的交互。
04 macsec报文格式
macsec的报文格式如下图所示:
其中dmac即目标mac,smac即源mac,crc即帧校验,这部分都是以太网帧中原有的内容。802.1q+payload即原有以太网中携带的数据(包含以太网帧类型),这部分数据会以gcm-aes-128(也允许支持gcm-aes-256)的加密算法进行加密(密钥为上一章节中分发的sak)。icv(intergrity check value)为校验码。sectag为加密头,用于识别macsec相关信息,其结构如下:
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的解析见如下示例:
另外对于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进行以太网数据的发送接收,拓扑关系如下所示:
环境启动后,port1和port2就进行macsec的sak分发过程,分发完成后,port1和port2就可以正常以macsec进行加密通信,如下所示:
当我们在chatclient1发送会话数据“polelink”,chatclient2响应会话“yes”时,对于chatclient1和chatclient2来说数据的收发是原封不动的明文,如下所示:
而对于实际以太网数据而言,port1和port2的收发数据就全是密文数据,如下所示:
对话Moka李国兴:大模型改造SaaS需要持续渐进式创新,先发者把握先机
配电网的特点 配电网的特点
工业交换机的设置步骤,您知道吗?
苹果全新的iPad Pro信息曝光 能否继续辉煌?已经开始量产但发售要推迟
音圈电机无人机迎接神舟十二号载人飞船回家
MACsec车载应用技术解读
关于Cortex-A8处理器性能及架构解析
引领RISC-V处理器性能 赛昉科技斩获年度技术突破IP公司奖
荣耀FlyPodsPro怎么样 到底值不值得买
2011-2012年度中国手机市场发展状况研究报告
编码器接错线会如何,编码器如何更换,编码器更换注意事项
英文版智慧教室融合管理平台来啦!
三星发布M7智能电视一体机 电视、电脑显示器相结合
夏利、奇瑞们陷十面埋伏 单纯布局新能源汽车市场并不是出路
嵌入式数据库发展状况研究
电路反馈类型及其判定
力拓新领域版图,电源管理芯片今年反弹
区块链的世界杯“狂热”,我们离区块链的世界,越来越近!
网络和设备为什么不能两者同时呢?
三大运营商公告于3月9日于美国股票下市