隨著汽車智能化的發(fā)展,車輛已經(jīng)成為萬物互聯(lián)的一部分。我們知道,不管何種終端設(shè)備,一旦聯(lián)網(wǎng),就存在著信息泄露的風(fēng)險(xiǎn)。自然,車輛也不例外,一旦車輛聯(lián)網(wǎng),那么,車輛就有被黑客或者第三方攻擊、截獲信息的風(fēng)險(xiǎn)。因此,車輛信息安全,已成為車企關(guān)注的焦點(diǎn)。本文,主要討論MCU如何安全啟動(dòng)(Secure Boot),以及安全啟動(dòng)的信任鏈如何建立。
1、安全啟動(dòng)
討論汽車信息安全的話題,繞不過"安全啟動(dòng)"的討論。所謂安全啟動(dòng)就是確保每一個(gè)可執(zhí)行程序都是可信的、沒有被篡改的。目前,針對(duì)安全啟動(dòng)的方案有硬件(eg:HSM,Hardware Security Module)啟動(dòng)方案、軟件啟動(dòng)兩種方案。本文主要討論基于HSM的硬件實(shí)現(xiàn)方案,不管哪種方案,"信任根"和"信任鏈"是所有安全啟動(dòng)設(shè)計(jì)中,不可規(guī)避的兩個(gè)點(diǎn)。
(一)信任根
既然要安全啟動(dòng),那么,啟動(dòng)總得有一個(gè)起點(diǎn),而這個(gè)起點(diǎn)需要無條件信任,即:信任根。信任根必須具有不可攻破性,它可以是一段固化的程序或者硬件。以TC3xx為例,信任根是BootRom(也稱為固件)。
(二)信任鏈
有了信任根以后,就可以從信任根開始,展開軟件程序的逐級(jí)驗(yàn)證。工程中,常見的信任鏈驗(yàn)證方式如下:
如上圖,從芯片加電開始,程序從信任根開始執(zhí)行,逐級(jí)的驗(yàn)證下一級(jí)程序,只有每級(jí)程序驗(yàn)證通過才能啟動(dòng)下一級(jí)程序,以此確保每個(gè)程序是安全的、可信的。
一般來說,程序可分為"安全啟動(dòng)程序"和"用戶程序"。兩者的CPU可以使用相同的內(nèi)核架構(gòu),也可以使用不同的內(nèi)核架構(gòu)。一般,兩者屬于核間通信(Inter-Processor Communication)。
如上安全啟動(dòng)方式有一個(gè)不足:由于采用逐級(jí)驗(yàn)證方式,啟動(dòng)時(shí)間過長。如果OEM(Original Equipment Manufacturer)有嚴(yán)苛的啟動(dòng)時(shí)間要求,則這個(gè)方案很可能不能滿足要求。
所以,工程上的另一種安全啟動(dòng)方案:"安全啟動(dòng)程序"和"用戶程序"并行啟動(dòng),如下所示:
并行啟動(dòng)方案雖然可以縮短啟動(dòng)時(shí)間,但是,并行啟動(dòng)方案有被篡改用戶入口程序地址的風(fēng)險(xiǎn)(如果用戶程序入口存放在BootRom,幾乎不可能修改)。所以,為了兼顧啟動(dòng)時(shí)間和安全性,工程上還有另一種方案:對(duì)程序采取部分校驗(yàn)的方式,縮短啟動(dòng)時(shí)間的同時(shí),兼顧一定的安全性。
2、驗(yàn)證內(nèi)容及驗(yàn)證方法
(一)公鑰存儲(chǔ)
信任鏈的校驗(yàn)自然脫離不了密碼學(xué)的方法論,而密碼學(xué)又和密鑰緊密關(guān)聯(lián)。工程上,不管程序刷寫還是程序啟動(dòng),均需要使用公鑰驗(yàn)簽,所以,加強(qiáng)公鑰的保護(hù),至關(guān)重要。如果公鑰被第三方識(shí)別和替換,那么,第三方即可通過配對(duì)的私鑰偽造簽名信息,進(jìn)而"為所欲為",信息安全也不復(fù)存在。
我們知道,在車輛下線時(shí),OEM會(huì)在產(chǎn)線端分配根公鑰(也就是產(chǎn)品公鑰),產(chǎn)線刷寫時(shí),車輛不連接網(wǎng)絡(luò),也就不存在被網(wǎng)絡(luò)攻擊的風(fēng)險(xiǎn),因此,根公鑰的刷寫是安全的(PS:不考慮異常斷電場(chǎng)景)。一般來說,根公鑰可以刷寫到HSM專屬的OTP(One Time Program)存儲(chǔ)區(qū),此區(qū)域,不允許Host端訪問。如果根公鑰對(duì)應(yīng)的算法是RSA-2048、RSA-3072等,根公鑰的長度較長,所以,工程上,常存儲(chǔ)根公鑰的哈希值,通過校驗(yàn)根公鑰的哈希值,確認(rèn)根公鑰的完整性。
(二)級(jí)聯(lián)校驗(yàn)內(nèi)容
級(jí)聯(lián)校驗(yàn)內(nèi)容及時(shí)序如下所示:
首先,安全啟動(dòng)程序(eg:HSM)通過計(jì)算User Bootloader中的根公鑰,得到根公鑰的Hash Value,如果與HSM中的根公鑰Hash Value比對(duì)一致,則校驗(yàn)通過,之后,HSM通過根公鑰得到UserBootloader+AppPublic KeyHashValue簽名信息,如果與UserBootloader中的簽名信息一致,則校驗(yàn)通過,程序可以進(jìn)入U(xiǎn)ser Bootloader程序。
User Bootloader+App Public Key Hash Value驗(yàn)證通過,則說明User Bootloader中的App Public Key Hash Value完整。User Bootloader通過指定地址找到App Public Key,進(jìn)一步計(jì)算Application程序中的Application Public Key Hash Value,如果一致,則Application Public Key可以用于驗(yàn)證User Application,如果兩者的Application簽名信息一致,則驗(yàn)證通過,程序完成安全啟動(dòng)。
拓展思考:程序第一次燒錄時(shí),HSM中沒有根公鑰的Hash Value怎么辦?答:程序啟動(dòng)時(shí),如果發(fā)現(xiàn)HSM沒有根公鑰Hash Value,則認(rèn)為是首次啟動(dòng),User Bootloader去指定地址獲取Root Public Key,計(jì)算得到的Root Public Key Hash Value,并存儲(chǔ)到HSM,之后,執(zhí)行復(fù)位,重新啟動(dòng)程序,并進(jìn)行驗(yàn)證。
審核編輯:湯梓紅
-
mcu
+關(guān)注
關(guān)注
146文章
17123瀏覽量
350991 -
cpu
+關(guān)注
關(guān)注
68文章
10854瀏覽量
211583 -
硬件
+關(guān)注
關(guān)注
11文章
3312瀏覽量
66200 -
程序
+關(guān)注
關(guān)注
117文章
3785瀏覽量
81004
原文標(biāo)題:信息安全:安全啟動(dòng)的信任鏈如何建立?
文章出處:【微信號(hào):談思實(shí)驗(yàn)室,微信公眾號(hào):談思實(shí)驗(yàn)室】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論