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的生成過程如下所示:
預配置密鑰
除了預先配置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的報文格式如下圖所示:其中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的收發數據就全是密文數據,如下所示:
06總結
北匯信息專注于汽車電子測試、與眾多OEM合作,在總線網絡診斷測試開發相關領域積累了豐富的經驗。本次為大家簡單介紹了MACsec,但很多細節還有待商榷,后續我們也會帶來更多關于網絡安全的測試開發內容,也歡迎大家共同探討。
-
車載
+關注
關注
18文章
612瀏覽量
83388 -
網絡安全
+關注
關注
10文章
3168瀏覽量
59801
發布評論請先 登錄
相關推薦
評論