01前言
我們在以往的分享中介紹了網(wǎng)絡(luò)安全的相關(guān)技術(shù)在車載通信中的一些內(nèi)容,包括E2E和SecOC等,但這些技術(shù)通常更多地是做數(shù)據(jù)校驗,數(shù)據(jù)本身還是以明文進(jìn)行傳輸。而隨著網(wǎng)絡(luò)安全級別的提高以及以太網(wǎng)在車載中更大規(guī)模的使用,我們迫切地需要數(shù)據(jù)加密的手段來防止數(shù)據(jù)被監(jiān)聽。同時由于車載通信對延遲性能的要求和部署的特點,MACsec可能是一個更容易被選擇的方案。
02什么是MACsec
MACsec全稱為Media Access Control Security,基于協(xié)議802.1AE和802.1X,主要功能是用于數(shù)據(jù)加密,同時還有認(rèn)證、校驗的功能。其保護(hù)的數(shù)據(jù)是以太網(wǎng)中二層以上的數(shù)據(jù),即包括ARP在內(nèi)的數(shù)據(jù),都會被加密進(jìn)而無法通過網(wǎng)絡(luò)監(jiān)聽獲取。
同時相比于其他加密手段,如TLS,MACsec由于可以基于硬件實現(xiàn),因此可以做到更低的延時和更高的性能。并且對于上層應(yīng)用來說,MACsec是在二層進(jìn)行加密,因此對于上層來說是無感的,這意味著上層不需要做任何改動就可以進(jìn)行加密的部署。這對于當(dāng)前無加密系統(tǒng)切換加密系統(tǒng)來說有著很大的優(yōu)勢。03MACsec工作流程
MACsec使用對稱加密,其密鑰生成分發(fā)過程為EAPOL-MKA(EAP是Extensible Authentication Protocol,EAPOL即EAP over LANs,MKA即MACsec Key Agreement protocol ,見IEEE Std 802.1X),標(biāo)準(zhǔn)的MACsec的EAPOL-MKA流程會先進(jìn)行密鑰服務(wù)器的選舉,但在車載網(wǎng)絡(luò)中,更可能的情況是預(yù)先定義好密鑰服務(wù)器,因此本文就不贅述密鑰服務(wù)器選舉流程(可以參考IEEE 802.1X),直接看一下密鑰服務(wù)器如何生成和分發(fā)密鑰。
首先所有的MACsec設(shè)備中會預(yù)先配置好一個密鑰,稱為CAK(Secure Connectivity Association Key),由于其是預(yù)先定義的密鑰,因此也叫做Pre-Shared-Key。需要注意的是,CAK并不是能直接參與數(shù)據(jù)加密的密鑰,實際用于數(shù)據(jù)加解密的密鑰是SAK(Secure Association Key),SAK是通過CAK進(jìn)行派生,SAK的生成過程如下所示:
預(yù)配置密鑰
除了預(yù)先配置CAK外,還需要配置密鑰標(biāo)識CKN(Connectivity Association Key Name)。CKN就是額外的一個數(shù)據(jù)參數(shù),CAK+CKN共同用于密鑰派生函數(shù)KDF(Key Derivation Function)。
密鑰派生
CAK通過不同的派生函數(shù)(派生函數(shù)參考AUTOSAR AUTOSAR_SWS_MACsecKeyAgreement、IEEE 802.1X、NIST 800-108)和參數(shù)生成3個密鑰:ICK(Integrity Check Value Key,即校驗的密鑰)、KEK(Key Encryption Key,即加密SAK的密鑰)、SAK(Secure Association Key,即實際加密數(shù)據(jù)的密鑰)。其中ICK和KEY是通過CAK+CKN生成固定的密鑰,可以認(rèn)為MACsec設(shè)備均已預(yù)先得知。ICK用于流程校驗,KEK用于SAK的加密。SAK是由CAK+RNG(Random Number Generator,即隨機(jī)數(shù)生成)生成的隨機(jī)密鑰,用于實際數(shù)據(jù)的加密。
加密SAK
使用KEK加密SAK(加密算法參考rfc3394中AES Key Wrap algorithm),將加密SAK傳輸?shù)揭蕴W(wǎng)總線中。
獲取解密后的SAK
伙伴節(jié)點使用相同的KEK解密后獲取SAK,將SAK用于實際數(shù)據(jù)的加解密。在SAK成功分發(fā)到MACsec節(jié)點后,MACsec中的二層以太網(wǎng)報文就都可以用加密的方式進(jìn)行數(shù)據(jù)的交互。
04MACsec報文格式
MACsec的報文格式如下圖所示:其中DMAC即目標(biāo)MAC,SMAC即源MAC,CRC即幀校驗,這部分都是以太網(wǎng)幀中原有的內(nèi)容。802.1Q+payload即原有以太網(wǎng)中攜帶的數(shù)據(jù)(包含以太網(wǎng)幀類型),這部分?jǐn)?shù)據(jù)會以GCM-AES-128(也允許支持GCM-AES-256)的加密算法進(jìn)行加密(密鑰為上一章節(jié)中分發(fā)的SAK)。ICV(Intergrity Check Value)為校驗碼。SecTAG為加密頭,用于識別MACsec相關(guān)信息,其結(jié)構(gòu)如下:
MACsec EtherType為固定值0x88E5,表示MACsec報文;
TCI(TAG Control Informatin)為控制信息;
AN(Association Number)為關(guān)聯(lián)號;
SL(Short Length)為短數(shù)據(jù)長度(小于48字節(jié)才會使用,見IEEE 802.1AE);
PN(Packet Number)為包的序號,用來防止重放攻擊;
SCI(Secure Channel Identifier)中還包含PI(Port Identifier),即通道和端口的標(biāo)識,對簡單網(wǎng)絡(luò)來說應(yīng)該是固定值。
SecTAG的解析見如下示例:
另外對于GCM-ASE算法來說,有3個參數(shù):nonce(即加密向量IV)、add(附加消息)、tag(消息認(rèn)證碼)和MACsec中字段有映射關(guān)系。Nonce對應(yīng)SCI+PN,add對應(yīng)DMAC+SMAC+SecTAG,tag對應(yīng)ICV(參考IEEE 802.1AE)。
05 CANoe MACsec示例
在CANoe中我們建立多個節(jié)點:ChatClient1和ChatClient2以TCP的連接與ChatServer建立會話關(guān)系,他們的通信不需要關(guān)注MACsec。實際在總線的數(shù)據(jù)由Switch_1的Port1與Switch_2的Port2進(jìn)行以太網(wǎng)數(shù)據(jù)的發(fā)送接收,拓?fù)潢P(guān)系如下所示:
環(huán)境啟動后,Port1和Port2就進(jìn)行MACsec的SAK分發(fā)過程,分發(fā)完成后,Port1和Port2就可以正常以MACsec進(jìn)行加密通信,如下所示:
當(dāng)我們在ChatClient1發(fā)送會話數(shù)據(jù)“Polelink”,ChatClient2響應(yīng)會話“YES”時,對于ChatClient1和ChatClient2來說數(shù)據(jù)的收發(fā)是原封不動的明文,如下所示:
而對于實際以太網(wǎng)數(shù)據(jù)而言,Port1和Port2的收發(fā)數(shù)據(jù)就全是密文數(shù)據(jù),如下所示:
06總結(jié)
北匯信息專注于汽車電子測試、與眾多OEM合作,在總線網(wǎng)絡(luò)診斷測試開發(fā)相關(guān)領(lǐng)域積累了豐富的經(jīng)驗。本次為大家簡單介紹了MACsec,但很多細(xì)節(jié)還有待商榷,后續(xù)我們也會帶來更多關(guān)于網(wǎng)絡(luò)安全的測試開發(fā)內(nèi)容,也歡迎大家共同探討。
-
車載
+關(guān)注
關(guān)注
17文章
601瀏覽量
83336 -
網(wǎng)絡(luò)安全
+關(guān)注
關(guān)注
10文章
3104瀏覽量
59531
發(fā)布評論請先 登錄
相關(guān)推薦
評論