正文
在開(kāi)始講解安全啟動(dòng)(Secure Boot)之前,我們首先來(lái)簡(jiǎn)單認(rèn)識(shí)下為什么需要有車(chē)載信息安全?
為什么要有車(chē)載信息安全?
隨著智能駕駛,智能座艙的不斷發(fā)展,車(chē)內(nèi)ECU也越來(lái)越集中化,網(wǎng)絡(luò)化,ECU之間不單單可以直接通過(guò)以太網(wǎng)通信,同時(shí)也可以通過(guò)V2X技術(shù)與車(chē)外進(jìn)行通信,車(chē)與車(chē)之間,車(chē)與外界之間聯(lián)系越來(lái)越緊密,如此一來(lái)便無(wú)形之中給外界開(kāi)了諸多與車(chē)輛通信的渠道。
比如我們最為常見(jiàn)的整車(chē)OTA技術(shù),如果在行車(chē)過(guò)程中,ECU中運(yùn)行的軟件突然被黑客進(jìn)行篡改或者控制,將會(huì)大大影響到行車(chē)安全,隨著未來(lái)整車(chē)自動(dòng)駕駛技術(shù)的不斷發(fā)展,從L3到L4甚至到L5,人在駕駛方面起到的作用將會(huì)越來(lái)越小,此時(shí)整車(chē)的信息安全將會(huì)顯得至關(guān)重要。
而整車(chē)信息安全的就在于整車(chē)各個(gè)智能控制ECU在啟動(dòng)階段就做好相關(guān)的安全確認(rèn)與校驗(yàn),才能將風(fēng)險(xiǎn)及時(shí)控制住,如果在Runtime時(shí)候去檢測(cè),則可能會(huì)造成更大的行車(chē)安全問(wèn)題。
因此,在車(chē)載信息安全領(lǐng)域,在各個(gè)智能ECU節(jié)點(diǎn)的啟動(dòng)階段做好相應(yīng)的安全檢查技術(shù),也就是我們所說(shuō)的安全啟動(dòng)技術(shù),即Secure Boot技術(shù),毫無(wú)疑問(wèn)便可以將各種黑客造成的篡改早早的扼殺在搖籃之中,從而保證最終各ECU中程序Runtime中的行車(chē)安全。
Secure Boot簡(jiǎn)介
應(yīng)用背景
在芯片上運(yùn)行的代碼一般來(lái)說(shuō)可能會(huì)面臨兩大類(lèi)信息安全攻擊風(fēng)險(xiǎn):
代碼被惡意更改或者攻擊;
代碼IP被非法讀取或獲??;
對(duì)于第一類(lèi)風(fēng)險(xiǎn),我們需要采用某種安全機(jī)制來(lái)確保芯片運(yùn)行用戶指定的程序,防止代碼被惡意篡改;對(duì)于第二類(lèi)風(fēng)險(xiǎn),為了防止代碼被盜,需要針對(duì)代碼原文進(jìn)行加密存儲(chǔ),在芯片啟動(dòng)過(guò)程中再進(jìn)行解密后啟動(dòng)。
由于上述代碼加密或者啟動(dòng)代碼驗(yàn)證等方面都需要花費(fèi)更多的CPU資源來(lái)完成這些工作,因此僅僅依靠傳統(tǒng)CPU可能無(wú)法高效完成此類(lèi)工作,需要引入與安全加密有關(guān)的單獨(dú)硬件來(lái)做這方面工作,比如我們常說(shuō)的HSM或者HSE等。
HSM或者SHE模塊本質(zhì)上來(lái)講就是一種硬件加解密引擎,將這些特別耗時(shí)的任務(wù)交給專(zhuān)門(mén)的硬件模塊來(lái)處理,一方面能夠?qū)崿F(xiàn)Secure boot需求,另一方面也能夠提高程序啟動(dòng)效率。
一般來(lái)說(shuō),支持安全啟動(dòng)的芯片一般都會(huì)存在OTP區(qū)域(one time programable),其工作原理與保險(xiǎn)絲一致,芯片再出廠后,該區(qū)域內(nèi)所有的bit均為1,如果某個(gè)bit被燒寫(xiě)為0,就會(huì)徹底熔斷該bit,再也無(wú)法改變?cè)撝担簿褪窃僖矡o(wú)法更改為1了,一般該OTP區(qū)域用于存儲(chǔ)用戶的密鑰信息。
當(dāng)然有些芯片可能實(shí)現(xiàn)OTP的方式是通過(guò)某些控制寄存器來(lái)控制某些內(nèi)存區(qū)域,通過(guò)控制這些控制寄存器無(wú)法被再次改寫(xiě),從而間接完成被控制的內(nèi)存區(qū)域具備OTP區(qū)域特性。
實(shí)現(xiàn)目標(biāo)
具備安全特性如HSM的芯片加入到Secure boot功能之后,便會(huì)利用OTP區(qū)域內(nèi)存儲(chǔ)的用戶密鑰信息對(duì)即將加載的軟件進(jìn)行多級(jí)安全驗(yàn)證,從而最終建立起可靠的安全信任鏈,通過(guò)該安全啟動(dòng)信任鏈便可以完成軟件信息安全的五大特性指標(biāo):
真實(shí)性:即軟件版本未經(jīng)過(guò)篡改;
完整性:軟件版本包含了開(kāi)發(fā)者發(fā)布的所有內(nèi)容,沒(méi)有發(fā)生任何變化;
時(shí)效性:軟件版本是有效期間內(nèi)的版本;
不可抵賴(lài)性:軟件發(fā)布后,發(fā)布者不能否認(rèn)版本的所有權(quán);
機(jī)密性:軟件版本不泄露給未授權(quán)的個(gè)人或?qū)嶓w,不能被非法盜取或者讀??;
Secure Boot 相關(guān)密碼學(xué)方法總結(jié)
在講解Secure Boot實(shí)現(xiàn)策略之前,小T有必要跟大家一起先來(lái)了解下與Secure Boot有關(guān)的相關(guān)密碼學(xué)基本方法,這樣才能夠更為徹底的理解為什么Secure Boot實(shí)現(xiàn)策略要這么來(lái)做才更加安全。
代碼明文加密與對(duì)稱(chēng)加密算法
為了保護(hù)軟件版本IP,防止代碼被惡意篡改,因此有必要針對(duì)軟件版本進(jìn)行加密處理,即針對(duì)代碼明文進(jìn)行加密處理。
AES作為一種較為常見(jiàn)的對(duì)稱(chēng)加密算法,具備應(yīng)用范圍廣,相對(duì)容易隱藏,吞吐量高等優(yōu)點(diǎn),通常便可以用來(lái)做代碼加密處理。
所謂對(duì)稱(chēng)加密算法就是加密,解密都是用的同一個(gè)密鑰,如下圖1所示,代碼釋放者可以將如下代碼明文用AES加密算法加密成密文,然后將代碼密文燒寫(xiě)到對(duì)應(yīng)的存儲(chǔ)芯片中,安全芯片HSM或HSE在啟動(dòng)過(guò)程中將加密后的代碼密文加載到內(nèi)存中,同時(shí)利用OTP區(qū)域中事先燒錄的密鑰進(jìn)行代碼解密,此時(shí)便可以發(fā)現(xiàn)整個(gè)解密過(guò)程用到了相同的密鑰及相同算法的逆算法,從而通過(guò)解密將代碼密文恢復(fù)成明文。
該AES對(duì)稱(chēng)加密技術(shù)的顯著優(yōu)勢(shì)就是加解密速度快,特別適用于大數(shù)據(jù)量的加密存儲(chǔ)。
圖1-1 代碼明文對(duì)稱(chēng)加密過(guò)程
圖1-2 代碼密文對(duì)稱(chēng)解密過(guò)程
信息摘要與哈希函數(shù)
哈希函數(shù)又稱(chēng)為哈希算法,是一種可以將任意長(zhǎng)度的一組數(shù)據(jù)創(chuàng)建為定長(zhǎng)的小的數(shù)字指紋的方法,該數(shù)字指紋也被稱(chēng)作為信息摘要,為了便于理解,后續(xù)統(tǒng)一以這種數(shù)字指紋稱(chēng)呼為信息摘要。
哈希函數(shù)用到的就是哈希變換,哈希變換具備如下兩個(gè)典型的特征:
加密過(guò)程不可逆:也就意味著任何人都無(wú)法根據(jù)信息摘要推算出加密前的明文到底是什么?
一一對(duì)應(yīng)性:輸入的明文與信息摘要一一對(duì)應(yīng),絕對(duì)不會(huì)存在不同的明文哈希變換之后得到的信息摘要一樣的情況。
在Secure Boot中,一般采用SHA哈希函數(shù)來(lái)實(shí)現(xiàn)哈希變換,來(lái)完成最終的信息摘要生成,比如最為常見(jiàn)的SHA256,即生成的信息摘要為4個(gè)Byte(Hash Value),以便用來(lái)校驗(yàn)代碼的完整性,如下圖2所示。
圖2 哈希算法過(guò)程
信任鏈與非對(duì)稱(chēng)加密算法
在整個(gè)Secure Boot的過(guò)程中除了解決防止代碼IP被意外獲取之外,最為關(guān)鍵的還是要解決一個(gè)信任問(wèn)題,所謂信任問(wèn)題就是CPU加載的軟件版本是軟件發(fā)布者A發(fā)布的軟件版本,而不是別人的非法軟件版本。
要解決這類(lèi)信任問(wèn)題,就需要使用到非對(duì)稱(chēng)加密算法,所謂非對(duì)稱(chēng)加密算法就是該算法中存在兩個(gè)密鑰,一個(gè)是公鑰,一個(gè)是私鑰。它們是一對(duì),如果用公鑰進(jìn)行加密,只有用對(duì)應(yīng)的私鑰才能進(jìn)行解密,如果用私鑰進(jìn)行加密,也只有使用對(duì)應(yīng)的公鑰進(jìn)行解密才行。
一般來(lái)說(shuō),密鑰的長(zhǎng)度越長(zhǎng),算法便會(huì)越安全,一般來(lái)說(shuō)會(huì)使用非對(duì)稱(chēng)加密算法來(lái)解決上述信任問(wèn)題,如RSA非對(duì)稱(chēng)加密算法。它是一種公開(kāi)的、基于數(shù)學(xué)理論的加密算法,不依賴(lài)于任何機(jī)構(gòu)或個(gè)人,也不容易被破解,可以實(shí)現(xiàn)數(shù)字簽名與認(rèn)證工作。
如下圖3-1所示,在如下的安全啟動(dòng)過(guò)程中軟件版本發(fā)布者A可以使用RSA私鑰來(lái)實(shí)現(xiàn)對(duì)代碼的信息摘要進(jìn)行加密處理,生成數(shù)字簽名;然后芯片端則可以使用對(duì)應(yīng)的公鑰來(lái)對(duì)數(shù)字簽名進(jìn)行解密,從而來(lái)完成版本的真實(shí)性,同時(shí)一旦驗(yàn)證成功,則也具備不可抵賴(lài)性,因?yàn)橹挥熊浖姹景l(fā)布者A才具有私鑰,如圖3-2所示:
圖3-1 私鑰加密生成數(shù)字簽名過(guò)程
圖3-2 公鑰解密還原信息摘要過(guò)程
公鑰信息交互與數(shù)字證書(shū)
除了上述解釋軟件版本自身的信任問(wèn)題,還需要確保密鑰信息自身傳輸過(guò)程的安全性與保密性,此時(shí)就需要建立一套完備的信任機(jī)制來(lái)完傳遞密鑰。
數(shù)字證書(shū)就是一種權(quán)威性的文檔,由證書(shū)簽發(fā)機(jī)關(guān)(CA)簽發(fā)的對(duì)用戶公鑰的認(rèn)證,也就是我們常說(shuō)的"根證書(shū)"。 證書(shū)一般包含如下幾個(gè)方面的內(nèi)容:
電子簽證機(jī)關(guān)的信息;
公鑰用戶信息;
公鑰;
有效期和數(shù)字簽名等;
一般來(lái)說(shuō),該數(shù)字證書(shū)的格式跟驗(yàn)證方法需遵循X.509國(guó)際標(biāo)準(zhǔn)。
Secure Boot實(shí)現(xiàn)策略
至此,與車(chē)載信息安全Secure Boot有關(guān)的密碼學(xué)方法到此基本就介紹完畢了,想必大家應(yīng)該對(duì)secure boot為什么要使用這些密碼學(xué)方法有了更為清晰的認(rèn)識(shí),接下來(lái)我們將重點(diǎn)來(lái)講解Secure Boot如何利用上述密鑰學(xué)方法實(shí)現(xiàn)如下兩個(gè)方面的內(nèi)容:
安全鏡像生成流程:該流程主要介紹通過(guò)密碼學(xué)相關(guān)方法能夠生成供芯片端正確識(shí)別的合法軟件版本,防止非法軟件被意外啟動(dòng);
安全鏡像啟動(dòng)流程:該流程主要介紹通過(guò)密碼學(xué)相關(guān)方法來(lái)完成針對(duì)軟件版本的多層安全校驗(yàn)機(jī)制如何進(jìn)行實(shí)施;
整個(gè)安全啟動(dòng)版本需要校驗(yàn)的文件主要包含如下兩個(gè)部分:
符合X.509格式的數(shù)字證書(shū)或根證書(shū);
用戶軟件版本;
安全鏡像生成流程
如下圖4所示,整個(gè)安全鏡像文件生成包含如下幾個(gè)基本步驟:
S1:用戶使用AES加密算法來(lái)實(shí)現(xiàn)將代碼明文轉(zhuǎn)換為密文,同時(shí)用戶也需要提前在芯片端OTP區(qū)域燒錄該AES密鑰;
S2:用戶需采用SHA256哈希函數(shù)來(lái)對(duì)代碼密文進(jìn)行哈希運(yùn)算,最終得到該軟件版本密文的信息摘要;
S3:用戶需生成符合X.509國(guó)際標(biāo)準(zhǔn)的數(shù)字證書(shū)或者根證書(shū)文件,該文件中需包含上述軟件版本密文的信息摘要與RSA公鑰信息;
S4:用戶需采用SHA256哈希函數(shù)來(lái)對(duì)上述數(shù)字證書(shū)做哈希運(yùn)算,得到數(shù)字證書(shū)的信息摘要,同時(shí)用戶使用RSA私鑰對(duì)該信息摘要進(jìn)行加密處理,最終得到該用戶的數(shù)字簽名。
圖4 安全鏡像生成全流程
安全鏡像啟動(dòng)流程
如下圖5所示,較為詳細(xì)地展示了安全啟動(dòng)流程中的多級(jí)安全校驗(yàn)機(jī)制,從而保證最終的軟件的安全性,合法性與完整性。
S1:芯片復(fù)位啟動(dòng)后,通過(guò)硬件加密模塊如HSM或者HSE先對(duì)燒錄在Flash中的X.509標(biāo)準(zhǔn)數(shù)字證書(shū)公鑰信息進(jìn)行哈希運(yùn)算,并與提前燒錄到芯片OTP區(qū)域的公鑰哈希值進(jìn)行比對(duì),如果結(jié)果一致,那么則可以確認(rèn)公鑰的合法性,這個(gè)就是整個(gè)信息安全信任鏈的第一個(gè)環(huán)節(jié),也是十分重要的環(huán)節(jié);
S2:公鑰合法性確認(rèn)后,硬件加密模塊如HSM或HSE再利用數(shù)字證書(shū)的數(shù)字簽名進(jìn)行用戶合法性鑒權(quán)。具體操作步驟就是通過(guò)上述確認(rèn)的公鑰對(duì)數(shù)字簽名進(jìn)行解密處理得到證書(shū)的哈希值,同時(shí)針對(duì)存儲(chǔ)在Flash芯片上的證書(shū)重新進(jìn)行哈希運(yùn)算,對(duì)比兩個(gè)哈希值是否一致,如果一致,則鑒權(quán)成功,合法性得到了保障;
S3:然后再利用硬件加密模塊如HSM或HSE來(lái)重新計(jì)算Flash芯片上存儲(chǔ)的軟件版本的哈希值,即信息摘要,并與數(shù)字證書(shū)的信息摘要進(jìn)行比對(duì)確認(rèn)是否一致,如果匹配則說(shuō)明代碼沒(méi)有被惡意篡改, 用戶軟件版本的完整性與安全性得到了保障;
S4:芯片硬件加密模塊如HSM或HSE最終利用OTP區(qū)域提前存儲(chǔ)的AES對(duì)代碼進(jìn)行解密處理,從而得到代碼明文,最終便可以正常加載到CPU中啟動(dòng)運(yùn)行。
注意:上述任意一個(gè)流程沒(méi)有通過(guò),將不會(huì)進(jìn)行后續(xù)流程的校驗(yàn),則停留在當(dāng)前的Boot中。
圖5 安全鏡像啟動(dòng)全流程
由于Secure Boot相比傳統(tǒng)的Boot而言,增加了多重安全校驗(yàn)機(jī)制,毫無(wú)疑問(wèn)會(huì)增加代碼啟動(dòng)時(shí)間,從而因此第一幀報(bào)文發(fā)出過(guò)晚,因此需要權(quán)衡并優(yōu)化。針對(duì)這類(lèi)問(wèn)題在具體項(xiàng)目實(shí)施過(guò)程中與上述流程可能允許存在些許差異,常見(jiàn)的一些差異表現(xiàn)如下:
比如數(shù)字證書(shū)的公鑰信息提取在上位機(jī)已成功提取,無(wú)需軟件來(lái)做,減少啟動(dòng)時(shí)間;
軟件代碼的AES加解密措施有些項(xiàng)目考慮到啟動(dòng)時(shí)間問(wèn)題可能也會(huì)省略,這個(gè)具體還是要看項(xiàng)目端具體需求;
不同供應(yīng)商使用的Secure Boot流程與上述流程可能均存在差異,這個(gè)依照各個(gè)項(xiàng)目而定,本文只是提供了一般性的Secure Boot實(shí)現(xiàn)策略。
審核編輯:劉清
-
以太網(wǎng)通信
+關(guān)注
關(guān)注
2文章
54瀏覽量
11293 -
OTA
+關(guān)注
關(guān)注
7文章
612瀏覽量
36569 -
智能駕駛
+關(guān)注
關(guān)注
4文章
2810瀏覽量
49949 -
AES加密算法
+關(guān)注
關(guān)注
0文章
5瀏覽量
6018 -
智能座艙
+關(guān)注
關(guān)注
4文章
1131瀏覽量
16890
原文標(biāo)題:車(chē)載信息安全之Secure Boot實(shí)現(xiàn)策略
文章出處:【微信號(hào):談思實(shí)驗(yàn)室,微信公眾號(hào):談思實(shí)驗(yàn)室】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄

[1.3.1]--信息安全模型:信息在傳輸、存儲(chǔ)、處理過(guò)程中保護(hù)信息的CIA





嵌入式車(chē)載導(dǎo)航信息系統(tǒng)研究
實(shí)現(xiàn)向車(chē)載信息娛樂(lè)技術(shù)過(guò)渡
使用SECURE_BOOT和SECURE_SFLASH選項(xiàng)
AUTOSAR信息安全框架和關(guān)鍵技術(shù)相關(guān)資料介紹
如何安全實(shí)現(xiàn)車(chē)載網(wǎng)絡(luò)通信?
關(guān)于車(chē)載土壤樣品信息快速采集裝置
安全啟動(dòng)Secure Boot流程

帶你走進(jìn)信息安全軟件架構(gòu)

評(píng)論