0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用安全元件的3大固件驗(yàn)證用例

星星科技指導(dǎo)員 ? 來源:microchip ? 作者:microchip ? 2023-05-06 09:34 ? 次閱讀

在當(dāng)今的市場中,嵌入式電子系統(tǒng)種類繁多,并且需要獲得越來越多的認(rèn)證,例如工業(yè)應(yīng)用的IEC62443安全標(biāo)準(zhǔn),或者有時法規(guī)取決于其操作的關(guān)鍵性質(zhì)。然而,安全性不僅僅是法規(guī),而是關(guān)于實(shí)施基本和負(fù)責(zé)任的實(shí)踐,今天我們將討論小型和受限嵌入式系統(tǒng)的固件驗(yàn)證。每個嵌入式系統(tǒng)都基于其執(zhí)行的代碼(固件、軟件、RTL 等)運(yùn)行。在本系列的第一部分中,我們將研究如果固件受到攻擊,連接的起搏器、工業(yè)網(wǎng)關(guān)、物聯(lián)網(wǎng)嬰兒監(jiān)視器甚至工業(yè)機(jī)器中的電機(jī)會發(fā)生什么。

產(chǎn)品代碼是公司許多知識產(chǎn)權(quán)(IP)所在的位置。連接起搏器的代碼,控制著人類的生命,變得極其關(guān)鍵。同樣的心臟起搏器也需要認(rèn)證。在工業(yè)泵中,代碼是使電機(jī)性能更好的原因,因?yàn)樗雀偁帉κ指玫靥幚硭俣群团ぞ卣{(diào)節(jié)。工業(yè)網(wǎng)關(guān)代碼旨在以市場上最好的速度處理復(fù)雜的智能工廠網(wǎng)絡(luò)中非常大的有效載荷,但該網(wǎng)關(guān)背后是包含機(jī)器和操作員的工業(yè)網(wǎng)絡(luò)?,F(xiàn)在,如果要改變機(jī)器操作,這很快就會成為工廠中個人的安全問題。物聯(lián)網(wǎng)嬰兒監(jiān)視器代碼可確保與網(wǎng)絡(luò)的牢固連接,但也為父母提供有關(guān)新生兒的相關(guān)和私人信息。下面,我們分享了為什么公司的代碼對其知識產(chǎn)權(quán)如此珍貴的四個原因。公司應(yīng)考慮此處提到的各種現(xiàn)有標(biāo)準(zhǔn)中定義的威脅模型:

遠(yuǎn)程數(shù)字攻擊:漏洞是否遠(yuǎn)程訪問代碼以影響目標(biāo)或整個產(chǎn)品系列?

遠(yuǎn)程邏輯攻擊:漏洞利用是否集中在代碼中的錯誤上,該錯誤可以幫助黑客在網(wǎng)絡(luò)上遠(yuǎn)程擴(kuò)展攻擊?

本地物理攻擊:如果黑客可以物理訪問產(chǎn)品,可以對代碼執(zhí)行哪些操作,而不一定是利用錯誤?

本地邏輯攻擊:如果黑客對產(chǎn)品具有物理訪問權(quán)限,代碼錯誤中可以利用什么?

為了解決上述問題,近年來,政府和行業(yè)已開始制定物聯(lián)網(wǎng)安全法規(guī)以創(chuàng)建標(biāo)準(zhǔn)。例如,在工業(yè)市場中,ISA/IEC62443標(biāo)準(zhǔn)記錄了設(shè)計(jì)工業(yè)產(chǎn)品的安全實(shí)踐。來自歐洲的EN303656遵循歐洲政府的安全法規(guī)和指南,在當(dāng)?shù)叵M(fèi)市場銷售物聯(lián)網(wǎng)產(chǎn)品。UL2900 最初非常注重軟件安全實(shí)踐,現(xiàn)在正被大公司視為消費(fèi)者市場。在所有主要標(biāo)準(zhǔn)或法規(guī)中,您會發(fā)現(xiàn)建議驗(yàn)證代碼是否真實(shí)的常見要求。

