新聞中心

EEPW首頁(yè) > 專題 > 讓系統(tǒng)無(wú)懈可擊

讓系統(tǒng)無(wú)懈可擊

作者:Eustace Asanghanwa 時(shí)間:2017-03-07 來(lái)源:電子產(chǎn)品世界 收藏

作者/Eustace Asanghanwa Microchip策略營(yíng)銷經(jīng)理

本文引用地址:http://m.butianyuan.cn/article/201703/344892.htm

  引言

  對(duì)于任何一個(gè)嵌入式系統(tǒng)而言,安全啟動(dòng)都是至關(guān)重要的一個(gè)組成部分。這一過(guò)程可保證系統(tǒng)固件,即所有嵌入式系統(tǒng)的大腦與系統(tǒng)制造商的設(shè)計(jì)初衷保持一致。安全啟動(dòng)確保了嵌入式系統(tǒng)的操作是安全并且可預(yù)測(cè)的。它的價(jià)值在那些因出現(xiàn)故障而可能導(dǎo)致災(zāi)難性后果的系統(tǒng)中是顯而易見(jiàn)的。類似重要的系統(tǒng)包括家用爐灶和一體式烤箱灶的熱控制器、汽車的發(fā)動(dòng)機(jī)控制模塊、交通燈控制器、植入式醫(yī)療設(shè)備中的治療傳輸系統(tǒng),以及無(wú)人駕駛列車的控制器等。這些系統(tǒng)可能會(huì)因?yàn)檫\(yùn)行它們的固件發(fā)生故障而出現(xiàn)失靈或不可預(yù)測(cè)的操作。而導(dǎo)致此類故障的原因多種多樣,可能是由電源浪涌造成內(nèi)存故障這樣的環(huán)境因素,也可能是黑客注入惡意代碼的執(zhí)行等。無(wú)論在何種情況下,我們都可以在嘗試運(yùn)行系統(tǒng)之前先通過(guò)安全啟動(dòng)過(guò)程來(lái)檢測(cè)固件的完整性。

  安全啟動(dòng)一直都是在有需要的情況下才會(huì)被執(zhí)行。雖然安全啟動(dòng)作為一個(gè)話題而言可能一貫很少被提及,但在很多關(guān)鍵系統(tǒng)中,一直有相應(yīng)的法規(guī)和標(biāo)準(zhǔn)來(lái)強(qiáng)制執(zhí)行安全啟動(dòng),以保障這些系統(tǒng)的安全運(yùn)行。因此,大部分的電腦鼠標(biāo)或手持計(jì)算器等一些重要性被認(rèn)為較低的系統(tǒng)都直接跳過(guò)了嚴(yán)格的安全啟動(dòng)過(guò)程,因?yàn)樗鼈兂霈F(xiàn)故障所導(dǎo)致的后果一般都很輕;然而,什么樣的構(gòu)成可以稱之為一個(gè)關(guān)鍵的嵌入式系統(tǒng)呢?這個(gè)定義正因?yàn)槲锫?lián)網(wǎng)(IoT)的出現(xiàn)和普及而悄然發(fā)生著變化。

  1 IoT將安全啟動(dòng)推向最前沿

  關(guān)鍵系統(tǒng)和非關(guān)鍵系統(tǒng)之間的差異正日漸縮小。隨著IoT的出現(xiàn),可以說(shuō)現(xiàn)在每個(gè)嵌入式系統(tǒng)都是一個(gè)關(guān)鍵系統(tǒng)。嵌入式系統(tǒng)不再像是一座孤島,所有的性能和故障都只限于其中。雖然IoT將嵌入式系統(tǒng)連接在一起提供了很大的好處,但是這種聯(lián)網(wǎng)的直接后果就是消除了遏制邊界?,F(xiàn)在,任何一個(gè)連入網(wǎng)絡(luò)的嵌入式系統(tǒng)都可能是潛在的風(fēng)險(xiǎn),而世界上任何一個(gè)人都可能成為潛在的受害者。

  因注入故障到嵌入式系統(tǒng)的固件中而引發(fā)的潛在損害從來(lái)沒(méi)有像現(xiàn)在這樣大。像電源浪涌和通信錯(cuò)誤等自然系統(tǒng)故障的發(fā)生大致上還是和以前一樣,所以傳統(tǒng)的安全啟動(dòng)過(guò)程還仍然有效。但是,人為注入故障尤其是惡意類型故障的發(fā)生,無(wú)論是在種類上還是復(fù)雜程度上都在迅速增長(zhǎng)。在過(guò)去,攻擊者需要獲取物理訪問(wèn)權(quán)限以便在每一個(gè)單獨(dú)的系統(tǒng)中插入惡意故障。而現(xiàn)在,由于各個(gè)系統(tǒng)都是聯(lián)網(wǎng)的,攻擊者只需攻擊其中的一個(gè)系統(tǒng)即可輕松獲得訪問(wèn)其它許多遠(yuǎn)程系統(tǒng)的權(quán)限。這會(huì)導(dǎo)致大量設(shè)備被惡意控制,關(guān)鍵系統(tǒng)和存儲(chǔ)在云端的數(shù)據(jù)遭到惡意訪問(wèn),或是因?yàn)楹诳挽偶级l(fā)生臭名昭著的數(shù)據(jù)泄露事件。這也就是為什么我們有必要確保安全啟動(dòng)解決方案必須能夠抵御攻擊和故障注入的原因。

  2保障啟動(dòng)過(guò)程

  安全啟動(dòng)包含兩個(gè)基本的要素:檢測(cè)固件完整性的能力和對(duì)檢測(cè)過(guò)程完整性的保障。這些由來(lái)已久的要素很好理解,它們使用加密技術(shù)來(lái)實(shí)現(xiàn)各個(gè)目標(biāo),只在加密算法的復(fù)雜程度和保障檢測(cè)過(guò)程完整性的安全硬件方法這兩方面有所演變。

  檢測(cè)固件的完整性涉及使用加密技術(shù)來(lái)創(chuàng)建指紋,即一小段壓縮的數(shù)字編碼,可用來(lái)表示固件并且輕松地檢測(cè)出變化。這種加密技術(shù)屬于一類可生成指紋摘要、被稱為散列函數(shù)的加密算法。常用的256位安全散列算法,或簡(jiǎn)稱為SHA256,可生成長(zhǎng)度為256位的摘要。SHA256是最新的散列算法,雖然它既不是最緊湊的也算不上最精細(xì)的,但是它卻在安全性與嵌入式系統(tǒng)資源的有效使用二者之間取得了較好的平衡,這些嵌入式系統(tǒng)資源包括電源、代碼空間和計(jì)算資源等。

  為了設(shè)置和實(shí)現(xiàn)安全啟動(dòng),嵌入式系統(tǒng)制造商在工廠制造過(guò)程中即對(duì)最終的操作固件進(jìn)行了散列,并在嵌入式系統(tǒng)中同時(shí)安裝了固件和摘要。在實(shí)際操作過(guò)程中,嵌入式系統(tǒng)中的一段檢測(cè)代碼會(huì)對(duì)操作固件進(jìn)行散列,并將所得的摘要與工廠安裝的摘要進(jìn)行比較。如果摘要完全匹配,即說(shuō)明操作代碼的完整性沒(méi)有受損。

  為了確保檢測(cè)過(guò)程的完整性,最理想的做法是將檢測(cè)代碼放在諸如ROM(只讀存儲(chǔ)器)等類型的非可變存儲(chǔ)器中,使其不易受到電源浪涌等環(huán)境故障矢量以及內(nèi)存修改疏忽等其它存儲(chǔ)損壞情況的影響。為了響應(yīng)快速變化的市場(chǎng)需求,我們通常會(huì)使用鎖定版的非易失性存儲(chǔ)器技術(shù),比如閃存和EEPROM,或是類似代替ROM的TrustZone?技術(shù)等專用執(zhí)行環(huán)境。

  3保護(hù)啟動(dòng)過(guò)程免遭攻擊

  上述的安全啟動(dòng)過(guò)程在沒(méi)有惡意故障注入的情況下是充分夠用的,然而,這種情況在我們生活的真實(shí)世界中并不典型。攻擊者只需要?jiǎng)?chuàng)建自己的固件以及相應(yīng)的散列摘要并將二者都安裝到系統(tǒng)中即可擊敗安全啟動(dòng)過(guò)程。這破壞了檢測(cè)的完整性,因此我們需要有一個(gè)驗(yàn)證檢測(cè)過(guò)程。

  該驗(yàn)證檢測(cè)過(guò)程需要使用諸如密鑰這樣的秘密信息,并生成固件的認(rèn)證摘要或是簡(jiǎn)單的一個(gè)證書(shū)(圖1)。之所以這樣設(shè)計(jì),是因?yàn)閷?duì)手如果想要阻撓檢測(cè)系統(tǒng)正常工作就需要知道相同的秘密信息以生成一對(duì)一致的固件 - 簽名。考慮到操作代碼的驗(yàn)證過(guò)程也需要訪問(wèn)同樣的秘密信息,嵌入式系統(tǒng)很可能會(huì)被攻擊者拆解,試圖找出秘密信息。而構(gòu)建高級(jí)嵌入式系統(tǒng)所需分析工具與技術(shù)復(fù)雜性的大幅提升也為攻擊者提供了意想不到的幫助,使他們能夠直接或通過(guò)相關(guān)服務(wù)訪問(wèn)這些工具以達(dá)到其利用系統(tǒng)的目的。

  圖1 最佳的通用啟動(dòng)過(guò)程,包括簽名操作固件的工廠準(zhǔn)備和現(xiàn)場(chǎng)驗(yàn)證

  Factory Preparation -- 工廠準(zhǔn)備

  Operational Firmware -- 操作固件

  Firmware Digest -- 固件摘要

  EDCSA Sign -- EDCSA簽名

  Boot KPRIV -- 啟動(dòng)私鑰

  Boot KPUB -- 啟動(dòng)公鑰

  Crypto Element -- 加密元件

  Firmware Signature -- 固件簽名

  Application Secure Boot -- 應(yīng)用安全啟動(dòng)

  Flash Memory -- 閃存

  Boot Code -- 啟動(dòng)代碼

  Boot Process -- 啟動(dòng)過(guò)程

  EDCSA Verify -- EDCSA驗(yàn)證

  ROM or TrustZone – ROM或TrustZone

  不出現(xiàn)特殊情況的話,我們很容易想象出嵌入式系統(tǒng)開(kāi)發(fā)人員和攻擊者之間這個(gè)猶如貓和老鼠的游戲接下來(lái)會(huì)如何發(fā)展。要不是出現(xiàn)了一種特殊類型的叫做加密元件(CE)的集成電路,那么這個(gè)游戲還將繼續(xù)下去。

  4加密元件適時(shí)阻止攻擊

  加密元件(CE)是專門(mén)設(shè)計(jì)用于抵御諸如嘗試檢索機(jī)密內(nèi)容或篡改等攻擊行為的集成電路。執(zhí)行帶有CE的安全啟動(dòng)操作提供了驗(yàn)證固件檢測(cè)和驗(yàn)證過(guò)程中所需的完整性。CE可以集成到控制器或獨(dú)立的元器件中,為系統(tǒng)架構(gòu)師提供所需的靈活性以迎合其部署需求。

  5對(duì)稱與非對(duì)稱密鑰加密技術(shù)

  雖然安全啟動(dòng)的基本要素即檢測(cè)和過(guò)程保持不變,但是我們卻可以選擇對(duì)稱密鑰加密或非對(duì)稱密鑰加密技術(shù)來(lái)實(shí)現(xiàn)這兩大要素,以控制整個(gè)啟動(dòng)驗(yàn)證過(guò)程。

  對(duì)稱密鑰加密技術(shù)在安全啟動(dòng)過(guò)程的出廠設(shè)置和現(xiàn)場(chǎng)驗(yàn)證兩個(gè)階段均使用相同的密鑰或相同密鑰的導(dǎo)數(shù)。如圖2和圖3所示,基于SHA256算法的驗(yàn)證啟動(dòng)過(guò)程就是一個(gè)對(duì)稱密鑰啟動(dòng)過(guò)程的示例?;趯?duì)稱密鑰的啟動(dòng)過(guò)程具備速度方面的優(yōu)勢(shì),但是在保證供應(yīng)鏈中啟動(dòng)密鑰的機(jī)密性方面卻可能會(huì)遭遇困難。因此,封閉的生態(tài)系統(tǒng)是最受大家歡迎的,因?yàn)橹挥形ㄒ坏囊粋€(gè)實(shí)體掌握其中的密鑰。

  圖2 采用對(duì)稱密鑰保障安全啟動(dòng)的出廠設(shè)置

  OEM prepares final operational code and signs it with a private key. -- OEM廠商準(zhǔn)備最終操作代碼并使用私鑰進(jìn)行簽名。

  Firmware Binary -- 固件二進(jìn)制

  Signing Secret Key -- 簽署密鑰

  OEM delivers signed firmware to CM. -- OEM廠商向CM交付簽名固件。

  Signed Firmware -- 簽名固件

  OEM assembles both firmware and CE into the embedded system. -- OEM廠商將固件和CE一起組裝到嵌入式系統(tǒng)中。

  OEM securely delivers signing secret key to CE manufacturing systems via a Hardware Secure Module. -- OEM廠商通過(guò)硬件安全模塊將簽名密鑰安全地交付給CE制造系統(tǒng)。

  CE Partner -- CE合作廠商

  CE partner provisions and ships CE to OEM. -- CE合作廠商供應(yīng)和交付CE給OEM廠商。

  圖3 對(duì)稱密鑰流驗(yàn)證過(guò)程

  System Processor -- 系統(tǒng)處理器

  Firmware Binary -- 固件二進(jìn)制

  Signature -- 簽名

  Secure Element -- 安全元件

  Signing Secret Key -- 簽署密鑰

  Validate -- 驗(yàn)證

  OR -- 或

  非對(duì)稱密鑰加密技術(shù)(圖4)在安全啟動(dòng)過(guò)程的出廠設(shè)置和現(xiàn)場(chǎng)驗(yàn)證階段則使用單獨(dú)的密鑰,這兩個(gè)密鑰之間的關(guān)系由諸如橢圓曲線加密技術(shù)(ECC)等加密算法來(lái)控制。ECC被用在一種叫做橢圓曲線數(shù)字簽名算法(ECDSA)的特殊協(xié)議中,該協(xié)議常應(yīng)用于固件簽名和驗(yàn)證。通常情況下,原始設(shè)備制造商(OEM)都擁有多家合作廠商來(lái)為其供應(yīng)構(gòu)成嵌入式系統(tǒng)的子系統(tǒng)或某個(gè)系統(tǒng)的替代資源。

  圖4 開(kāi)放式合作伙伴生態(tài)系統(tǒng)中的安全啟動(dòng)設(shè)置

  OEM signs firmware partners to authorizing them to create legitimate operational firmware. -- OEM廠商簽署固件合作廠商,授權(quán)其創(chuàng)建合法的操作固件。

  Firmware Partner -- 固件合作廠商

  Respective firmware partner independently signs their operational firmware. -- 各個(gè)固件合作廠商獨(dú)立對(duì)其操作固件進(jìn)行簽名。

  Respective firmware partner delivers signed firmware to OEM. -- 各個(gè)固件合作廠商向OEM廠商交付簽名固件。

  Signed Firmware -- 簽名固件

  OEM assembles both firmware and CE into the embedded system. -- OEM廠商將固件和CE一起組裝到嵌入式系統(tǒng)中。

  OEM signs manufacturing partners to provision CE with identities and secrets. -- OEM廠商簽署制造伙伴以為其供應(yīng)帶有身份和秘密信息的CE。

  CE Partner -- CE合作廠商

  CE partner provisions and ships CE to OEM. -- CE合作廠商供應(yīng)和交付CE給OEM廠商。

  使用非對(duì)稱密鑰過(guò)程,例如ECDSA,也適用于安全散列算法SHA。在實(shí)踐中,SHA256會(huì)檢測(cè)操作固件以創(chuàng)建一個(gè)摘要,然后使用ECDSA協(xié)議對(duì)摘要進(jìn)行簽名以完成整個(gè)驗(yàn)證固件過(guò)程。這樣生成的簽名就是一個(gè)附有操作固件并可安裝到嵌入式系統(tǒng)中的證書(shū)(圖5)。

  圖5 非對(duì)稱密鑰流的現(xiàn)場(chǎng)驗(yàn)證過(guò)程

  Firmware Binary -- 固件二進(jìn)制

  ECDSA Verify -- EDCSA驗(yàn)證

  Firmware Certificate -- 固件證書(shū)

  Software Partner Certificate -- 軟件合作伙伴證書(shū)

  OEM Root Certificate -- OEM根證書(shū)

  Device Unique Certificate -- 設(shè)備唯一證書(shū)

  CE Partner Certificate -- CE合作伙伴證書(shū)

  System Processor -- 系統(tǒng)處理器

  Random Challenge -- 隨機(jī)挑戰(zhàn)

  Crypto Element -- 加密元件

  Device Unique Private Key -- 設(shè)備唯一私鑰

  ECDSA Sign -- ECDSA簽名

  1. Verifies firmware is legitimate and came from an approved partner. -- 驗(yàn)證固件是否合法且由許可合作伙伴提供。

  2. Verifies CE device is legitimately provisioned by a sanctioned partner. -- 驗(yàn)證CE器件是否由許可合作伙伴合法供應(yīng)。

  3. Proves the embedded system is a legitimate one by virtue of possessing knowledge of the private key. This is very important for remote systems that rely on the CE as a trust anchor. -- 借助掌握的私鑰相關(guān)知識(shí)來(lái)驗(yàn)證嵌入式系統(tǒng)是否合法。這對(duì)于依靠CE作為信任基石的遠(yuǎn)程系統(tǒng)而言至關(guān)重要。

  非對(duì)稱的密鑰結(jié)構(gòu)需要一個(gè)私鑰和一個(gè)公鑰,前者必須保密且只被用于出廠設(shè)置,而與其在數(shù)學(xué)上相對(duì)應(yīng)的后者則只用于現(xiàn)場(chǎng)驗(yàn)證階段。公鑰可以被任何人查看而不影響啟動(dòng)過(guò)程的安全。因此,基于非對(duì)稱密鑰的安全啟動(dòng)過(guò)程更適用于由多個(gè)實(shí)體共同構(gòu)成的開(kāi)放式生態(tài)系統(tǒng)。

  6適合制造業(yè)的安全啟動(dòng)

  如果一個(gè)安全啟動(dòng)過(guò)程需要很高的生產(chǎn)物流成本,那么它很快就會(huì)被市場(chǎng)拋棄。因此,一個(gè)有效的安全啟動(dòng)過(guò)程應(yīng)該是可以確定操作代碼和檢測(cè)過(guò)程的完整性且同時(shí)不會(huì)大幅增加生產(chǎn)流程的時(shí)間或成本。

  雖然對(duì)于開(kāi)放式和封閉式生態(tài)系統(tǒng)而言最佳的選擇分別是不對(duì)稱和對(duì)稱密鑰啟動(dòng)過(guò)程,但是使用加密元件卻可以打破這個(gè)限制,使得任意一種啟動(dòng)過(guò)程都可以應(yīng)用于任意一個(gè)生態(tài)系統(tǒng)并且同時(shí)還能保持密鑰的機(jī)密性。但是,非對(duì)稱密鑰方法可以提供更多的自由度,令設(shè)計(jì)人員能夠在開(kāi)放式合作伙伴生態(tài)系統(tǒng)中輕松打造一個(gè)從數(shù)學(xué)角度看非常嚴(yán)謹(jǐn)?shù)男湃捂溇S護(hù)過(guò)程。

  7問(wèn)責(zé)制助力安全啟動(dòng)落實(shí)

  嵌入式系統(tǒng)的安全啟動(dòng)過(guò)程一直以來(lái)都是由管理產(chǎn)品安全的相關(guān)法規(guī)和標(biāo)準(zhǔn)所推動(dòng)。當(dāng)嵌入式系統(tǒng)是一個(gè)在物理上獨(dú)立的系統(tǒng)、一個(gè)孤島式的存在時(shí),這種模式是非常有效的。然而隨著IoT的出現(xiàn),各個(gè)系統(tǒng)開(kāi)始連入物聯(lián)網(wǎng),故障遏制邊界的消除不僅大大鼓勵(lì)了攻擊者,也大幅提高了各界對(duì)安全啟動(dòng)的關(guān)注度。事物的遠(yuǎn)程可訪問(wèn)性意味著我們能更容易地訪問(wèn)嵌入式系統(tǒng),而這樣就令世界上任何一個(gè)地方的任何一個(gè)人都可能成為系統(tǒng)攻擊的潛在受害者。雖然通過(guò)事后調(diào)查分析可能會(huì)揭示出哪個(gè)設(shè)備是罪魁禍?zhǔn)住⒛募抑圃焐虘?yīng)該被追責(zé),但是損害已然造成。為了限制相關(guān)責(zé)任,產(chǎn)品制造商正開(kāi)始采取積極的措施在他們的產(chǎn)品中集成防篡改安全啟動(dòng)過(guò)程,并添加加密元件來(lái)成功保障安全啟動(dòng)。



關(guān)鍵詞:

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