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

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

在此安全軟件下載的上下文中,RSA 適合進行簽名驗證。這是因為它允許非??焖俚暮灻炞C,并且可以在不侵犯專利的情況下在軟件中實現(xiàn)。表 1 中顯示了此實現(xiàn)的一些性能值。
表 1:與各種加密算法相比,在 ARM MPCore @ 400 MHz 上測量的 RSA 簽名驗證的運行時間

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