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