400-821-6015
行(xíng)業(yè)資訊
您當前的(de)位置:首頁 » 行(xíng)業(yè)資訊 » 行(xíng)業​☆¥∑(yè)資訊
內(nèi)部資訊行(xíng)業(yè)資訊

AUTOSAR SecOC:保障汽車(chē♠♦"Ω)通(tōng)信的(de)安全

發布日(rì)期:2023-10-31

       在現(xià£∞n)代汽車(chē)行(xíng)業(yè)中,‌ ×随著(zhe)電(diàn)子(zǐ)控制(zhì)單元(ECUs)的(de)普及以及車(chē)與車(chē)之間(jiān)通(tōng)信的(d∏δ≤↕e)不(bù)斷增加,确保通(tōng)信安全變∏±↓得(de)尤為(wèi)關鍵。AUTOSAR (Automotive Open System Architectu$♥εre) 的(de) SecOC (Secure ★ ≥Onboard Communication) 模塊,≥'正是(shì)為(wèi)應對(duì)這×♥β✘(zhè)種挑戰而設計(jì)的(de)。AUTOSAR作(zuò)為(wèi)一(yī)套開(kāi)放♠≤>(fàng)的(de)汽車(chē)軟件(jiàn)标準,其中的✘≤(de)SecOC模塊在其架構中起到(dào)了λ (le)至關重要(yào)的(de)角色,它主要(yào)職責是(shì)确Ω₩≤"保車(chē)輛(liàng)內(nèi₹ δ×)部的(de)通(tōng)訊數(shù)據安全無虞↑​✘。通(tōng)常,SecOC模塊是(shì)位于AUTOSAR通(tōng)訊堆棧&€>₹的(de)PDU Router與更底層的(de)通(tōng)訊驅γ™&↔動之間(jiān),确保所有(yǒu)通(tōng)過這(zh¥‍÷'è)個(gè)堆棧的(de)信息都(dōu×↔)得(de)到(dào)了(le)适當的(de)加密和(hé)保護。實際應用(yòng)中,SecOC模塊還(hái)能(n$ éng)與HSM (Hardware Sec♥↔↑↑urity Module) 模塊相(xiàng)結合,借助硬件(jiàn< ‍)來(lái)更快(kuài)速地(dì)進行(xíng)數(shù)據加密和(hé)消息認證。♠λ$

圖片

圖1 SecOC在BSW中的(de)架構圖

       SecOC通(tōng)信πφ©♣流程依賴于兩大(dà)核心組件(jiàn):消息認證與新鮮度值(Freshness Value,F φ¶V)。為(wèi)了(le)确保消息的(de)真實性與完整性,SecOC利用(yòng)消息認證碼(‌γ ₹Message Authentication Code,MAC)進行(xíng)核實。在消息發×£>Ω送過程中,系統會(huì)利用(yòng)預定的(de)密>•鑰生(shēng)成MAC,并将其附加在原消息®↓¥之後。而在消息接收端,系統會(huì)再次利用(yòng)相(xiàng)同的(de)密鑰計(j€≈£ì)算(suàn)MAC,并與接收到(dào)的(de)MAC進行(xíng)校(xiào)驗。如♦®×λ(rú)若不(bù)符,則表明(míng)消息在傳輸過程中可(™≈♦kě)能(néng)遭到(dào)了(le)篡改,或∞✔者并非來(lái)自(zì)一(yī)個(gè)合法的(de)發送方。而€↔♣Freshness Value(FV)的(de)存在主要(yào)是(★π±←shì)為(wèi)了(le)應對(duì)“重放(fàng)攻擊”。為(wèi)此,每一(yī)條消息都(dōu)會(huì)伴随一(yī)個(¶♥ φgè)FV值。這(zhè)是(shì)一(yī)個(gè)不(bε€ù)斷變化(huà)的(de)動态值,如(rú)計(jì)數(shù)器(qì)或時(shí)÷ε間(jiān)戳,确保每一(yī)條發送的(de)•☆‌消息均具有(yǒu)其獨特性。在MAC的(de)生(shēng)成過程中λ≈ ↓,FV也(yě)起到(dào)了(le)關鍵作(zuò)用(yòng)。 ♣•↕這(zhè)一(yī)整個(gè)流程如(rú)圖2所示。

圖片

