為了確保目標(biāo)嵌入式設(shè)備僅運行授權(quán)固件或僅使用授權(quán)配置數(shù)據(jù),我們需要提供一種方法來驗證信息的真實性和完整性。這意味著確保數(shù)據(jù)是可信的,并且隨后不會被修改。利用加密數(shù)字簽名(例如在信件底部蓋章或手動簽名)可以實現(xiàn)這種完整性。
隨著物聯(lián)網(wǎng)設(shè)備在我們的生活中激增,惡意控制它們的不斷嘗試也擴大了,因此采用嵌入式系統(tǒng)安全性來保護設(shè)備勢在必行。例如,當(dāng)黑客試圖修改物聯(lián)網(wǎng)設(shè)備固件或操作配置數(shù)據(jù)時構(gòu)成的威脅。在制造過程中,這些設(shè)備使用的固件和數(shù)據(jù)的真實性和完整性通常可以被認為是安全可靠的。但是,一旦安裝在現(xiàn)場,設(shè)備可能會暴露給黑客訪問,或者可能需要定期更新固件或配置數(shù)據(jù)。訪問或更新為入侵者提供了修改行為的可能性,甚至更糟的是,完全控制這些設(shè)備,并可能帶來災(zāi)難性的后果。一種這樣的攻擊稱為惡意軟件注入。這涉及將惡意代碼插入固件更新源。一旦攻擊者成功安裝欺詐性固件,此未經(jīng)授權(quán)的配置可以:
輸出機密和敏感數(shù)據(jù)。例如,如果在醫(yī)療行業(yè)使用,惡意軟件注入可能會導(dǎo)致便攜式健康監(jiān)視器等設(shè)備無意中傳輸私人醫(yī)療信息。在更廣泛的努力中,惡意固件可以使公眾可以訪問加密密鑰。
強制設(shè)備運行不正確。最新的事件是Oldsmar水處理設(shè)施攻擊,黑客訪問了軟件系統(tǒng)并將氫氧化鈉含量從100 ppm增加到11,100 ppm,這可能會對消化系統(tǒng)造成嚴重損害。
引發(fā)不可預(yù)測的設(shè)備行為。這包括可能威脅人類生命的行為。
固件的身份驗證和完整性
為了確保目標(biāo)嵌入式設(shè)備僅運行授權(quán)固件或僅使用授權(quán)配置數(shù)據(jù),我們需要提供一種方法來驗證信息的真實性和完整性。這意味著確保數(shù)據(jù)是可信的,并且隨后不會被修改。利用加密數(shù)字簽名,例如在信件底部蓋章或手動簽名,可以實現(xiàn)這一點。
使用此方法,對在制造階段加載的固件或配置數(shù)據(jù)以及所有后續(xù)更新進行數(shù)字簽名。這樣,數(shù)字簽名就可以在設(shè)備的整個生命周期內(nèi)實現(xiàn)信任。強數(shù)字簽名必須由加密算法計算。為了帶來最高級別的安全性,算法必須是公開的并且經(jīng)過充分驗證。在這里,我們研究非對稱加密算法,特別是FIPS 186橢圓曲線數(shù)字簽名算法(ECDSA)。
應(yīng)用于安全啟動和安全下載的非對稱加密
在非對稱(公鑰)密碼學(xué)中,數(shù)學(xué)相關(guān)的密鑰對(公鑰和私鑰)用于算法計算。顧名思義,任何實體都可以知道公鑰,而不會帶來安全風(fēng)險。然而,私鑰是絕對機密的信息,永遠不會被釋放或知道?;诜菍ΨQ加密的安全下載的基本原則是,固件開發(fā)人員使用私鑰進行簽名,而嵌入式設(shè)備存儲并使用公鑰進行驗證。與對稱密鑰加密相比,非對稱加密的主要優(yōu)點是機密元素(即用于簽名的私鑰)永遠不會存儲在嵌入式設(shè)備中。因此,在使用ECDSA時,盡管使用了復(fù)雜的侵入性攻擊,但攻擊者無法檢索用于對固件和數(shù)據(jù)進行簽名的私鑰。攻擊者可以從設(shè)備獲得的只是公鑰,而使用 ECDSA,從公鑰中獲取私鑰在數(shù)學(xué)上是不可行的。這是非對稱加密的一個基本好處。
圖 1 顯示了基于非對稱 ECDSA 的安全啟動和安全下載的使用,如果密鑰長度足夠(通常至少為 256 位),則提供高級別的信任。如圖所示,該解決方案有兩個方面。在開發(fā)或生成固件或配置數(shù)據(jù)的研發(fā)設(shè)施中,創(chuàng)建ECDSA密鑰對 - 系統(tǒng)私鑰和公鑰。要保護的固件或數(shù)據(jù)在受控開發(fā)環(huán)境中使用系統(tǒng)私鑰進行簽名。如圖 2 所示,F(xiàn)IPS 180 SHA-256 算法包含在加密數(shù)據(jù)路徑中,導(dǎo)致在固件映像或數(shù)據(jù)文件的 SHA-256 哈希值上計算 ECDSA 簽名。在實踐中,該簽名結(jié)果被計算并附加到研發(fā)設(shè)施的固件或數(shù)據(jù)文件中,如圖1所示。正是 SHA-256 哈希的這種簽名使最終應(yīng)用程序中的資源能夠驗證固件或數(shù)據(jù)文件的真實性和完整性。對于現(xiàn)場使用,最終應(yīng)用處理器將具有可用的內(nèi)部或外部資源,以首先執(zhí)行固件或數(shù)據(jù)文件的 SHA-256 哈希,然后使用此計算值和可訪問的系統(tǒng)公鑰驗證附加的 ECDSA 簽名是否有效,請參見圖 3。如果此驗證檢查成功,則保證固件或數(shù)據(jù)文件既真實又未經(jīng)修改。
圖1.使用 ECDSA 進行安全啟動和安全下載。
不使用過孔的GAIN_SLOT引腳。
圖2.固件/數(shù)據(jù)文件的 ECDSA 簽名。
圖3.ECDSA 驗證固件/數(shù)據(jù)文件簽名。
挑戰(zhàn)
顯然,適當(dāng)安全的啟動或下載過程將只允許授權(quán)/真實的固件在嵌入式設(shè)備上運行;因此,即使在固件更新期間也能防止惡意軟件注入。與該過程相關(guān)的挑戰(zhàn)包括:
SHA-256 哈希 — 在大型固件上計算 SHA-256 哈希可能非常耗時 軟件。
ECDSA 簽名驗證 — ECDSA 簽名驗證是計算密集型的,在嵌入式應(yīng)用程序中,通常使用合適的數(shù)學(xué)加速器資源執(zhí)行。
實施 - 正確實施加密對于避免可能被發(fā)現(xiàn)和利用的漏洞至關(guān)重要。
保護公共驗證密鑰不被修改 - 公鑰必須與用于對固件或配置數(shù)據(jù)進行簽名的合法私鑰匹配。生成自己的私鑰并將相應(yīng)的公鑰注入嵌入式系統(tǒng)的攻擊者將能夠生成自己的任意固件或配置數(shù)據(jù),并由嵌入式系統(tǒng)成功驗證它們
使用 DS28C36 進行安全啟動和安全下載
對于沒有具有計算能力的安全微控制器來驗證下載軟件的真實性和完整性所需的計算的嵌入式系統(tǒng),ADI公司的DS28C36 DeepCover安全認證器是一種經(jīng)濟高效的基于硬件的IC解決方案。圖4給出了DS28C36如何與主機處理器接口,下圖的步驟說明了該操作的概要版本。?
圖4.將主機處理器與DS28C36接口。
如前所述,在研發(fā)設(shè)施中建立了用于安全啟動或安全下載功能的系統(tǒng)公鑰-私鑰對。該對的私鑰用于對固件或數(shù)據(jù)文件進行簽名,最終由嵌入終端系統(tǒng)的DS28C36進行驗證。此系統(tǒng)私鑰永遠不會離開受控開發(fā)環(huán)境。該對的系統(tǒng)公鑰安裝在DS28C36的密鑰寄存器位置并鎖定,該位置具有“權(quán)威密鑰”屬性;這是DS28C36中的可配置設(shè)置。
系統(tǒng)私鑰用于計算固件或數(shù)據(jù)文件的數(shù)字簽名。如前所述 前面如圖 2 所示,此簽名是在數(shù)據(jù)文件的 SHA-256 哈希上計算的。
帶有預(yù)編程系統(tǒng)公鑰(配置有權(quán)限屬性)的Maxim DS28C36位于 系統(tǒng)主板并與主機處理器接口。
當(dāng)固件需要由處理器運行,或者系統(tǒng)使用需要配置數(shù)據(jù)文件時,它會 首先由處理器啟動管理器檢索,并以順序64字節(jié)塊的形式傳送到DS28C36 計算 SHA-256 哈希。
DS28C36完成SHA-256哈希計算后,處理器提供ECDSA簽名。 在開發(fā)環(huán)境中計算并追加到文件的固件或數(shù)據(jù)。
DS28C36收到ECDSA簽名后,處理器發(fā)送命令使用預(yù)裝系統(tǒng) 用于執(zhí)行簽名驗證的公鑰。
如果DS28C36驗證簽名,則GPIO引腳設(shè)置為邏輯0,并將傳遞結(jié)果參數(shù)字節(jié)傳送給處理器。此引腳和參數(shù)字節(jié)結(jié)果的狀態(tài)充當(dāng)處理器運行固件或使用配置文件的通過/不通過結(jié)果。
上述序列的附加說明如圖4所示。這包括額外的增強 安全步驟,使主機處理器能夠通過單獨的 ECDSA 序列驗證安全啟動結(jié)果。
步 | 主機微 | 數(shù)據(jù)流 | DS28C36 |
1 | 固件或數(shù)據(jù)文件 | → | SHA-256 使用計算多塊哈希函數(shù)對文件進行哈希處理 |
2 | 固件或數(shù)據(jù)文件 ECDSA 簽名 | → | 驗證固件的 ECDSA 簽名和多塊哈希結(jié)果,成功時更改 PIO |
3 | - | - | PIO結(jié)果可以由處理器電檢測,也可以通過參數(shù)字節(jié)進行邏輯檢查。 |
用于提高安全級別并解決 GPIO 狀態(tài)更改和/或參數(shù)結(jié)果的問題 字節(jié)可以被欺騙,DS28C36可以選擇對內(nèi)部狀態(tài)結(jié)果進行ECDSA簽名,指示安全啟動或安全下載序列的通過或失敗。這個結(jié)果是無可辯駁的。
步 | 主機微 | 數(shù)據(jù)流 | DS28C36 |
4 | 隨機挑戰(zhàn) | → | 計算存儲安全引導(dǎo)邏輯通過/失敗結(jié)果的寄存器數(shù)據(jù)的 ECDSA 簽名 |
5 | - | ← | 幼兒發(fā)展局結(jié)果 |
6 |
驗證質(zhì)疑的 ECDSA 結(jié)果。 驗證DS28C36 設(shè)置的邏輯PIO狀態(tài)是否與物理輸出反饋值匹配 |
- | - |
7 |
成功安全啟動操作后 ,固件繼續(xù)運行 |
- | - |
使用DS28C40安全啟動和安全下載,適用于汽車
Maxim的DS28C40是一款符合汽車AEC-Q100 1級標(biāo)準的安全認證器。它提供了一種經(jīng)濟高效的基于硬件的IC解決方案,采用ECDSA加密技術(shù),以執(zhí)行驗證聯(lián)網(wǎng)汽車下載軟件的真實性和完整性所需的計算。圖5給出了DS28C40如何與主機ECU接口。
圖5.將ECU主機MCU連接至DS28C40。
工藝流程與前面描述的DS28C36相同。
使用MAXQ1061進行安全啟動和安全下載
MAXQ1061為安全協(xié)處理器,提供加密工具箱,支持:
安全啟動和安全下載
通過 TLS 協(xié)議實現(xiàn)安全通信
安全密鑰存儲
加密和數(shù)字簽名
MAXQ1061設(shè)計用于作為嵌入式連接系統(tǒng)的信任根。它回答了上面列出的挑戰(zhàn)。其硬件加速器可實現(xiàn)快速 SHA 和 ECDSA 計算,并將主處理器從這些計算密集型活動中卸載出來。MAXQ1061還支持可靠的離線公鑰基礎(chǔ)設(shè)施,使得公鑰證書可以不可變或只能由正式授權(quán)方升級。通過確保公鑰不能被偽造的公鑰替換,MAXQ1061使最終產(chǎn)品能夠抵御攻擊,包括注入黑客的公鑰,從而成功驗證不受信任的固件。圖6給出了如何與主機處理器連接MAXQ1061,下圖的步驟說明了該操作的摘要版本。
圖6.主機處理器與MAXQ1061接口。
如前所述,在研發(fā)設(shè)施中建立了用于安全啟動或下載功能的系統(tǒng)公鑰-私鑰對。使用MAX1061時,ECDSA密鑰對可以有256位、384位或521位密鑰長度。該對的私鑰用于對固件或數(shù)據(jù)文件進行簽名,最終由嵌入終端系統(tǒng)的MAXQ1061進行驗證。此系統(tǒng)私鑰永遠不會離開受控開發(fā)環(huán)境。該對的系統(tǒng)公鑰安裝在MAXQ1061中。
如圖2所示,系統(tǒng)私鑰用于計算簽名。它是在數(shù)據(jù)文件的 SHA-x 哈希上計算的,并附加到固件或數(shù)據(jù)文件中。
主處理器向MAXQ1061發(fā)送“VERIFY BOOT”命令,同時發(fā)送待驗證固件及其預(yù)期的數(shù)字簽名。
MAXQ1061返回操作結(jié)果,帶有“成功”或錯誤代碼。(可選)置位RESET_OUT引腳。RESET_OUT引腳可用于觸發(fā)主處理器的中斷或?qū)⑵湓O(shè)置為復(fù)位狀態(tài)。
如果簽名驗證成功,則滿足常規(guī)安全條件“安全啟動”。得益于安全的文件系統(tǒng),MAXQ1061用戶可以配置對某些對象的訪問,以成功進行固件驗證。當(dāng)滿足安全啟動條件時,將授予對此類對象的訪問權(quán)限,否則將被鎖定。此功能的典型用途是將固件加密密鑰存儲在MAXQ1061中,只有在驗證其簽名后,加密密鑰才能用于解密固件。(可選)將固件發(fā)送到 AES-SPI 硬件引擎進行解密。
步 | 主機微 | 數(shù)據(jù)流 | 最大Q1061 |
1 | 固件或數(shù)據(jù)文件以及 ECDSA 簽名 | → | 執(zhí)行固件散列和 ECDSA 簽名驗證 |
2 | 固件或數(shù)據(jù)文件 ECDSA 簽名 | ← | 返回“驗證啟動”命令狀態(tài):正?;蚴?/strong> |
3 | - | → | 授予對具有“安全啟動”條件的對象的訪問權(quán)限。例如,可以訪問加密密鑰 |
4 | 可選固件發(fā)送至MAXQ1061進行解密 | → | - |
5 | - | ← | MAXQ1061解密固件,并將解密后的固件發(fā)送回主微控制器 |
6 | 成功安全啟動操作后,固件繼續(xù)運行 | - | - |
使用MAXQ1065進行安全啟動和安全下載
MAXQ1065為低功耗固定功能安全協(xié)處理器,為嵌入式連接系統(tǒng)提供邊緣到云的交鑰匙安全解決方案。它使用 TLS/DTLS 1.2 為物聯(lián)網(wǎng)設(shè)備啟用安全通信。它具有與MAXQ1061類似的加密功能。此外,芯片DNA唰唰??MAXQ1065中的PUF安全技術(shù)保護安全密鑰,該密鑰永遠不會靜態(tài)駐留在寄存器或存儲器中,也不會離開IC的電氣邊界。ChipDNA技術(shù)提供了對黑客應(yīng)用的侵入性和逆向工程攻擊的指數(shù)級保護。
圖7.主機處理器與MAXQ1065接口
處理流程與MAXQ1061非常相似,具有可選的“RESET_OUT”斷言和固定的ECDSA密鑰長度。
當(dāng)固件需要由主機微控制器運行時,首先由主機MCU引導(dǎo)管理器檢索,并以2048字節(jié)的順序模塊形式傳送給MAXQ1065,以計算SHA-256哈希。
MAXQ1065完成SHA-256哈希計算后,處理器提供在開發(fā)環(huán)境中計算并附加到文件中的固件或數(shù)據(jù)的ECDSA簽名。
主處理器向MAXQ1065發(fā)送“VERIFY BOOT”命令,同時發(fā)送待驗證的固件或數(shù)據(jù)文件及其預(yù)期的數(shù)字簽名。
MAXQ1065返回操作結(jié)果,帶有“成功”或錯誤代碼。
如果簽名驗證成功,則滿足常規(guī)安全條件“安全啟動”。安全文件系統(tǒng)允許用戶根據(jù)固件驗證的狀態(tài)對部分MAXQ1065對象的訪問進行門控。當(dāng)滿足安全啟動條件時,將授予對此類對象的訪問權(quán)限,否則將被鎖定。此功能的典型用途是將固件加密密鑰存儲在MAXQ1065中,只有在驗證其簽名后,該加密密鑰才能用于解密固件。(可選)將固件發(fā)送到硬件 AES 引擎進行解密。
步 | 主機微 | 數(shù)據(jù)流 | 最大Q1065 |
1 | 固件或數(shù)據(jù)文件以及 ECDSA 簽名 | → | 執(zhí)行固件散列和 ECDSA 簽名驗證 |
2 | 固件或數(shù)據(jù)文件 ECDSA 簽名 | ← | 返回“驗證啟動”命令狀態(tài):正常或失敗 |
3 | 復(fù)位或接收中斷信號 | ← | 可選RESET_OUT引腳置位 |
4 | - | → | 授予對具有“安全啟動”條件的對象的訪問權(quán)限。例如,可以訪問加密密鑰 |
5 | 可選固件發(fā)送至MAXQ1065進行解密 | → | - |
6 | - | ← | MAXQ1065解密固件,并將解密后的固件發(fā)送回主微控制器 |
7 | 成功安全啟動操作后,固件繼續(xù)運行 | - | - |
使用 DS28S60 進行安全啟動和安全下載
DS28S60 DeepCover加密協(xié)處理器為物聯(lián)網(wǎng)安全應(yīng)用提供了最簡單的解決方案。DS28S60具有固定的命令集,無需開發(fā)器件級固件,能夠快速、輕松地實現(xiàn)物聯(lián)網(wǎng)設(shè)備的全面安全性。這種安全協(xié)處理器提供了一個全面的加密工具箱,用于保護各種嵌入式設(shè)備。DS28S60中的硬件加速器可實現(xiàn)快速SHA和ECDSA計算。集成的ChipDNA PUF技術(shù)提供了強大的對策,以防止安全攻擊。?
圖8.主機處理器與DS28S60接口
工藝流程與DS28C36類似,具有AES加密/解密功能。
DS28S60帶有預(yù)編程的系統(tǒng)公鑰(配置了權(quán)限屬性)位于系統(tǒng)主板上,與本地或遠程主機處理器接口。
當(dāng)固件需要由處理器運行,或者系統(tǒng)使用需要配置數(shù)據(jù)文件時,處理器引導(dǎo)管理器首先檢索固件,并以64字節(jié)順序模塊的形式傳送到DS28S60,以計算SHA-256哈希。
DS28S60完成SHA-256哈希計算后,處理器提供在開發(fā)環(huán)境中計算并附加到文件中的固件或數(shù)據(jù)的ECDSA簽名。
DS28S60收到ECDSA簽名后,處理器發(fā)送命令,使用預(yù)裝的系統(tǒng)公鑰進行簽名驗證。
如果DS28S60驗證了簽名,則向處理器傳送一個傳遞結(jié)果參數(shù)字節(jié)。它向處理器發(fā)送 go/no-go 命令以運行固件或使用配置文件。(可選)將固件發(fā)送到硬件 AES 引擎進行加密/解密。
步 | 主機微 | 數(shù)據(jù)流 | DS28S60 |
1 | 固件或數(shù)據(jù)文件 | → | SHA-256 使用計算多塊哈希函數(shù)對文件進行哈希處理 |
2 | 固件或數(shù)據(jù)文件 ECDSA 簽名 | ← | 驗證固件的 ECDSA 簽名和多塊哈希結(jié)果 |
3 | - | → | 如果 ECDSA 身份驗證結(jié)果通過,則授予對對象的訪問權(quán)限。例如,可以訪問加密密鑰 |
4 | 可選固件發(fā)送到DS28S60進行加密/解密 | → | - |
5 | - | ← | DS28S60對固件進行加密/解密,并將固件發(fā)送回主微控制器 |
6 | 成功安全啟動操作后,固件繼續(xù)運行 | - | - |
結(jié)論
安全啟動或安全下載是一種經(jīng)過驗證的安全解決方案,可解決 IoT 設(shè)備面臨的相關(guān)威脅。它可以確定安裝或下載到嵌入式系統(tǒng)的固件或配置數(shù)據(jù)文件的完整性和真實性。在系統(tǒng)中成功實施安全啟動和安全下載可以:
確保下載的數(shù)據(jù)文件或固件真實且未經(jīng)修改
防止在設(shè)備硬件中安裝被黑客入侵的數(shù)據(jù)或固件
提高工業(yè)和醫(yī)療應(yīng)用的安全性
控制功能啟用
審核編輯:郭婷
-
處理器
+關(guān)注
關(guān)注
68文章
19440瀏覽量
231334 -
嵌入式
+關(guān)注
關(guān)注
5096文章
19191瀏覽量
308050 -
接口
+關(guān)注
關(guān)注
33文章
8718瀏覽量
152033
發(fā)布評論請先 登錄
相關(guān)推薦
評論