作者:ANDR WEIMERSKIRCH, PH.D.,KAI SCHRAMM, PH.D.
當(dāng)今的嵌入式航空電子設(shè)備和其他安全關(guān)鍵型系統(tǒng)越來(lái)越面臨著提高安全性的要求。因此,利用數(shù)字簽名和Rivest Shamir Adleman(RSA)和橢圓曲線加密(ECC)算法的軟件下載/刷新方案有助于防止未經(jīng)授權(quán)的訪問(wèn)和偽造。
現(xiàn)代世界中越來(lái)越多的設(shè)備配備了多種嵌入式系統(tǒng)。這一趨勢(shì)的一個(gè)明顯例子是航空業(yè),它使用大量電子控制單元 (ECU) 來(lái)控制幾乎所有東西,例如空調(diào)、發(fā)動(dòng)機(jī)甚至制動(dòng)系統(tǒng)[1]。ECU通常允許通過(guò)引導(dǎo)加載程序下載更新的程序和數(shù)據(jù)代碼。必須確保軟件的真實(shí)性和安全啟動(dòng)過(guò)程,因?yàn)樵絹?lái)越多的嵌入式設(shè)備用于安全敏感應(yīng)用,例如飛機(jī)的發(fā)動(dòng)機(jī)控制。因此,必須防止對(duì)這些設(shè)備的任何本地或遠(yuǎn)程篡改[1]。
為了防止偽造或未經(jīng)授權(quán)的訪問(wèn),必須安全地更新軟件(通常存儲(chǔ)在可重新編程的閃存中)。在引導(dǎo)過(guò)程中(軟件通常在安全的后端服務(wù)器上簽名,然后使用引導(dǎo)加載程序安裝),系統(tǒng)必須通過(guò)檢查數(shù)字簽名來(lái)驗(yàn)證新固件的真實(shí)性。僅當(dāng)此驗(yàn)證成功時(shí),設(shè)備才能執(zhí)行新固件。討論了一種基于數(shù)字簽名的安全軟件下載/燒錄方案,集成了Rivest Shamir Adleman(RSA)算法和橢圓曲線加密(ECC)簽名算法,作為授予這種保證的一種手段[3]。
通過(guò)數(shù)字簽名實(shí)現(xiàn)真實(shí)性
數(shù)字簽名提供完整性和真實(shí)性;經(jīng)過(guò)數(shù)字簽名的數(shù)據(jù)不能被惡意第三方更改,否則接收方不會(huì)檢測(cè)到。此外,接收方可以驗(yàn)證數(shù)據(jù)是否確實(shí)由聲明的簽名者簽名。此外,簽名者不能否認(rèn)他是簽名的合法創(chuàng)建者(不可否認(rèn)性)。此外,數(shù)字簽名是使用非對(duì)稱加密算法(如 RSA 算法或 ECC)生成和驗(yàn)證的。
數(shù)字簽名的計(jì)算如圖 1 所示。有一對(duì)密鑰由私鑰SK和公鑰PK組成。只有簽名者可以訪問(wèn) SK,而 PK 可以公開分發(fā)。一般來(lái)說(shuō),SK只為嵌入式系統(tǒng)的制造商所知,例如航空業(yè)的OEM,而PK內(nèi)置于每個(gè)嵌入式系統(tǒng)中。程序代碼 x 首先被哈希為一個(gè)短的固定長(zhǎng)度值 y。通常,y 是通過(guò)應(yīng)用安全哈希算法 (SHA)1 系列的哈希函數(shù)來(lái)計(jì)算的。然后使用私鑰SK在y上計(jì)算數(shù)字簽名。此后可以使用公鑰PK驗(yàn)證簽名。
圖1:在嵌入式系統(tǒng)制造商處生成數(shù)字簽名

因此,軟件頒發(fā)者(即嵌入式系統(tǒng)的制造商)持有用于對(duì)軟件進(jìn)行簽名的私鑰SK,ECU持有相應(yīng)的公鑰PK用于驗(yàn)證它(再次參見圖1)。
安全軟件下載
利用安全的軟件下載過(guò)程是在現(xiàn)代嵌入式系統(tǒng)中維護(hù)這些所需信息安全級(jí)別的關(guān)鍵。安全軟件下載過(guò)程包括幾個(gè)獨(dú)特但至關(guān)重要的步驟(參見圖 2):
第 1 步:軟件開發(fā)完成。
步驟 2:將程序目標(biāo)代碼傳遞到軟件頒發(fā)者安全環(huán)境中的信任中心,該信任中心使用其私鑰 SK 對(duì)目標(biāo)代碼進(jìn)行簽名。
第 3 步:然后將簽名傳回并附加到程序目標(biāo)代碼。
第 4 步:代碼包和簽名包現(xiàn)在存儲(chǔ)在數(shù)據(jù)庫(kù)中,該數(shù)據(jù)庫(kù)可能包含不同嵌入式系統(tǒng)的版本。
步驟5:將適當(dāng)?shù)某绦虼a下載到嵌入式系統(tǒng)。
第 6 步:然后使用相應(yīng)的公共驗(yàn)證密鑰 PK 驗(yàn)證相應(yīng)的程序代碼。
圖2:安全軟件下載過(guò)程