那么,可以做些什么來保護(hù)這段代碼,需要權(quán)衡什么呢?

代碼需要通過加密操作進(jìn)行驗(yàn)證,以確保它是真實(shí)的。驗(yàn)證可以在嵌入式系統(tǒng)操作期間的不同時間點(diǎn)執(zhí)行。

何時驗(yàn)證代碼的真實(shí)性?

啟動時:常見的技術(shù)術(shù)語是安全啟動,它有多種方法可以使用對稱密鑰或非對稱密鑰實(shí)現(xiàn),僅驗(yàn)證摘要、簽名或整個代碼映像。安全啟動過程旨在確保在目標(biāo)嵌入式設(shè)計(jì)上僅執(zhí)行正版代碼。

在運(yùn)行時:這里更通用的術(shù)語是 IP 保護(hù)。固件工程師可以決定在系統(tǒng)運(yùn)行期間的任何相關(guān)點(diǎn)實(shí)施代碼驗(yàn)證,除了安全啟動和無線 (OTA) 更新之外,以確保它沒有被篡改。

OTA更新后:在物聯(lián)網(wǎng)世界中,一旦通過網(wǎng)絡(luò)“無線”推送新代碼圖像以替換現(xiàn)有代碼圖像,該新代碼必須在運(yùn)行之前驗(yàn)證為真實(shí)代碼。

上述三個嵌入式安全功能總體上與代碼驗(yàn)證實(shí)踐相關(guān)。

現(xiàn)在,讓我們看一下實(shí)現(xiàn)技術(shù),然后我們將回顧它們的權(quán)衡。從根本上說,代碼需要在企業(yè)環(huán)境中進(jìn)行“簽名”,這是理想情況下安全的,然后在嵌入式系統(tǒng)中進(jìn)行“驗(yàn)證”。這些“簽名”和“驗(yàn)證”操作由加密算法和對稱或非對稱密鑰集執(zhí)行。有四個主要步驟,如下圖所示。第一個是查看制造過程中發(fā)生的情況以及如何處理代碼加密和簽名。第二個是代碼如何加載到嵌入式系統(tǒng)(安全加載器)中。第三步涉及如何將代碼下載到嵌入式系統(tǒng)中。第四步側(cè)重于嵌入式系統(tǒng)制造后內(nèi)部發(fā)生的情況,以確保在目標(biāo)應(yīng)用程序上運(yùn)行的代碼確實(shí)是真實(shí)的。

使用對稱密鑰在制造過程中對操作進(jìn)行簽名

對稱加密基于共享密鑰體系結(jié)構(gòu),換句話說,一對完全相同的兩個密鑰(對稱密鑰或也稱為共享密鑰)。主要的缺點(diǎn)是,如果有人訪問一個密鑰,另一個共享密鑰是相同的,并且系統(tǒng)很容易被擊敗。此外,基本實(shí)踐要求為每個設(shè)備使用不同的對稱密鑰,這會產(chǎn)生一個邏輯悖論:如何將唯一的對稱密鑰配置到整個設(shè)備隊(duì)列中。因此,由于易于實(shí)施和項(xiàng)目進(jìn)度限制,開發(fā)人員對整個設(shè)備群使用相同的對稱密鑰,因此對這些密鑰的暴露變得更糟。但是讓我們來看看它。第一步發(fā)生在您的公司環(huán)境中。

作為原始最終制造商 (OEM),您的代碼將通過“哈希”函數(shù)傳遞。我們在這里使用 SHA256 作為示例。此哈希的輸出是代碼圖像的 32 字節(jié)摘要。

該哈希是使用對稱密鑰(簽名 OEM 密鑰)執(zhí)行的。

輸出是“MAC”或消息身份驗(yàn)證代碼。

MAC 提供給合同制造商 (CM),后者將在生產(chǎn)現(xiàn)場刷新主控制器。在此階段,MAC 和對稱密鑰都由 CM 加載。

