汽車電子軟體-車輛信息安全2

汽車電子軟體-車輛信息安全2

來自專欄汽車電子軟體設計4 人贊了文章

上次我們講過一次車輛信息安全,認為車輛信息安全總共4個layer,作為汽車嵌入式軟體開發工程師來說,對於ECU層級知道的更多點,也最感興趣一點,那今天就從ECU這個Layer來講一下車輛信息安全。

汽車ECU關注的方面:

  • ECU不可被惡意刷寫;
  • ECU不可被外界通過診斷或標定介面惡意更改策略;
  • ECU的內存不可被外界訪問,需要保護起來;
  • ECU不可被外界通過調試介面訪問或惡意更改;

ECU安全保護示意圖

對於ECU層級的Security,HSM很關鍵,HSM的全稱是Hardware Security Module,如下圖所示,左邊是我們熟悉的Tricore及相應的外設,右邊就是HSM,中間隔了一層Firewall,可以有效保護HSM。HSM本身有自己的內核,可以做一些加密解密運算,同時內部也有一些Module是做各種安全演算法的,比如ECC256,Hash演算法等,還有隨機數生成TRNG;另外HSM也有自己獨有的RAM和Flash,只有HSM的內核才可以訪問,Tricore是訪問不了的。有了HSM,我們可以將一些Key存儲在HSM的Flash,也可以通過HSM來進行加密或解密,這樣安全性會得到相應的保證。

ECU的工程應用:

1)刷新的安全性

目前汽車ECU使用的刷新協議都是UDS On CAN,那我們怎麼去保證刷新的安全性呢?

第一,我們可以使用27服務,來禁止未經授權的刷新,通過Seedkey的校驗方式來進行,這種SeedKey的校驗可通過HSM來進行,提高安全性;

第二,我們需要確保數據來源的可靠性,這個可以通過數字簽名的方式來進行保證;將事先將我們要刷入的軟體進行簽名,將簽名的文件和要刷入的軟體一起傳到ECU中,ECU只有完成了簽名認證,才會完成數據的刷寫,否則拒絕刷寫。

在這裡簡單提一下加密的原理:

當前比較流行的是非對稱加密,即存在公鑰和私鑰,兩者是一對的,私鑰要經過嚴格保存,公鑰可對外開放。根據接收者還是發送者擁有私鑰,有兩種應用場景:

第一種是私鑰在接收方手裡,這樣的話可以做到加密解密的作用,即發送方使用接收方給的公鑰加密報文,該報文發出去之後,其他人沒法查看,只有Bob使用它的私鑰可以解開,這樣就體現了秘密傳輸的作用了;

Encryption/Decryption示意圖

第二種是私鑰在發送方手裡,這樣的話就實現了簽名和認證的作用,即私鑰在發送方手裡,當接收者接收到這個報文時,可以使用手裡的公鑰進行解密,且手裡的公鑰只能解密相應的私鑰加密的報文,這樣可保證數據來源的可靠性。但是存在另一個問題,就是假如黑客給了一個公鑰給接收者,自己用對應的私鑰進行加密報文,並將密文發給接收者,接收者還是收到了不可靠的密文,為了解決這個問題,需要一個認證機構來證明對應的公鑰是可靠的,即發送方需向自己的公鑰發送給權利機關,權利機關會將公鑰和其他相關必要信息放在一起進行Hash計算,生成一個證書,這個證書就可以證明公鑰是可信的。

Signing/Verification示意圖

2)標定/診斷功能

標定、診斷是通過XCP、UDS的通信協議來實現的,可通過安全訪問來進行限制,與刷新的安全校驗原理類似;

3)通信功能

通常我們不會將傳輸的報文進行加密,因為汽車匯流排上CAN通信報文非常多,不可能對每幀進行加密,然後傳輸,再解密,可能會消耗很多計算資源。我們可使用在CAN報文的基礎上加上一段密文,我們稱之為MAC(Message Authentication Code,這段是基於要發送的報文,經過Hash運算得到的密文,採用對稱加密,即加密和解密使用的是同一把鑰匙),隨著報文一起發送出去,到接收方時,會使用秘鑰進行驗證,只有算出的Hash值與MAC一致,才認為該幀報文傳輸是正確的。(MAC的校驗也可通過HSM來進行)

MAC校驗示意圖

而隨著MAC的需要,普通的CAN傳輸肯定滿足不了需求,因為普通的CAN每幀只有8位元組,如果除了MAC以外,實際傳輸的內容就會很少,這就影響了傳輸效率,所以CANFD應運而生。

4)Debug介面

Debug介面在ECU批產後,會使用相應話的配置初始化(比如IFX晶元可通過配置UCB的方式實現;ST晶元可通過DCF的方式來實現),將Debug保護起來,只有提供正確的Password才可解開Debug介面,進而可以對ECU進行調試。


推薦閱讀:

最初的心愿
ISO14229 翻譯
【連載三】基於PREEvision的智能網聯EE架構開發
汽車連接器選擇1-標準和性能
汽車電子軟體-MCU篇1

TAG:汽車電子 | 信息安全 | 汽車 |