在此安全軟件下載的上下文中,RSA 適合進(jìn)行簽名驗(yàn)證。這是因?yàn)樗试S非常快速的簽名驗(yàn)證,并且可以在不侵犯專利的情況下在軟件中實(shí)現(xiàn)。表 1 中顯示了此實(shí)現(xiàn)的一些性能值。
表 1:與各種加密算法相比,在 ARM MPCore @ 400 MHz 上測(cè)量的 RSA 簽名驗(yàn)證的運(yùn)行時(shí)間

頒發(fā)單個(gè)私鑰/公鑰對(duì)就足夠了,這樣私鑰 SK 存儲(chǔ)在信任中心,公鑰 PK 存儲(chǔ)在嵌入式系統(tǒng)中。信任中心可能是與任何計(jì)算機(jī)網(wǎng)絡(luò)斷開連接的電腦和保存密鑰的安全智能卡。嵌入式系統(tǒng)只需要存儲(chǔ)公鑰,這樣系統(tǒng)本身就不會(huì)存儲(chǔ)任何機(jī)密信息。但是,必須保護(hù)此公鑰免受操縱(也就是說(shuō),它必須存儲(chǔ)在可以讀取但不能覆蓋的安全內(nèi)存中[3])。因此,安全存儲(chǔ)插座包括只讀存儲(chǔ)器(ROM)或一次寫入多次讀取(WORM)存儲(chǔ)器,必須在生產(chǎn)過(guò)程中由制造商初始化[1]。
安全軟件刷機(jī)
在閃存過(guò)程中,每個(gè)軟件塊都可選加密,并事先計(jì)算簽名。接下來(lái),外部編程設(shè)備對(duì)引導(dǎo)加載程序進(jìn)行身份驗(yàn)證(例如,通過(guò)使用質(zhì)詢-響應(yīng)機(jī)制)。然后,外部設(shè)備逐塊傳遞到嵌入式系統(tǒng)的引導(dǎo)加載程序。引導(dǎo)加載程序解密并存儲(chǔ)每個(gè)塊,并在其上計(jì)算哈希[2]。最后,在引導(dǎo)加載程序計(jì)算出新閃存程序文件的哈希值后,它會(huì)執(zhí)行數(shù)字簽名驗(yàn)證。如果簽名驗(yàn)證成功,則接受并激活下載的文件。否則,將激活安全程序,引導(dǎo)加載程序?qū)⒌却螺d正確的閃存文件。
數(shù)字簽名確保安心
通常,固件中內(nèi)置了引導(dǎo)加載程序以更新程序。但是,在大多數(shù)情況下,沒(méi)有實(shí)施任何機(jī)制來(lái)避免下載以未經(jīng)制造商授權(quán)的方式更改設(shè)備行為的操縱程序。所提出的機(jī)制是操縱攻擊的有效對(duì)策。這種機(jī)制已經(jīng)在各種應(yīng)用中成功實(shí)施,例如汽車領(lǐng)域[3]、航空領(lǐng)域,甚至手機(jī)行業(yè)。我們強(qiáng)烈建議實(shí)施所述的基于數(shù)字簽名的非對(duì)稱加密方法。
審核編輯:郭婷
-
嵌入式
+關(guān)注
關(guān)注
5200文章
20458瀏覽量
334359 -
ecu
+關(guān)注
關(guān)注
14文章
984瀏覽量
57290
發(fā)布評(píng)論請(qǐng)先 登錄
什么是嵌入式應(yīng)用開發(fā)?
嵌入式軟件測(cè)試找bug的常見方法和秘訣
嵌入式系統(tǒng)應(yīng)用熱門的原因主要有幾個(gè)方面
系統(tǒng)嵌入式的學(xué)習(xí)路線
CW32嵌入式軟件開發(fā)的必備知識(shí)
嵌入式軟件分層架構(gòu)設(shè)計(jì)原則
嵌入式系統(tǒng)的定義和應(yīng)用領(lǐng)域
如何采用SAFERTOS和ESM保護(hù)嵌入式系統(tǒng)安全
RT-Thread 2025嵌入式軟件大賽重磅來(lái)襲
保護(hù)嵌入式系統(tǒng)免受未經(jīng)授權(quán)的軟件修改
評(píng)論