







【摘" 要】隨著汽車智能化、網聯化的推進,網絡安全的需求也變得更為迫切。而當下車內使用的網絡安全技術主要以防止篡改為主,無法達到防止監聽的目的。文章主要從汽車電子測試角度,簡要探討MACsec車載應用技術的相關理論。
【關鍵詞】汽車;網絡安全;通信加密;MACsec
中圖分類號:U463.6" " 文獻標識碼:A" " 文章編號:1003-8639( 2024 )02-0052-02
Network Security: Interpretation of MACsec in Vehicle Application Technology
JIANG Lu
(Shanghai Beihui Information Technology Co.,Ltd. Beijing Branch,Beijing 102208,China)
【Abstract】With the advancement of automotive intelligence and networking,the demand for network security has become more urgent. However,the network security technology used inside the car mainly focuses on preventing tampering,which cannot achieve the goal of preventing eavesdropping. The article mainly discusses the relevant theories of MACsec in vehicle application technology from the perspective of automotive electronic testing.
【Key words】automobile;network security;communication encryption;MACsec
1" 前言
以往介紹網絡安全相關技術在車載通信中的一些內容(包括E2E和SecOC等)時,通常更多地是從數據校驗方面入手,其中數據本身還是以明文進行傳輸。而隨著網絡安全級別的提高以及以太網在車載中更大規模的使用,市場迫切地需要數據加密的手段來防止數據被監聽。同時由于車載通信對延遲性能的要求和部署的特點,因此MACsec可能是一個更容易被選擇的方案。
2" 什么是MACsec
MACsec全稱為Media Access Control Security,基于協議802.1AE和802.1X,主要功能是用于數據加密,同時還有認證、校驗的功能。其保護的數據是以太網中二層以上的數據,即包括ARP在內的數據,都會被加密進而無法通過網絡監聽獲取。同時相比于其他加密手段(如TLS),MACsec由于可以基于硬件實現,因此可以做到更低的延時和更高的性能。并且對于上層應用來說,MACsec是在二層進行加密,因此對于上層來說是無感的,這意味著上層不需要做任何改動就可以進行加密部署,這對于當前無加密系統切換加密系統來說有著很大的優勢。
3" 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的生成過程如圖1所示。
1)預配置密鑰:除了預先配置CAK外,還需要配置密鑰標識CKN(Connectivity Association Key Name)。CKN就是額外的一個數據參數,CAK+CKN共同用于密鑰派生函數KDF(Key Derivation Function)。
2)密鑰派生:CAK通過不同的派生函數(派生函數參考AUTOSAR、AUTOSAR_SWS_MACsecKeyAgreement、IEEE 802.1X、NIST 800-108)和參數生成3個密鑰,生成的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,隨機數生成)生成的隨機密鑰,用于實際數據的加密。
3)加密SAK:使用KEK加密SAK(加密算法參考rfc3394中AES Key Wrap algorithm),將加密SAK傳輸到以太網總線中。
4)獲取解密后的SAK:伙伴節點使用相同的KEK解密后獲取SAK,將SAK用于實際數據的加解密。
在SAK成功分發到MACsec節點后,MACsec中的二層以太網報文就都可以用加密的方式進行數據的交互。
4" MACsec報文格式
MACsec的報文格式如圖2所示,其中DMAC即目標MAC,SMAC即源MAC,CRC即幀校驗,這部分都是以太網幀中原有的內容。802.1Q+payload即原有以太網中攜帶的數據(包含以太網幀類型),這部分數據會以GCM-AES-128(也允許支持GCM-AES-256)的加密算法進行加密(密鑰為上一章節中分發的SAK)。ICV(Intergrity Check Value)為校驗碼,SecTAG為加密頭,用于識別MACsec相關信息,其結構如圖3所示。
圖3中,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的解析示例見圖4。
另外,對于GCM-ASE算法來說,有3個參數:Nonce(加密向量IV)、Add(附加消息)、Tag(消息認證碼)和MACsec中字段有映射關系。Nonce對應SCI+PN,Add對應DMAC+SMAC+SecTAG,Tag對應ICV(參考IEEE 802.1AE)。
5" CANoe MACsec示例
在CANoe中建立多個節點,ChatClient1和ChatClient2以TCP的連接與ChatServer建立會話關系,其通信不需要關注MACsec。實際在總線的數據由Switch_1的Port1與Switch_2的Port2進行以太網數據的發送接收,拓撲關系如圖5所示。
環境啟動后,Port1和Port2就進行MACsec的SAK分發過程,分發完成后,Port1和Port2就可以正常以MACsec進行加密通信,如圖6所示。
當在ChatClient1發送會話數據“Polelink”,ChatClient2響應會話“YES”時,對于ChatClient1和ChatClient2而言數據的收發是原封不動的明文,如圖7所示。
而對于實際以太網數據而言,Port1和Port2的收發數據就全是密文數據,如圖8所示。
6" 總結
本文簡單介紹了MACsec車載應用技術的相關內容,其中著重對MACsec的工作流程和報文格式進行了闡述,并結合MACsec在CANoe中的應用示例進行了說明。文中很多細節還有待商榷,歡迎大家共同探討。
參考文獻:
[1]AUTOSAR_RS_MACsec[Z].
[2]AUTOSAR_SWS_MACsecKeyAgreement[Z].
[3]IEEE 802.1X[Z].
[4]IEEE 802.1AE[Z].
(編輯" 凌" 波)
收稿日期:2023-08-07
作者簡介
蔣露(1994—),男,測試工程師,主要從事汽車電子網絡診斷測試工作。