在當今的市場中,嵌入式電子系統種類繁多,并且需要獲得越來越多的認證,例如工業應用的IEC62443安全標準,或者有時法規取決于其操作的關鍵性質。然而,安全性不僅僅是法規,而是關于實施基本和負責任的實踐,今天我們將討論小型和受限嵌入式系統的固件驗證。每個嵌入式系統都基于其執行的代碼(固件、軟件、RTL 等)運行。在本系列的第一部分中,我們將研究如果固件受到攻擊,連接的起搏器、工業網關、物聯網嬰兒監視器甚至工業機器中的電機會發生什么。
產品代碼是公司許多知識產權(IP)所在的位置。連接起搏器的代碼,控制著人類的生命,變得極其關鍵。同樣的心臟起搏器也需要認證。在工業泵中,代碼是使電機性能更好的原因,因為它比競爭對手更好地處理速度和扭矩調節。工業網關代碼旨在以市場上最好的速度處理復雜的智能工廠網絡中非常大的有效載荷,但該網關背后是包含機器和操作員的工業網絡。現在,如果要改變機器操作,這很快就會成為工廠中個人的安全問題。物聯網嬰兒監視器代碼可確保與網絡的牢固連接,但也為父母提供有關新生兒的相關和私人信息。下面,我們分享了為什么公司的代碼對其知識產權如此珍貴的四個原因。公司應考慮此處提到的各種現有標準中定義的威脅模型:
遠程數字攻擊:漏洞是否遠程訪問代碼以影響目標或整個產品系列?
遠程邏輯攻擊:漏洞利用是否集中在代碼中的錯誤上,該錯誤可以幫助黑客在網絡上遠程擴展攻擊?
本地物理攻擊:如果黑客可以物理訪問產品,可以對代碼執行哪些操作,而不一定是利用錯誤?
本地邏輯攻擊:如果黑客對產品具有物理訪問權限,代碼錯誤中可以利用什么?
為了解決上述問題,近年來,政府和行業已開始制定物聯網安全法規以創建標準。例如,在工業市場中,ISA/IEC62443標準記錄了設計工業產品的安全實踐。來自歐洲的EN303656遵循歐洲政府的安全法規和指南,在當地消費市場銷售物聯網產品。UL2900 最初非常注重軟件安全實踐,現在正被大公司視為消費者市場。在所有主要標準或法規中,您會發現建議驗證代碼是否真實的常見要求。
那么,可以做些什么來保護這段代碼,需要權衡什么呢?
代碼需要通過加密操作進行驗證,以確保它是真實的。驗證可以在嵌入式系統操作期間的不同時間點執行。
何時驗證代碼的真實性?
啟動時:常見的技術術語是安全啟動,它有多種方法可以使用對稱密鑰或非對稱密鑰實現,僅驗證摘要、簽名或整個代碼映像。安全啟動過程旨在確保在目標嵌入式設計上僅執行正版代碼。
在運行時:這里更通用的術語是 IP 保護。固件工程師可以決定在系統運行期間的任何相關點實施代碼驗證,除了安全啟動和無線 (OTA) 更新之外,以確保它沒有被篡改。
OTA更新后:在物聯網世界中,一旦通過網絡“無線”推送新代碼圖像以替換現有代碼圖像,該新代碼必須在運行之前驗證為真實代碼。
上述三個嵌入式安全功能總體上與代碼驗證實踐相關。
現在,讓我們看一下實現技術,然后我們將回顧它們的權衡。從根本上說,代碼需要在企業環境中進行“簽名”,這是理想情況下安全的,然后在嵌入式系統中進行“驗證”。這些“簽名”和“驗證”操作由加密算法和對稱或非對稱密鑰集執行。有四個主要步驟,如下圖所示。第一個是查看制造過程中發生的情況以及如何處理代碼加密和簽名。第二個是代碼如何加載到嵌入式系統(安全加載器)中。第三步涉及如何將代碼下載到嵌入式系統中。第四步側重于嵌入式系統制造后內部發生的情況,以確保在目標應用程序上運行的代碼確實是真實的。
使用對稱密鑰在制造過程中對操作進行簽名
對稱加密基于共享密鑰體系結構,換句話說,一對完全相同的兩個密鑰(對稱密鑰或也稱為共享密鑰)。主要的缺點是,如果有人訪問一個密鑰,另一個共享密鑰是相同的,并且系統很容易被擊敗。此外,基本實踐要求為每個設備使用不同的對稱密鑰,這會產生一個邏輯悖論:如何將唯一的對稱密鑰配置到整個設備隊列中。因此,由于易于實施和項目進度限制,開發人員對整個設備群使用相同的對稱密鑰,因此對這些密鑰的暴露變得更糟。但是讓我們來看看它。第一步發生在您的公司環境中。
作為原始最終制造商 (OEM),您的代碼將通過“哈希”函數傳遞。我們在這里使用 SHA256 作為示例。此哈希的輸出是代碼圖像的 32 字節摘要。
該哈希是使用對稱密鑰(簽名 OEM 密鑰)執行的。
輸出是“MAC”或消息身份驗證代碼。
MAC 提供給合同制造商 (CM),后者將在生產現場刷新主控制器。在此階段,MAC 和對稱密鑰都由 CM 加載。
請注意,這是供應鏈漏洞發生的地方,因為密鑰永遠不應該暴露,當然不應該在制造過程中或微控制器內暴露。此時此刻,密鑰將暴露給工廠內的操作員以及如果 OEM 尚未完成將執行 MAC 的設備。
圖 1:OEM 站點的對稱簽名
使用非對稱密鑰在制造期間對操作進行簽名
更可靠且可擴展的方法包括利用非對稱密鑰而不是對稱密鑰。非對稱密鑰是兩個密鑰不同但通過加密算法在數學上相關的密鑰對。例如,我們將使用ECC-P256,這是嵌入式系統中最常用和最有效的算法之一。私鑰將對代碼進行簽名,公鑰(根據私鑰計算)將驗證簽名和/或摘要。
圖 2:OEM 站點的非對稱代碼簽名
問問自己,在您的制造過程中,誰可以訪問您的密鑰?
無論您選擇對稱還是非對稱架構,都有幾個重要問題要問自己。由于您需要在嵌入式系統中加載加密密鑰以驗證映像,因此請問自己:
您能否信任您的合同制造商提供保護您簽名代碼的密鑰?請記住,您的代碼是您公司的 IP。如果他們有密鑰,則可以訪問您的代碼。
您的 CM 是否有權訪問簽名密鑰或用于驗證的密鑰?當您想要更改一個或多個合同制造商時,您的密鑰會發生什么情況?
您是否因為擁有密鑰而依賴您的合同制造商?
如果您雇用多個合同制造商,您如何管理各種密鑰對集?
合同制造商如何保護密鑰?安全審核結果是什么?
當涉及到制造中處理鑰匙的物流時,也有很多供應鏈問題需要考慮。簽名密鑰始終是與所有可能的人隔離的最關鍵密鑰,最好使用 HSM。但是現在您處于這樣一種情況,即代碼驗證成為一個非常高的價值目標,因為它控制著您保護代碼的程度(請記住,這是您公司的 IP)。密鑰現在掌握在您的合同制造商手中,這是您的漏洞暴露增加的時候。您可能想問自己幾個問題,包括:
您知道您的密鑰是否安全存儲或在員工之間共享嗎?
由于制造設備網絡保護不佳,您的密鑰是否可以從工廠外部遠程訪問?
您的員工是否可以簡單地使用USB記憶棒離開包含驗證密鑰的工廠,以及如何對其進行審核和信任?
如果負責鑰匙的員工離開合同制造商的工作,鑰匙會怎樣?
您的嵌入式系統中的密鑰在哪里?
如果您有公鑰在傳統微控制器閃存中驗證固件,請三思而后行。然后,加密將成為代碼的二進制映像的一部分。傳統的工程師只需在微控制器或處理器的閃存中加載密鑰(公共或對稱)。讓我們談談你應該問自己的問題和你應該思考的答案。
此密鑰有多大價值,攻擊者可以用它做什么?
截至今天,仍然有大量設備將密鑰存儲在閃存中。攻擊者的一些基本策略是嘗試使用各種技術訪問設備的內存,例如緩沖區溢出(例如:Heartbleed)、HEX 文件提取或其他方法來訪問位于內存中的密鑰。這些都是非常真實的攻擊,一些公司正在報告其系統中的此類漏洞。此時,所有賭注都已關閉,開始發起可擴展的攻擊。如果每個密鑰都可以像二進制映像中一樣訪問,那么它們就會變得可更改、可重現,并且遠程訪問大型隊列變得越來越可能。如果我們還記得本文前面的內容,使用對稱密鑰并不是最可靠的代碼簽名策略。現在讓我們假設驗證代碼的密鑰位于控制器內的 OTP 內。OTP 方法是使您的系統更加健壯的合乎邏輯的第一步,因為現在密鑰位于不可變的內存區域中。不可變并不意味著不可訪問或不可讀,它只是意味著不可更改。根據代碼中的值或 IP 值,代碼的值是應重視密鑰的金額。因此,如果您的密鑰是可訪問的,則可以讀取、復制和重復使用。現在,任何流氓用戶都可以合法地使用該密鑰來驗證自己的代碼。
如果是對稱密鑰,那將是最壞的情況,尤其是在系統連接云的情況下。當密鑰被訪問時,攻擊者現在可以執行其流氓代碼的MAC,并使用checkMAC輕松驗證它,因為簽名對稱密鑰與驗證代碼的對稱密鑰相同。更糟糕的是,如果沒有使用密鑰多樣化,那么仔細考慮擁有整個設備組密鑰的人員列表非常重要。您所有連接的嬰兒監視器工業機器都可能被偽造,您的所有 OTA 更新都可能損壞,情況可能會變得更糟。
如果它是控制器閃存中的公鑰,甚至是訪問的 OTP,則流氓用戶現在可以復制密鑰并隨意重復使用它以使用戶授權合法化,然后安裝惡意代碼并在目標微控制器上運行它。
使用公鑰基礎結構與對稱密鑰體系結構要健壯得多,因為對代碼進行簽名的私鑰是不同的,但在數學上與驗證代碼的公共相關。也就是說,訪問公鑰允許攻擊者查看并觸發代碼的驗證,還可以在執行之前進行解密。此時,問題就變成了,“現在我看到了代碼,如果我更改代碼并繞過公鑰的驗證怎么辦?為了解決這個問題,除了適當的加密加速器(如Microchip安全元件的ECC-P256)之外,還需要微控制器或處理器內部的BootROM功能。BootROM 將確保控制器發出驗證命令的內存區域也是不可變的,并且無法繞過。然而,訪問公鑰仍然是一個基本問題。
使用對稱密鑰與非對稱密鑰進行固件驗證的優缺點是什么?
鑰匙 | 親 | 缺點 |
對稱 |
少: 簡單加密 基本實現 |
好多: 被盜時很容易復制密鑰 可擴展攻擊的風險更高 難以部署 管理唯一密鑰隊列 |
非 對稱 |
好多: 強大的加密技術 可擴展的關鍵基礎架構 使用 ECC 密鑰優化內存占用 |
一些: 固件驗證沒有缺點 ECDSA比SHA256更長的時間 |
在第 1 部分中,我們詳細討論了在應用程序中實現固件驗證的重要性。您的應用程序代碼需要使用加密操作進行驗證,以確保它是真實的。驗證可以在嵌入式系統操作期間的不同時間點執行,例如在啟動時、運行時和安全固件升級期間。有許多技術可以使用非對稱和對稱加密算法實現固件驗證。這些技術中的每一種都有自己的優勢和權衡。
審核編輯:郭婷
-
嵌入式
+關注
關注
5086文章
19143瀏覽量
306094 -
物聯網
+關注
關注
2909文章
44736瀏覽量
374485 -
電機
+關注
關注
142文章
9038瀏覽量
145737
發布評論請先 登錄
相關推薦
評論