我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師:周末洗了一個澡,換了一身衣服,出了門卻不知道去哪兒,不知道去找誰,漫無目的走著,大概這就是成年人最深的孤獨吧! 舊人不知我近況,新人不知我過往,近況不該舊人知,過往不與新人講。縱你閱人何其多,再無一人恰似我。
時間不知不覺中,來到新的一年。2025開始新的忙碌。成年人的我也不知道去哪里渡自己的靈魂,獨自敲擊一些文字算是對這段時間做一個記錄。一、背景信息今天,將為大家詳細介紹在微控制單元(MCU)上所應用的各類網絡安全技術手段。盡管車載MCU通常不會直接通過有線或無線網絡與互聯網相連,但一旦黑客成功攻破車載的無線通信系統(諸如Wi-Fi、藍牙等),他們便有可能借助控制器局域網(CAN)這一內部網絡訪問并控制MCU,進而對車輛安全構成嚴重威脅。因此,在MCU上部署網絡安全防護措施顯得尤為必要且緊迫。其中,安全啟動技術是一項至關重要的安全措施,它主要用于檢查并確保Bootloader(引導加載程序)的完整性和可靠性。Bootloader作為系統啟動的首個環節,負責加載并驗證后續啟動的軟件代碼。若Bootloader遭到篡改,整個系統的安全性將岌岌可危。通過安全啟動技術,我們可以在系統啟動之初就對Bootloader進行嚴格的校驗,一旦發現任何異常或篡改跡象,便立即阻止系統啟動,從而有效防止惡意軟件的入侵和執行。以下是一幅示意圖,它生動展示了如何運用特定機制來檢測和防止Bootloader被篡改的過程,確保了MCU從啟動之初就處于安全可控的狀態。當MCU通電啟動后,其內置的CSE模塊(Cryptographic Services Engine,即加密服務引擎)會立即發揮作用,從Code Flash存儲區域中安全讀取bootloader程序代碼。這一過程是安全啟動機制的關鍵起始步驟,旨在確保系統從源頭便處于受保護狀態。緊接著,CSE模塊會運用預先存儲的boot key,結合先進的AES-128加密算法,為所讀取的bootloader精心計算出一個MAC值(Message Authentication Code,即消息認證碼)。這個MAC值猶如bootloader的“數字指紋”,唯一且不可偽造,是驗證bootloader完整性和真實性的重要依據。CSE模塊會進行一項至關重要的比對工作:它將剛剛計算出的MAC值與預先存儲在CSE專用寄存器中的MAC值進行仔細比對。這個存儲在寄存器中的MAC值,是在bootloader初次刷寫或更新時,通過安全流程寫入并鎖定的,作為后續驗證的基準。如果比對結果顯示兩個MAC值完全一致,那么恭喜,安全啟動認證成功!此時,系統會置位一個表示安全啟動成功的數據位,并對其進行解鎖操作,以允許后續程序的執行。正如圖中黑色箭頭所指示的,一旦安全啟動認證通過,MCU便會立即開始執行bootloader程序,為系統的正常運行奠定堅實基礎。這一系列精密而嚴謹的操作,共同構成了MCU安全啟動的堅固防線,有效抵御了潛在的安全威脅,確保了系統從啟動之初便處于安全可控的狀態。二、安全通信下圖生動呈現了如何有效防范非法消息的發送,確保通信安全。在圖中,左側為主ECU(電子控制單元),右側為傳感器ECU,二者通過CAN(控制器局域網)網絡構建起通信橋梁。
在通信流程啟動時,主ECU的CSE模塊(加密服務引擎)會首先生成一個隨機數,這一隨機數作為本次通信的臨時密鑰,隨后將其發送給傳感器ECU。這一步驟為后續的加密通信奠定了基礎,確保了每次通信的唯一性和不可預測性。傳感器ECU在接收到隨機數后,會讀取傳感器的實時值,并將傳感器的值、從主ECU收到的隨機數以及預先共享的key #x,一同輸入給AES-128加密算法進行加密處理。AES-128作為一種廣泛認可的對稱加密算法,能夠確保消息在傳輸過程中的機密性和完整性。加密完成后,傳感器ECU將加密后的消息發送回主ECU。主ECU的CSE模塊在接收到加密消息后,會使用相同的key #x對消息進行解密操作,以還原出原始的傳感器值和隨機數。為了驗證消息的合法性,主ECU會將解密出來的隨機數與自己最初發送給傳感器ECU的隨機數進行比對。如果兩個隨機數完全一致,那么主ECU可以確信該消息來源于合法的傳感器ECU,且未在傳輸過程中被篡改,從而認為該消息是合法的。反之,如果隨機數不一致,則主ECU會判定該消息為非法消息,并立即將其丟棄,以確保系統的安全性和穩定性。這一系列精密而嚴謹的操作,共同構成了MCU間安全通信的堅實屏障,有效抵御了非法消息的入侵和篡改,為智能系統的可靠運行提供了有力保障。三、部件保護在汽車電子系統中,ECU(電子控制單元)作為核心組件,其唯一性直接關乎整個系統的安全與穩定運行。一旦ECU遭到替換或篡改,其固有的唯一ID或加密key便會發生不可預測的改變,進而對系統安全構成嚴重威脅。以下將通過一個具體實例,深入剖析這一風險是如何被精準識別與有效防控的。在通信流程啟動之初,主ECU會隨機生成一個獨一無二的隨機數,并將其發送至待檢測的ECU。這一隨機數作為本次身份驗證的臨時密鑰,為后續的加密通信奠定了安全基礎。ECU在接收到隨機數后,會立即將其與自身特有的ID進行組合,并運用預先共享的key #x,通過高級加密算法對組合數據進行加密處理。加密完成后,ECU將加密后的消息發送回主ECU,等待進一步的驗證。主ECU在接收到加密消息后,會使用相同的key #x對消息進行解密操作,以還原出原始的隨機數和ID。隨后,主ECU會進行兩項關鍵比對:一是檢查解密出的隨機數是否與自己最初發送的隨機數完全一致;二是驗證解密出的ID是否與本地存儲的ECU的ID相吻合。如果兩項比對結果均顯示一致,那么主ECU可以確信ECU的身份合法且未被篡改,系統將繼續保持正常運行狀態。反之,如果任一項比對結果出現差異,主ECU將立即判定ECU可能已被非法替換或篡改,并立即觸發相應的安全響應機制,如限制其功能、發出警報或通知維修人員等,以確保整個系統的安全性和穩定性不受影響。這一精密而嚴謹的部件保護機制,如同為汽車電子系統筑起了一道堅不可摧的安全防線,有效抵御了非法替換和篡改的風險,為智能出行的安全保駕護航。擱筆分享完畢!愿你我相信時間的力量做一個長期主義者
|