天天看點

網絡安全:MACsec車載應用技術解讀

作者:北彙資訊POLELINK

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的生成過程如下所示:

網絡安全:MACsec車載應用技術解讀

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個密鑰: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的封包格式如下圖所示:

網絡安全:MACsec車載應用技術解讀

其中DMAC即目标MAC,SMAC即源MAC,CRC即幀校驗,這部分都是以太網幀中原有的内容。802.1Q+payload即原有以太網中攜帶的資料(包含以太網幀類型),這部分資料會以GCM-AES-128(也允許支援GCM-AES-256)的加密算法進行加密(密鑰為上一章節中分發的SAK)。ICV(Intergrity Check Value)為校驗碼。SecTAG為加密頭,用于識别MACsec相關資訊,其結構如下:

網絡安全: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的解析見如下示例:

網絡安全:MACsec車載應用技術解讀

另外對于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進行以太網資料的發送接收,拓撲關系如下所示:

網絡安全:MACsec車載應用技術解讀

環境啟動後,Port1和Port2就進行MACsec的SAK分發過程,分發完成後,Port1和Port2就可以正常以MACsec進行加密通信,如下所示:

網絡安全:MACsec車載應用技術解讀

當我們在ChatClient1發送會話資料“Polelink”,ChatClient2響應會話“YES”時,對于ChatClient1和ChatClient2來說資料的收發是原封不動的明文,如下所示:

網絡安全:MACsec車載應用技術解讀

而對于實際以太網資料而言,Port1和Port2的收發資料就全是密文資料,如下所示:

網絡安全:MACsec車載應用技術解讀

6.總結

北彙資訊專注于汽車電子測試、與衆多OEM合作,在總線網絡診斷測試開發相關領域積累了豐富的經驗。本次為大家簡單介紹了MACsec,但很多細節還有待商榷,後續我們也會帶來更多關于網絡安全的測試開發内容,也歡迎大家共同探讨。

注:文中圖檔來源于AUTOSAR、Vector CANoe、IEEE 802.AE

參考文獻

[1] AUTOSAR_RS_MACsec

[2] AUTOSAR_SWS_MACsecKeyAgreement

[3] IEEE 802.1X

[4] IEEE 802.1AE

[5]https://info.support.huawei.com/info-finder/encyclopedia/en/MACsec.html

[6]https://community.cisco.com/t5/networking-knowledge-base/mka-macsec-key-agreement-exchange-on-the-wire/ta-p/4436083

繼續閱讀