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