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

閃存技術(shù)基礎(chǔ)-1-1 #存儲(chǔ)技術(shù)

閃存技術(shù)基礎(chǔ)-1-2 #存儲(chǔ)技術(shù)

評(píng)論