隨著汽車智能化的發展,車輛已經成為萬物互聯的一部分。我們知道,不管何種終端設備,一旦聯網,就存在著信息泄露的風險。自然,車輛也不例外,一旦車輛聯網,那么,車輛就有被黑客或者第三方攻擊、截獲信息的風險。因此,車輛信息安全,已成為車企關注的焦點。本文,主要討論MCU如何安全啟動(Secure Boot),以及安全啟動的信任鏈如何建立。
1、安全啟動
討論汽車信息安全的話題,繞不過"安全啟動"的討論。所謂安全啟動就是確保每一個可執行程序都是可信的、沒有被篡改的。目前,針對安全啟動的方案有硬件(eg:HSM,Hardware Security Module)啟動方案、軟件啟動兩種方案。本文主要討論基于HSM的硬件實現方案,不管哪種方案,"信任根"和"信任鏈"是所有安全啟動設計中,不可規避的兩個點。
(一)信任根
既然要安全啟動,那么,啟動總得有一個起點,而這個起點需要無條件信任,即:信任根。信任根必須具有不可攻破性,它可以是一段固化的程序或者硬件。以TC3xx為例,信任根是BootRom(也稱為固件)。
(二)信任鏈
有了信任根以后,就可以從信任根開始,展開軟件程序的逐級驗證。工程中,常見的信任鏈驗證方式如下:
如上圖,從芯片加電開始,程序從信任根開始執行,逐級的驗證下一級程序,只有每級程序驗證通過才能啟動下一級程序,以此確保每個程序是安全的、可信的。
一般來說,程序可分為"安全啟動程序"和"用戶程序"。兩者的CPU可以使用相同的內核架構,也可以使用不同的內核架構。一般,兩者屬于核間通信(Inter-Processor Communication)。
如上安全啟動方式有一個不足:由于采用逐級驗證方式,啟動時間過長。如果OEM(Original Equipment Manufacturer)有嚴苛的啟動時間要求,則這個方案很可能不能滿足要求。
所以,工程上的另一種安全啟動方案:"安全啟動程序"和"用戶程序"并行啟動,如下所示:
并行啟動方案雖然可以縮短啟動時間,但是,并行啟動方案有被篡改用戶入口程序地址的風險(如果用戶程序入口存放在BootRom,幾乎不可能修改)。所以,為了兼顧啟動時間和安全性,工程上還有另一種方案:對程序采取部分校驗的方式,縮短啟動時間的同時,兼顧一定的安全性。
2、驗證內容及驗證方法
(一)公鑰存儲
信任鏈的校驗自然脫離不了密碼學的方法論,而密碼學又和密鑰緊密關聯。工程上,不管程序刷寫還是程序啟動,均需要使用公鑰驗簽,所以,加強公鑰的保護,至關重要。如果公鑰被第三方識別和替換,那么,第三方即可通過配對的私鑰偽造簽名信息,進而"為所欲為",信息安全也不復存在。
我們知道,在車輛下線時,OEM會在產線端分配根公鑰(也就是產品公鑰),產線刷寫時,車輛不連接網絡,也就不存在被網絡攻擊的風險,因此,根公鑰的刷寫是安全的(PS:不考慮異常斷電場景)。一般來說,根公鑰可以刷寫到HSM專屬的OTP(One Time Program)存儲區,此區域,不允許Host端訪問。如果根公鑰對應的算法是RSA-2048、RSA-3072等,根公鑰的長度較長,所以,工程上,常存儲根公鑰的哈希值,通過校驗根公鑰的哈希值,確認根公鑰的完整性。
(二)級聯校驗內容
級聯校驗內容及時序如下所示:
首先,安全啟動程序(eg:HSM)通過計算User Bootloader中的根公鑰,得到根公鑰的Hash Value,如果與HSM中的根公鑰Hash Value比對一致,則校驗通過,之后,HSM通過根公鑰得到UserBootloader+AppPublic KeyHashValue簽名信息,如果與UserBootloader中的簽名信息一致,則校驗通過,程序可以進入User Bootloader程序。
User Bootloader+App Public Key Hash Value驗證通過,則說明User Bootloader中的App Public Key Hash Value完整。User Bootloader通過指定地址找到App Public Key,進一步計算Application程序中的Application Public Key Hash Value,如果一致,則Application Public Key可以用于驗證User Application,如果兩者的Application簽名信息一致,則驗證通過,程序完成安全啟動。
拓展思考:程序第一次燒錄時,HSM中沒有根公鑰的Hash Value怎么辦?答:程序啟動時,如果發現HSM沒有根公鑰Hash Value,則認為是首次啟動,User Bootloader去指定地址獲取Root Public Key,計算得到的Root Public Key Hash Value,并存儲到HSM,之后,執行復位,重新啟動程序,并進行驗證。
審核編輯:湯梓紅
-
mcu
+關注
關注
146文章
17321瀏覽量
352650 -
cpu
+關注
關注
68文章
10904瀏覽量
213023 -
硬件
+關注
關注
11文章
3381瀏覽量
66451 -
程序
+關注
關注
117文章
3795瀏覽量
81413
原文標題:信息安全:安全啟動的信任鏈如何建立?
文章出處:【微信號:談思實驗室,微信公眾號:談思實驗室】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
如何使用PSoC 61進行安全啟動?
禁用安全啟動Hades Canyon NUC
s32k312 MCU如何使用安全啟動功能?
Arm CryptoCell-312生成和驗證安全引導和安全調試證書鏈指南
使用STM32安全啟動與固件更新
美高森美推出安全啟動參考設計及主要特性
基于Arm的Renesas R-Car Gen 3 SoC設備的安全啟動
![基于Arm的Renesas R-Car Gen 3 SoC設備的<b class='flag-5'>安全</b><b class='flag-5'>啟動</b>](https://file.elecfans.com//web2/M00/3E/F5/pYYBAGJk9YyARlq6AAA83_3Wk6k176.png)
物聯網安全始于安全啟動
提高安全需求的標準:“安全啟動”的真正含義是什么
![提高<b class='flag-5'>安全</b>需求的標準:“<b class='flag-5'>安全</b><b class='flag-5'>啟動</b>”的真正含義是什么](https://file.elecfans.com//web2/M00/79/70/poYBAGNsopuAT5N6AAA9dg3CDek599.jpg)
評論