請注意,這是供應(yīng)鏈漏洞發(fā)生的地方,因?yàn)槊荑€永遠(yuǎn)不應(yīng)該暴露,當(dāng)然不應(yīng)該在制造過程中或微控制器內(nèi)暴露。此時此刻,密鑰將暴露給工廠內(nèi)的操作員以及如果 OEM 尚未完成將執(zhí)行 MAC 的設(shè)備。

poYBAGRVrkiALUvGAAEuOdqRXf4642.png

圖 1:OEM 站點(diǎn)的對稱簽名

使用非對稱密鑰在制造期間對操作進(jìn)行簽名

更可靠且可擴(kuò)展的方法包括利用非對稱密鑰而不是對稱密鑰。非對稱密鑰是兩個密鑰不同但通過加密算法在數(shù)學(xué)上相關(guān)的密鑰對。例如,我們將使用ECC-P256,這是嵌入式系統(tǒng)中最常用和最有效的算法之一。私鑰將對代碼進(jìn)行簽名,公鑰(根據(jù)私鑰計(jì)算)將驗(yàn)證簽名和/或摘要。

pYYBAGRVrkSAMfu3AAFXBqtc1O8942.png

圖 2:OEM 站點(diǎn)的非對稱代碼簽名

問問自己,在您的制造過程中,誰可以訪問您的密鑰?

無論您選擇對稱還是非對稱架構(gòu),都有幾個重要問題要問自己。由于您需要在嵌入式系統(tǒng)中加載加密密鑰以驗(yàn)證映像,因此請問自己:

您能否信任您的合同制造商提供保護(hù)您簽名代碼的密鑰?請記住,您的代碼是您公司的 IP。如果他們有密鑰,則可以訪問您的代碼。

您的 CM 是否有權(quán)訪問簽名密鑰或用于驗(yàn)證的密鑰?當(dāng)您想要更改一個或多個合同制造商時,您的密鑰會發(fā)生什么情況?

您是否因?yàn)閾碛忻荑€而依賴您的合同制造商?

如果您雇用多個合同制造商,您如何管理各種密鑰對集?

合同制造商如何保護(hù)密鑰?安全審核結(jié)果是什么?

當(dāng)涉及到制造中處理鑰匙的物流時,也有很多供應(yīng)鏈問題需要考慮。簽名密鑰始終是與所有可能的人隔離的最關(guān)鍵密鑰,最好使用 HSM。但是現(xiàn)在您處于這樣一種情況,即代碼驗(yàn)證成為一個非常高的價(jià)值目標(biāo),因?yàn)樗刂浦Wo(hù)代碼的程度(請記住,這是您公司的 IP)。密鑰現(xiàn)在掌握在您的合同制造商手中,這是您的漏洞暴露增加的時候。您可能想問自己幾個問題,包括:

您知道您的密鑰是否安全存儲或在員工之間共享嗎?

由于制造設(shè)備網(wǎng)絡(luò)保護(hù)不佳,您的密鑰是否可以從工廠外部遠(yuǎn)程訪問?

您的員工是否可以簡單地使用USB記憶棒離開包含驗(yàn)證密鑰的工廠,以及如何對其進(jìn)行審核和信任?

如果負(fù)責(zé)鑰匙的員工離開合同制造商的工作,鑰匙會怎樣?

您的嵌入式系統(tǒng)中的密鑰在哪里?

如果您有公鑰在傳統(tǒng)微控制器閃存中驗(yàn)證固件,請三思而后行。然后,加密將成為代碼的二進(jìn)制映像的一部分。傳統(tǒng)的工程師只需在微控制器或處理器的閃存中加載密鑰(公共或?qū)ΨQ)。讓我們談?wù)勀銘?yīng)該問自己的問題和你應(yīng)該思考的答案。

此密鑰有多大價(jià)值,攻擊者可以用它做什么?

