許多系統使用外部標準閃存芯片來存儲不包括嵌入式非易失性程序存儲的處理器的操作程序。這非常棒,因為它可以輕松進行閃存擴展和軟件修改,可能在生產線上作為客戶下載或在維護操作期間進行。缺點是 OEM 失去了對閃存內容的控制,可能會允許未經授權的復制或修改。
然而,要擔心的不僅僅是收入損失。如果惡意軟件被下載到系統中,OEM 的聲譽可能會受到影響。對于醫療設備等系統,OEM 甚至可能面臨責任問題。
收回安全
硬件安全芯片可以幫助將控制權交還給 OEM。可編程的、高度安全的智能卡處理器已經面世一段時間了,但需要編寫額外的固件,并且會增加系統的不可接受的成本。另一方面,硬件認證芯片是交鑰匙設備,不需要內部編程或密碼算法的詳細知識,而且價格適中。
這些芯片的工作方式非常簡單。系統微處理器向芯片發送質詢,然后芯片使用加密算法將質詢與安全存儲在非易失性存儲器中的秘密結合起來。然后將響應發送回系統。芯片內部實現的算法的選擇方式是,觀察總線的觀察者可以看到挑戰和響應,但無法確定密鑰的值。根據芯片存儲秘密的安全程度,復制這樣的個性化芯片可能非常困難。
雖然這些芯片可以以各種方式用于為系統增加安全性,但有兩個軟件保護功能特別令人感興趣。第一個是安全啟動,它提供了一種方法來確保只執行真實的程序,同時仍然允許進行升級。第二,反克隆,防止未經授權的系統構建或設計的完全復制。
安全啟動
片上系統 (SoC) 設備通常包含一個小型引導 ROM,其中包含用于在執行外部閃存內容之前初始化芯片操作的程序。該引導 ROM 可以很容易地重新編程以與外部驗證芯片一起工作。
在系統發貨之前,OEM 將驗證值與程序一起存儲在閃存中。這是通過將程序的摘要與秘密相結合來計算的,其副本存儲在認證芯片中。使用諸如安全散列算法 1 (SHA-1) 或 SHA-2 之類的散列算法來生成程序摘要。黑客可能能夠更改閃存的內容,但在不知道秘密的情況下,無法生成新的驗證值。
在執行引導 ROM 中的代碼期間,微處理器實時生成存儲在閃存中的可執行程序的摘要(參見圖 1)。然后將該摘要作為質詢發送到認證芯片。芯片會將摘要與其內部存儲的秘密結合起來,并且可以將響應視為一種程序簽名。如果響應與閃存中存儲的驗證值匹配,則允許繼續執行閃存內容;如果不是,微處理器可以循環到下載器以等待加載有效的閃存映像。
圖 1:引導 ROM 可以與微處理器一起工作,該微處理器生成存儲在閃存中的可執行程序的摘要,并將其作為質詢發送到身份驗證芯片。
如果黑客可以將修改后的軟件發送到身份驗證芯片,使用邏輯分析儀讀取響應,然后將此驗證值與修改后的代碼一起存儲在閃存中,則此方案可能存在安全漏洞。但是,有幾種方法可以解決此問題。
最好的解決方案是使用不返回預期驗證值而是將其作為輸入并返回真/假以指示匹配的身份驗證芯片。摘要通常太大,而且芯片太慢,攻擊者無法猜測修改代碼的正確驗證值。為了獲得更高的安全性,安全芯片可以將隨機挑戰(或者可能是當前時間或處理器序列號)與真/假加密組合,并將其返回給處理器。這樣,就不能使用簡單的開關類電路修改來欺騙處理器。
另一種方法是機械地防止訪問安全芯片的引腳。對于 ASIC SoC,可以以裸片形式購買安全芯片,并以多裸片封裝的形式集成到主封裝中。另一種方法是購買類似于 BGA 封裝的安全芯片,由于焊盤完全隱藏,因此不允許探測。或者板上的安全芯片可以用環氧樹脂進行保形涂層以防止訪問。
在某些情況下,系統可能能夠使用引導 ROM 中的軟件計算閃存程序的摘要。但是,在啟動時驗證整個內存陣列可能過于耗時,尤其是對于具有較大閃存的系統。有兩種方法可以解決這個問題:增量驗證或硬件加速。
使用增量驗證方案,僅使用引導 ROM 代碼驗證存儲在閃存中的模塊加載程序。在加載每個新模塊以供執行之前,模塊加載器使用認證芯片對該模塊執行相同的驗證過程。這些模塊也可以在空閑時間提前驗證,以提高事件響應性能。
現代處理器并不總是包含硬件哈希引擎,但高級加密標準 (AES) 或三重數據加密標準 (3DES) 引擎非常常見。通過將加密引擎配置為在基于密碼的消息驗證碼 (CMAC) 模式下運行,可以輕松使用這些加密算法以硬件速度生成程序摘要。
反克隆
大多數原始設備制造商現在使用分包商來制造他們的設備。因此,系統有時會過度構建以供本地銷售或可能在灰色市場上銷售。或者,競爭對手或黑客可能會克隆系統并以較低的成本出售,因為他們不必投資于軟件開發。如果系統僅使用現成的組件,則可以降低制造成本,但這會使未經授權的系統更容易構建。
使用硬件安全芯片可以結束這些克隆,而不會顯著增加系統的大小或成本。編譯到嵌入式軟件中的是許多測試,以檢查是否存在正確編程的硬件安全芯片。OEM 控制著被編程到芯片中的秘密,并控制著將被編程的芯片分發給分包商。作為另一種選擇,芯片供應商可以為 OEM 管理芯片的個性化。
有幾種方法可以實現這些軟件測試。一種簡單的方法是在軟件中編譯挑戰和預期響應。如果安全芯片丟失或密碼錯誤,響應不匹配,系統可以被禁用或返回下載模式以獲取更正的文件。在程序的許多地方添加這些檢查,黑客很難刪除它們,尤其是當代碼在初始加載時由 ROM 驗證時。
這些軟件測試的其他選項包括在程序的各個部分分配挑戰生成和響應檢查。來自安全芯片的響應可以用作即時軟件模塊解密的密鑰。響應可以與一個單獨的常數進行異或運算,然后用作跳轉向量。如果安全芯片支持它,那么可以從不同的代碼部分發送多個質詢并組合生成單個響應。
在典型的實現中,芯片中包含許多不同類型的測試,因此即使一種機制被擊敗,其他機制仍能發揮作用。理想情況下,這些測試依賴于存儲在安全芯片中的多個秘密,以確保即使一個秘密值被泄露,也能維持整個系統的安全性。
秘密安全
如果很容易從身份驗證芯片中獲取秘密,那么所有這些都無關緊要。在這種情況下,黑客可以創建正確的軟件驗證值,或者系統克隆者可以使用簡單的微處理器對安全芯片進行建模。認證芯片至少以兩種方式保護秘密:使用強大的密碼算法和使用特殊的硬件芯片設計技術來防止對硅的直接或間接攻擊。
過去,某種形式的線性反饋移位寄存器 (LFSR),也稱為循環冗余校驗 (CRC),被用作哈希算法。由于實施成本低,這些算法很常見,但對于現代高速 PC,這些算法通常可以在短時間內被分析和破解。
如果秘密大小太小,LFSR/CRC 算法尤其薄弱,因為使用相對簡單的軟件可以進行蠻力攻擊。沒有關于什么大小足夠大的通用規則,但大多數現代系統使用 128 位或更長的密鑰。
目前,SHA 算法是安全啟動和反克隆的最佳選擇。SHA-1 在今天已經足夠安全了,但是它有一些已知的弱點并且已經被 SHA-2 系列(包括 SHA-256 和 SHA-512 等)所取代。由于大多數嵌入式系統的生命周期是以年為單位來衡量的,因此即使在其使用壽命結束時,使用最新的算法也能確保系統的安全性。
也可以購買使用公鑰(非對稱)算法的身份驗證芯片,這些算法通常更慢且更復雜。系統端的軟件也可以復雜得多。與使用散列算法的身份驗證芯片相比,它們可以提高安全啟動方案的安全性,同時對軟件克隆幾乎沒有或沒有額外的好處。
但是一個強大的算法是不夠的。如今,微探針很容易在 eBay 上購買,因此芯片必須防止攻擊者蝕刻掉封裝并微探針一些內部節點以獲取這些秘密。現代芯片通過整個芯片上的有源內部屏蔽、超過三層的窄寬度金屬、內部塊的額外加密以及沒有暴露的測試焊盤來防止這種情況。
黑客還可能會嘗試使用高電壓或低電壓或過高的時鐘頻率來讓身份驗證芯片泄露其秘密。如果試圖在正常操作范圍之外進行操作,則可以使用內部篡改檢測器來防御這些攻擊,該檢測器會關閉芯片。這些是常見的安全塊,大多數芯片制造商在通常的篡改塊之外添加了其他專有安全組件。
嵌入式實現
嵌入式系統中的認證芯片可以檢測存儲在閃存中的系統軟件的未經授權的修改或復制。此外,它們可以以多種其他方式用于交換會話加密密鑰、向遠程服務器提供節點身份驗證、驗證序列號存儲、安全存儲制造和/或維護歷史,以及各種其他與安全相關的功能。
高安全性認證芯片不需要設計人員具備任何特殊的密碼知識,并且可以集成到嵌入式系統中而不影響上市時間。通常以小包裝形式出現,它們甚至適用于對空間最敏感的應用。Atmel AT88SA102S 就是這樣一種芯片。它結合了 SHA-256 算法與 256 位密鑰長度和與所有微處理器兼容的易于使用的單線接口。該設計包括覆蓋整個電路的有源屏蔽、篡改檢測器和加密的內部存儲器。
審核編輯:郭婷
-
存儲器
+關注
關注
38文章
7651瀏覽量
167367 -
服務器
+關注
關注
13文章
9795瀏覽量
87967 -
微處理器
+關注
關注
11文章
2383瀏覽量
84174
發布評論請先 登錄
閃存的哪些扇區可用于用戶數據存儲?
微控制器讀取閃存中的軟件信息時,軟件信息部署在哪里? 是 SRAM 嗎?



評論