圖2 SecOC通(tōng)訊流程圖

       接下(xià)來(lái),我們将根據•€<♥AUTOSAR SecOC官方文(wén)檔的(de)附錄11.4πλ,深入探討(tǎo)基于多(duō)新鮮度計(₽≈γjì)數(shù)器(qì)的(de)SecOC機(jī)制(zhì)是(→≈$shì)如(rú)何實現(xiàn)的(de)。在此示例中,我們遇到(dào)三個(gè)關鍵運行(xíng)實體(tǐ),它們÷★$↕是(shì):新鮮度管理(lǐ)器(qì)ECU(即“Master”),以及負責接收和(hé)發送™←報(bào)文(wén)的(de)ECU(我們稱之為(wèi)“Slave”) ∑。在此機(jī)制(zhì)中,Slave的(de)任務是(shì)接收來(lái)自(zì ¶)Master廣播的(de)Freshness Value(FV)計(jì)數(shù),以便同₹♦&£步更新其本地(dì)的(de)FV計(jì)數(shù)。簡單地(dì)說(shuō),M>®aster負責維護并廣播當前的(de)FV計(jì)數(shù),而Slav∑•≥e根據接收到(dào)的(de)計(jì)數(shù)進行(xíng)更新,确保它們的(d♥αe)計(jì)數(shù)值保持一(yī)緻。這(zhè)種同步機(jī)制(zhì)是(shì)為(wèi)了(le)确保在整個(gè)系統♣↔•中,每次的(de)通(tōng)信都(dōu)有(yǒu)一(yī) ☆個(gè)獨特的(de)、不(bù)斷更新的(de)FV,以加強安全性。這(zhè)三者之§÷∞間(jiān)的(de)交互和(hé)關系可(kě)以在圖3中看(α✔©"kàn)到(dào)。

圖片

圖3 多(duō)新鮮度計(jì)數(shù)器(qì)管理(lǐ)關系圖

       在SecOC通(tōng)信流程中,所≥>≠有(yǒu)的(de)數(shù)據傳輸都(dōu)默認采用(yòng)₹★$大(dà)端模式。發送者發送的(de)安全報(bào)文(wén)(簡稱S-I-PDU↔₹±)由幾個(gè)部分(fēn)組成:S-I-PDU報(bà★≥<®o)文(wén)頭、待保護的(de)交互層協議(yì)±©數(shù)據單元(I-PDU)、Freshness Value(FV)和(>≠hé)Authenticator(也(yě)稱£→→為(wèi)MAC)。值得(de)注意的(de)是(shì),S-I-PD§§♦U報(bào)文(wén)頭和(hé)FV并不(bù)是(shì)每次都(dōu)必∞♠ ₹須的(de),它們是(shì)可(kě)'₹₹>選組件(jiàn)。另外(wài),I-PDU不("≥→bù)一(yī)定包含原始報(bào)文(wén)中的(de)所有(♠Ωyǒu)載荷(payload),它可(kě)能(néng)僅包含部分✘π(fēn)數(shù)據。進一(yī)步說(shuō),通(tōng)常情況下(σ"λxià),我們不(bù)會(huì)完整地↔★(dì)發送FV和(hé)MAC的(de)所有(yǒu)數(shù)據。為(wèi)∑€了(le)效率和(hé)安全性的(de)考慮,我們通(tōng)常隻選取其中的(de)部分'δ(fēn)數(shù)據包含在S-I-PDU中。具體(tǐ)來(lái)說(shuō),對(duì®"±)于FV,我們從(cóng)其低(dī)位開(kāi)始,選取一(yī)定長(cháng)©♥★度的(de)數(shù)據;而對(duì)§‍于MAC,我們則從(cóng)其高(gāo)位開(kāi)始,選取一(™≥♥yī)定長(cháng)度的(de)數(shù)據‍€ ₹。這(zhè)種數(shù)據組織和(hé)截取的(de✘♥‌↑)方式确保了(le)在有(yǒu)限的(©≠↓λde)報(bào)文(wén)長(cháng)度內(nèi),我們可(kě)以傳輸最∑​關鍵的(de)、具有(yǒu)代表性的(de)數(shù)據。如(rú)圖4和(hé)圖5所詳細™™÷ε展示。

圖片

圖4 安全報(bào)文(wén)構成圖

圖片

圖5 FV和(hé)MAC截取示意圖

      &nbs©✔p;MAC(消息認證碼)的(de)計(jì)算(suàn)是(shì)關于數(shù)據完整性€★↕¶和(hé)真實性驗證的(de)核心。在SecOC中,其生(shēng)成主要(yào)采用(yòng)對(duì)稱↕‍加密算(suàn)法。例如(rú),通(>λΩtōng)過使用(yòng)AES算(suàn)法,我們可(kě)以得(de)到(dào)C‍₩♠MAC(加密消息認證碼)。為(wèi)了(le)計(jì)算(suàn)MAC,我們需要(yà©★o)考慮幾個(gè)關鍵部分(fēn):

       -"© Data Id:這(zhè)是(shì)一(yī)個(gè)兩字節的(de)數(shù)據标識符,它有(yǒu)助ε€于區(qū)分(fēn)和(hé)識别不(bù)同的(de)I-PDU。

      &≈∑nbsp;- I-PDU的(de)保護部分(fēn):這(zhè)并不(bù)是(shì)完整的(d©®β↕e)I-PDU數(shù)據,而是(shì)我們選擇需要(yào)加密保護的(de)部σ<分(fēn)。

       - 完整的(de)FV (Freshnes ®s Value):如(rú)前所述,FV是(shì)一(yī)個(gè)動态的(de)值,用(yòng)λ×"←于确保每條消息的(de)獨特性,避免重放(fàng)攻擊。

      &✔<≥nbsp;将這(zhè)三個(gè)部分 ✘(fēn)組合起來(lái),我們就(jiù)可(kě)以得(££de)到(dào)MAC的(de)輸入數(shù)據。然後通(tōng)過應用(yòng)特定的(ε←±>de)加密算(suàn)法(如(rú)AES生(shēn >g)成CMAC),将這(zhè)些(xiē) "‌輸入轉化(huà)為(wèi)獨特的(de)MAC值。如(rú)®λ≤✘圖6所示。

圖片

圖6 生(shēng)成MAC數(shù)據構成圖

     在此示例中,完整的(de)Freshness Value(FV)是(shì)由以下(xià<≈)四個(gè)部分(fēn)構成的(de)

      - Trip Counter (TripCntδσ♣★):由主Freshness Value Ma$↔nager(主FVM)控制(zhì),每一(yī)次“trip”(如(rú)車(chē)輛λ≈(liàng)啓動和(hé)關閉的(de)周期)都(dōu&ε• )會(huì)遞增。它主要(yào)記錄了(le)車÷♥"☆(chē)輛(liàng)啓動的(de)次數(shù)。上(shàng)下(xià)電(diàn<ε)時(shí)觸發。

      - Reset Counter (ResetCnt):由主FVM管理(lǐ),它基于配置的(de÷ €)周期(ResetCycle)進行(xíng)周期性遞增。可(kě)以©λ 看(kàn)作(zuò)是(shì)一(yī)個(g₽"è)中間(jiān)級别的(de)計(jì)數(s'≈"↑hù)器(qì),用(yòng)于追蹤系統重置的(de)次>‍Ω★數(shù)。

      - ♥∞ ₽;Message Counter (MsgCnt):與發送器(qì)ECU相(xiàng)關,每次發送信息時(shí)都(dōu)會(huì)↕↔​↑遞增。用(yòng)于追蹤特定ECU發送的(de↑ σ)消息數(shù)量。

      - Reset Flag (ResatFlag):與ResetCnt同步更新。它直接取自(zì)Res‍₩π¶etCnt的(de)低(dī)位數(shù)據,大•₩±(dà)小(xiǎo)通(tōng)常為(wèi)兩個(gè)bit。作 π(zuò)為(wèi)一(yī)個(gè)标志(zhì)位,它提供了(le)關γ∑于系統重置狀态的(de)快(kuài)速參考。

      當我們談到(dà₹σo)需要(yào)截取的(de)FV時(shí),特指Reset Flag和(hé)M¶₽₽<sgCntLower(消息計(jì)數(®≠shù)器(qì)的(de)低(dī)位部分(fēn))。如(rú)圖7所示,‍σ這(zhè)些(xiē)組件(jiàn)如(rú)何組合以形成完整的(de)∞ ↔‌FV。同時(shí),它們之間(jiān)的(de)更€♠↑♥新關系和(hé)如(rú)何相(xiàng)互影(yǐ'≥ng)響可(kě)以在圖8中看(kàn)到(dào)。這(zhè)∞×種設計(jì)确保了(le)在保持消息的(de)唯一(yī)性和(hé)安全♦λ §性的(de)同時(shí),系統能(néng)夠高(gāo)效±π地(dì)進行(xíng)操作(zuò)。

圖片

圖7 FV構成與截取圖

圖片

圖8 FVCnt更新邏輯圖

      &nbs✔εp;接下(xià)來(lái),我們将探討(t©∏'ǎo)SecOC的(de)同步報(bào)文(wén)(稱為(wèi)Syncλ×Msg)及其結構。在SecOC的(de)上(shàng)下(xià)文(wén)中,同步報(bào)文(wén)起∏>著(zhe)至關重要(yào)的(de)作(zuò)用(yòng),它确保σ π系統中的(de)所有(yǒu)實體(tǐ)(例如(rú)Slave)與主控制(zh>≤♠'ì)實體(tǐ)(例如(rú)Master或通(tōng₹✔←)常在整車(chē)中的(de)網關)保持 δ€↓同步。簡而言之,它允許這(zhè)些(xiē)實體(tǐ)對(du≥§ε&ì)關鍵的(de)計(jì)數(shù)器(qì)值和(hé)狀态有(yǒu)一(y±♦Ωī)個(gè)統一(yī)的(de)理(lǐ)解,從(cóng)而确保整個(gè)通​∞♣€(tōng)信過程的(de)安全性。同步報(bào"☆)文(wén)的(de)構成如(rú)下(xiàλ§Ω):TripCnt、ResetCnt和(hé)MAC。如(rú)圖9所示,這(zhè)三個(gβ♥♥σè)部分(fēn)組合形成了(le)完整的(de)同步報(bào)文(wén)。M<♠↕↓aster(通(tōng)常是(shì)網關)會(huì)定期發送這(zhè)些(xiē)同步報‍¶≈'(bào)文(wén),确保系統中的(de)所有(yǒu)Slav₹←>©e能(néng)夠與之保持同步,從(cóng)而維護整個(gè)系統的(deδ​)安全通(tōng)信。

圖片

圖9 SyncMsg構成

       同步報(&☆©★bào)文(wén)的(de)MAC計(jì)算(suàn)與安全報(bào)&>>文(wén)的(de)MAC确實存在細微(w←‍ēi)差異。在同步報(bào)文(wén)的(de)環境中,為(wèi)了(le​λ)确保消息的(de)真實性和(hé)完整性,我們需要(yào)使用(yòng)稍有(₽€₹yǒu)不(bù)同的(de)數(shù)據元素來(lái)生(shēng)成MAC。在同步報(bào)文(wén)中,生(shēng)成MAC需要(yào)以下♠"×(xià)數(shù)據:

       - Message ID (MsgID):這(zhè)是(shì)一(yī)個(gè)唯一(yī)标識該消息的(de)值。它有(yǒu)助<↔₹于區(qū)分(fēn)和(hé)識别不(bù)同的(de)同步報(b'₽ào)文(wén)。MsgID通(tōng)常占用(yòng)兩個(gè)Byte¥±。

       - Freshness Value (FV):在這(zhè)種上(shàng)下(xià)文(wén)中,FV由T♥↓♣ripCnt和(hé)ResetCnt組成。

      為(wèi)了(le)确保整體(tε©&ǐ)數(shù)據長(cháng)度為(wè♥←i)整個(gè)Byte,如(rú)果這(zhè)兩個(gè)計(jì)數(shù)器(qì<€<)的(de)組合不(bù)構成完整的(de)Byte₽ ←長(cháng)度,那(nà)麽後續的(de)空(kōng)↔§♥₹白(bái)部分(fēn)會(huì)用(yòng)0來(lái)補齊。如(rú)圖10§∏♥所示,MsgID、TripCnt和(hé)Reset→≥Cnt是(shì)順序排列的(de),然★‍≤後将這(zhè)些(xiē)數(shù)據輸入加密算(suàn)法來(lái)生(shēng)成×®₽σMAC。

圖片

圖10 同步報(bào)文(wén)MAC生(shēng)成數(sh∏✘'γù)據構成圖

      上(shàng)文(wén)為(w♣$πèi)大(dà)家(jiā)淺析了(le)SecOC的(de)通(tōng)訊機(α♠jī)制(zhì)。接下(xià)來(lái),我們将模拟這(zhè)一(yī)機(jī)制(z÷₽λ&hì)進行(xíng)實驗。利用(yòng)特定的(de)CAN總線仿真工(gōng)具,我們配置了(le)β↑一(yī)個(gè)Master節點和(hé)一(yī)個(∞β§gè)Slave發送節點。為(wèi)确保仿真節點的(de)SecOC機(jī)制(zhì)無誤,÷∞我們還(hái)使用(yòng)了(le)某CAN總線測試工(gōng)具進行(≠&<>xíng)驗證和(hé)檢驗。

      将同步報(b∞€ào)文(wén)ID配置為(wèi)0x100、Tr"≠ipCnt的(de)長(cháng)度配置為(wèi)24 bit、ResetCnt♦α★的(de)長(cháng)度配置為(wèi)18 bit以及MAC的(de)長(cháng)度配♠<置為(wèi)16 bit,MAC生(shēng)成的(de)對&₩(duì)稱加密算(suàn)法選擇為(wèi)AES-128,密鑰為(wδ✘ èi)1234567890123456789012345678γ ÷₹9012。将以上(shàng)同步報(bào)文(wén)以2秒(miǎo)将Res₩∏∏₩etCnt遞增的(de)方式。具體(tǐ)信息如(rú)圖11±'所示。

圖片

圖11 同步報(bào)文(wén)配置信息表

      将安全報(bào)文(wén)ID配置為(wèi)0x0∑→≠、IPDU長(cháng)度配置為(wèi)40 bit,FV的(de)長(cháng)度配置為∏ε>(wèi)8 bit以及MAC的(de)長(cháng)度配置為(wèi)16×λ±< bit。MAC生(shēng)成的(de)對(duì)稱加密算(suàn)法選γ∑★擇為(wèi)AES-128,密鑰為(wèi)123456789012345♠≥→£67890123456789012。具體(tǐ)信息如(rú)圖12所示。

圖片

圖12 安全報(bào)文(wén)配置∏$←✘信息表

       在ε λ仿真節點中完成以上(shàng)參數(shù)的(de)配置後,在測試工(gōng→α$γ)具中完成相(xiàng)應的(de)參數(sh♣¥→'ù)配置,并進行(xíng)SecOC機(jī)制(zhì)✔₹↓的(de)驗證,通(tōng)過測試結果調試自(zì)己的(de)仿真節點邏Ω∏輯。如(rú)圖13、14、15所示。

圖片

圖13 SecOC機(jī)制(zhì)參數(shù)配置圖

圖片

圖14 安全報(bào)文(wén)驗證圖

      在圖14中,紅(hóng"∑)色框中內(nèi)容表示測試工(gōn£★g)具作(zuò)為(wèi)安全報(bào)φ<♦ 文(wén)接收節點,收到(dào)發送節點(仿真節點)發送的(de)安全報(÷∏↔↔bào)文(wén)信息,其中要(yào)保護的(de)I-♥ &PDU為(wèi)78901234,截斷的(de)FV為(wèi>α£)00,截斷的(de)MAC為(wèi)E27277$λ ♥(16進制(zhì))。綠(lǜ)色框中內(nèi)容表示安全報(bào)文(wén)生(shēng)成♦β♣₩MAC時(shí)所需的(de)數(shù)據。藍(lán)色框中內(nè₹₩♦‍i)容為(wèi)測試工(gōng)具根據配置信息所生(shē¶✔ng)成的(de)MAC值。隻有(yǒu)測試工(gōng)具計(j¥✔∞→ì)算(suàn)的(de)MAC值與收到(dào)的(de)截斷MAC δγ值匹配才測試通(tōng)過。

圖片

圖15 同步報(bào)文(wén)驗證圖

      &nbs↓§p;在圖15中,紅(hóng)色框中內(nèi)容表示測試工(gōng)具作(zuò)為(w✔↕→≥èi)同步報(bào)文(wén)接收方,收到(dào)主節點發送的(de•< )同步報(bào)文(wén)信息,其中T♥ βripCnt值為(wèi)91,ResetCnt值為(wèi)77​→,截斷的(de)MAC為(wèi)D608(16進制(zhì))。綠(lǜ)色框中內(§​nèi)容表示測試工(gōng)具根據配置信息整合出來(lái)要(yào)生 ↓↑(shēng)成MAC的(de)數(shù)據₩€(16進制(zhì),符合前文(wén)圖10結 ‌•構)。藍(lán)色框中內(nèi)容表示測試工(gōng)具計(jì)算(suàn)得(ε​£de)到(dào)的(de)MAC值。隻有(yǒu)測試工(gōng)具計(‍λjì)算(suàn)的(de)MAC值與收到(dào)的(de)截斷MAC值匹配才測 ​✘試通(tōng)過。

本文(wén)對(duì)AUTOSAR Ω↔→SecOC通(tōng)訊機(jī)制(z€☆hì)進行(xíng)了(le)簡單的(de)闡述,并通(tōng)過建立仿真節點實現(xiàn)φσSecOC通(tōng)訊機(jī)制(zhì),随後通(tōng)過測試工(gō≠♦ng)具驗證所實現(xiàn)的(de)SecOC機(jī)制(×φzhì)。


參考文(wén)檔:

AUTOSAR. (2022). Specification of Secure☆£γ Onboard Communication. AUTOSAR S₽Ωtandard Working Specificatio‍λ↓n.


轉自(zì)汽車(chē)ECU開(kāi)發

北京德智尚車聯科技有限公司版權所有(yǒu) 京ICP證000000号   技(jì)術(shù)支→ΩΩ持:網站(zhàn)建設