截至今天,仍然有大量設(shè)備將密鑰存儲在閃存中。攻擊者的一些基本策略是嘗試使用各種技術(shù)訪問設(shè)備的內(nèi)存,例如緩沖區(qū)溢出(例如:Heartbleed)、HEX 文件提取或其他方法來訪問位于內(nèi)存中的密鑰。這些都是非常真實(shí)的攻擊,一些公司正在報(bào)告其系統(tǒng)中的此類漏洞。此時,所有賭注都已關(guān)閉,開始發(fā)起可擴(kuò)展的攻擊。如果每個密鑰都可以像二進(jìn)制映像中一樣訪問,那么它們就會變得可更改、可重現(xiàn),并且遠(yuǎn)程訪問大型隊(duì)列變得越來越可能。如果我們還記得本文前面的內(nèi)容,使用對稱密鑰并不是最可靠的代碼簽名策略。現(xiàn)在讓我們假設(shè)驗(yàn)證代碼的密鑰位于控制器內(nèi)的 OTP 內(nèi)。OTP 方法是使您的系統(tǒng)更加健壯的合乎邏輯的第一步,因?yàn)楝F(xiàn)在密鑰位于不可變的內(nèi)存區(qū)域中。不可變并不意味著不可訪問或不可讀,它只是意味著不可更改。根據(jù)代碼中的值或 IP 值,代碼的值是應(yīng)重視密鑰的金額。因此,如果您的密鑰是可訪問的,則可以讀取、復(fù)制和重復(fù)使用?,F(xiàn)在,任何流氓用戶都可以合法地使用該密鑰來驗(yàn)證自己的代碼。

如果是對稱密鑰,那將是最壞的情況,尤其是在系統(tǒng)連接云的情況下。當(dāng)密鑰被訪問時,攻擊者現(xiàn)在可以執(zhí)行其流氓代碼的MAC,并使用checkMAC輕松驗(yàn)證它,因?yàn)楹灻麑ΨQ密鑰與驗(yàn)證代碼的對稱密鑰相同。更糟糕的是,如果沒有使用密鑰多樣化,那么仔細(xì)考慮擁有整個設(shè)備組密鑰的人員列表非常重要。您所有連接的嬰兒監(jiān)視器工業(yè)機(jī)器都可能被偽造,您的所有 OTA 更新都可能損壞,情況可能會變得更糟。

如果它是控制器閃存中的公鑰,甚至是訪問的 OTP,則流氓用戶現(xiàn)在可以復(fù)制密鑰并隨意重復(fù)使用它以使用戶授權(quán)合法化,然后安裝惡意代碼并在目標(biāo)微控制器上運(yùn)行它。

使用公鑰基礎(chǔ)結(jié)構(gòu)與對稱密鑰體系結(jié)構(gòu)要健壯得多,因?yàn)閷Υa進(jìn)行簽名的私鑰是不同的,但在數(shù)學(xué)上與驗(yàn)證代碼的公共相關(guān)。也就是說,訪問公鑰允許攻擊者查看并觸發(fā)代碼的驗(yàn)證,還可以在執(zhí)行之前進(jìn)行解密。此時,問題就變成了,“現(xiàn)在我看到了代碼,如果我更改代碼并繞過公鑰的驗(yàn)證怎么辦?為了解決這個問題,除了適當(dāng)?shù)募用芗铀倨鳎ㄈ?a target="_blank">Microchip安全元件的ECC-P256)之外,還需要微控制器或處理器內(nèi)部的BootROM功能。BootROM 將確??刂破靼l(fā)出驗(yàn)證命令的內(nèi)存區(qū)域也是不可變的,并且無法繞過。然而,訪問公鑰仍然是一個基本問題。

使用對稱密鑰與非對稱密鑰進(jìn)行固件驗(yàn)證的優(yōu)缺點(diǎn)是什么?

