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