鑰匙 缺點(diǎn)
對稱 少:
簡單加密
基本實(shí)現(xiàn)
好多:
被盜時很容易復(fù)制密鑰
可擴(kuò)展攻擊的風(fēng)險(xiǎn)更高
難以部署 管理唯一密鑰隊(duì)列
非 對稱 好多:
強(qiáng)大的加密技術(shù)
可擴(kuò)展的關(guān)鍵基礎(chǔ)架構(gòu)
使用 ECC 密鑰優(yōu)化內(nèi)存占用
一些:
固件驗(yàn)證沒有缺點(diǎn)
ECDSA比SHA256更長的時間

在第 1 部分中,我們詳細(xì)討論了在應(yīng)用程序中實(shí)現(xiàn)固件驗(yàn)證的重要性。您的應(yīng)用程序代碼需要使用加密操作進(jìn)行驗(yàn)證,以確保它是真實(shí)的。驗(yàn)證可以在嵌入式系統(tǒng)操作期間的不同時間點(diǎn)執(zhí)行,例如在啟動時、運(yùn)行時和安全固件升級期間。有許多技術(shù)可以使用非對稱和對稱加密算法實(shí)現(xiàn)固件驗(yàn)證。這些技術(shù)中的每一種都有自己的優(yōu)勢和權(quán)衡。

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5053

    文章

    18915

    瀏覽量

    300878
  • 物聯(lián)網(wǎng)
    +關(guān)注

    關(guān)注

    2899

    文章

    43807

    瀏覽量

    369224
  • 電機(jī)
    +關(guān)注

    關(guān)注

    141

    文章

    8837

    瀏覽量

    144621
收藏 人收藏

    評論

    相關(guān)推薦

    固件漏洞安全問題的解決辦法

    如何解決?  據(jù)萊迪思半導(dǎo)體亞太區(qū)應(yīng)用工程(AE)總監(jiān)謝征帆介紹,Sentry方案在啟動之前就會加密驗(yàn)證每個IC的固件以保證平臺安全,并且在整個過程中都將進(jìn)行實(shí)時檢測攻擊。當(dāng)檢測到攻擊時,Sentry會
    發(fā)表于 09-07 17:16

    如何重用Bootloader固件驗(yàn)證簽名并解密數(shù)據(jù)呢

    您還有第二個MCU或其他要通過Z-Wave OTA傳輸?shù)臄?shù)據(jù)文件。如何重用Bootloader固件驗(yàn)證簽名并解密數(shù)據(jù)?引導(dǎo)加載程序中已經(jīng)存在用于驗(yàn)證和解密文件的代碼,并且眾所周知。重用現(xiàn)有的引導(dǎo)
    發(fā)表于 02-14 07:54

    可以使用ECCDSA去驗(yàn)證FW固件的真實(shí)性嗎

    程序無法驗(yàn)證固件的真實(shí)性。我該如何調(diào)試這個問題?如果我從 STM32CubeIDE 單獨(dú)調(diào)試 SBSFU.elf,安全啟動會告訴我活動插槽中沒有固件(很明顯)所以不
    發(fā)表于 12-12 07:54

    如何使用ECDSA進(jìn)行固件真實(shí)性驗(yàn)證

    我使用帶有 KMS 的 X-CUBE-SBSFU 包在我的 ST MCU 上執(zhí)行固件更新。為了驗(yàn)證固件的真實(shí)性,我使用了 ECDSA。但是,我不明白為什么我只需要提供私鑰而不需要提供公鑰。如果我理解
    發(fā)表于 12-15 08:21

    如何安全實(shí)現(xiàn)車載網(wǎng)絡(luò)通信?

    。在BMS內(nèi),OEM通常需要更復(fù)雜的。由于BMS/網(wǎng)關(guān)是連通外界、向云端提供例行電池健康狀態(tài)報(bào)告的通信點(diǎn),因此安全擴(kuò)展為包含
    發(fā)表于 02-28 13:42

    ISP保護(hù)固件的刻錄安全

    安全,這時候就會將傳輸?shù)耐ㄓ嵾M(jìn)行加密,以保護(hù)其中的固件,這相當(dāng)于建立一個安全通道,來進(jìn)行ISP的傳輸與刻錄的動作。 以新唐科技的M2351微控制器為,其內(nèi)建
    發(fā)表于 08-21 08:12

    安全固件燒錄/SFI

    驗(yàn)證 ? 確實(shí)是STM32 ? 燒錄器外部總線上傳輸?shù)氖?b class='flag-5'>固件密文 ? 保證OEM固件的保密性 ? 使用License文件 ? 控制燒錄的次數(shù)
    發(fā)表于 09-11 06:27

    使用STM32安全啟動與固件更新

    STM32 X-CUBE-SBSFU 軟件包已經(jīng)發(fā)布,提供了安全啟動(Secure Boot)和安全固件更新(SecureFirmware Update)功能。安全啟動和
    發(fā)表于 09-11 07:35

    何使用專用身份驗(yàn)證IC設(shè)備連接應(yīng)用中的安全

    本文將介紹Maxim Integrated的專用身份驗(yàn)證IC之前的對稱和非對稱身份驗(yàn)證的基礎(chǔ)知識。然后,本文將討論如何使用這些IC輕松添加對行業(yè)標(biāo)準(zhǔn)認(rèn)證機(jī)制的支持。需要這些機(jī)制來確保在諸如物聯(lián)網(wǎng)(IoT),系統(tǒng)中的安全
    的頭像 發(fā)表于 02-06 09:43 ?3613次閱讀
    何使用專用身份<b class='flag-5'>驗(yàn)證</b>IC設(shè)備連接應(yīng)用中的<b class='flag-5'>安全</b>

    關(guān)于元件化的教程

    關(guān)于元件化的教程大家可以下載學(xué)習(xí)哦
    發(fā)表于 06-24 14:58 ?5次下載

    受約束隨機(jī)驗(yàn)證的效果真的比直接測試好嗎?

    當(dāng)介紹uvm驗(yàn)證時大家肯定都看過上面類似的圖片,以展示受約束的隨機(jī)驗(yàn)證相比直接測試如何具有先進(jìn)性。
    的頭像 發(fā)表于 04-10 11:13 ?932次閱讀

    使用安全元件進(jìn)行固件驗(yàn)證的實(shí)現(xiàn)示例

    微控制器中的不可變啟動存儲器是任何通過安全啟動和安全固件升級實(shí)現(xiàn)固件驗(yàn)證的應(yīng)用中非常重要的功能。最新的PIC24F低功耗微控制器(MCU)和
    的頭像 發(fā)表于 05-06 10:28 ?910次閱讀
    使用<b class='flag-5'>安全</b><b class='flag-5'>元件</b>進(jìn)行<b class='flag-5'>固件</b><b class='flag-5'>驗(yàn)證</b>的實(shí)現(xiàn)示例

    ATECC608A安全引導(dǎo)入門

    電子發(fā)燒友網(wǎng)站提供《ATECC608A安全引導(dǎo)入門.pdf》資料免費(fèi)下載
    發(fā)表于 09-21 10:38 ?3次下載
    ATECC608A<b class='flag-5'>安全</b>引導(dǎo)入門<b class='flag-5'>用</b><b class='flag-5'>例</b>

    蟻群算法在驗(yàn)證自動化回歸中的應(yīng)用有哪些?

    如今的芯片規(guī)模越來越大,功能也愈加復(fù)雜。相應(yīng)的驗(yàn)證也越來越復(fù)雜,動態(tài)仿真耗時也隨之增加,而且個數(shù)有時動輒上百個。
    的頭像 發(fā)表于 10-07 16:58 ?527次閱讀

    車規(guī)MCU的安全啟動固件

    。其主要功能包括以下幾個方面: 啟動驗(yàn)證安全啟動固件通過驗(yàn)證啟動代碼的完整性和真實(shí)性來確保系統(tǒng)啟動過程的安全性。它會對啟動代碼進(jìn)行數(shù)字簽名
    的頭像 發(fā)表于 10-27 17:20 ?2104次閱讀
    車規(guī)MCU的<b class='flag-5'>安全</b>啟動<b class='flag-5'>固件</b>