讓系統無懈可擊
作者/Eustace Asanghanwa Microchip策略營銷經理
本文引用地址:http://www.j9360.com/article/201703/344892.htm引言
對于任何一個嵌入式系統而言,安全啟動都是至關重要的一個組成部分。這一過程可保證系統固件,即所有嵌入式系統的大腦與系統制造商的設計初衷保持一致。安全啟動確保了嵌入式系統的操作是安全并且可預測的。它的價值在那些因出現故障而可能導致災難性后果的系統中是顯而易見的。類似重要的系統包括家用爐灶和一體式烤箱灶的熱控制器、汽車的發動機控制模塊、交通燈控制器、植入式醫療設備中的治療傳輸系統,以及無人駕駛列車的控制器等。這些系統可能會因為運行它們的固件發生故障而出現失靈或不可預測的操作。而導致此類故障的原因多種多樣,可能是由電源浪涌造成內存故障這樣的環境因素,也可能是黑客注入惡意代碼的執行等。無論在何種情況下,我們都可以在嘗試運行系統之前先通過安全啟動過程來檢測固件的完整性。
安全啟動一直都是在有需要的情況下才會被執行。雖然安全啟動作為一個話題而言可能一貫很少被提及,但在很多關鍵系統中,一直有相應的法規和標準來強制執行安全啟動,以保障這些系統的安全運行。因此,大部分的電腦鼠標或手持計算器等一些重要性被認為較低的系統都直接跳過了嚴格的安全啟動過程,因為它們出現故障所導致的后果一般都很輕;然而,什么樣的構成可以稱之為一個關鍵的嵌入式系統呢?這個定義正因為物聯網(IoT)的出現和普及而悄然發生著變化。
1 IoT將安全啟動推向最前沿
關鍵系統和非關鍵系統之間的差異正日漸縮小。隨著IoT的出現,可以說現在每個嵌入式系統都是一個關鍵系統。嵌入式系統不再像是一座孤島,所有的性能和故障都只限于其中。雖然IoT將嵌入式系統連接在一起提供了很大的好處,但是這種聯網的直接后果就是消除了遏制邊界。現在,任何一個連入網絡的嵌入式系統都可能是潛在的風險,而世界上任何一個人都可能成為潛在的受害者。
因注入故障到嵌入式系統的固件中而引發的潛在損害從來沒有像現在這樣大。像電源浪涌和通信錯誤等自然系統故障的發生大致上還是和以前一樣,所以傳統的安全啟動過程還仍然有效。但是,人為注入故障尤其是惡意類型故障的發生,無論是在種類上還是復雜程度上都在迅速增長。在過去,攻擊者需要獲取物理訪問權限以便在每一個單獨的系統中插入惡意故障。而現在,由于各個系統都是聯網的,攻擊者只需攻擊其中的一個系統即可輕松獲得訪問其它許多遠程系統的權限。這會導致大量設備被惡意控制,關鍵系統和存儲在云端的數據遭到惡意訪問,或是因為黑客炫技而發生臭名昭著的數據泄露事件。這也就是為什么我們有必要確保安全啟動解決方案必須能夠抵御攻擊和故障注入的原因。
2保障啟動過程
安全啟動包含兩個基本的要素:檢測固件完整性的能力和對檢測過程完整性的保障。這些由來已久的要素很好理解,它們使用加密技術來實現各個目標,只在加密算法的復雜程度和保障檢測過程完整性的安全硬件方法這兩方面有所演變。
檢測固件的完整性涉及使用加密技術來創建指紋,即一小段壓縮的數字編碼,可用來表示固件并且輕松地檢測出變化。這種加密技術屬于一類可生成指紋摘要、被稱為散列函數的加密算法。常用的256位安全散列算法,或簡稱為SHA256,可生成長度為256位的摘要。SHA256是最新的散列算法,雖然它既不是最緊湊的也算不上最精細的,但是它卻在安全性與嵌入式系統資源的有效使用二者之間取得了較好的平衡,這些嵌入式系統資源包括電源、代碼空間和計算資源等。
為了設置和實現安全啟動,嵌入式系統制造商在工廠制造過程中即對最終的操作固件進行了散列,并在嵌入式系統中同時安裝了固件和摘要。在實際操作過程中,嵌入式系統中的一段檢測代碼會對操作固件進行散列,并將所得的摘要與工廠安裝的摘要進行比較。如果摘要完全匹配,即說明操作代碼的完整性沒有受損。
為了確保檢測過程的完整性,最理想的做法是將檢測代碼放在諸如ROM(只讀存儲器)等類型的非可變存儲器中,使其不易受到電源浪涌等環境故障矢量以及內存修改疏忽等其它存儲損壞情況的影響。為了響應快速變化的市場需求,我們通常會使用鎖定版的非易失性存儲器技術,比如閃存和EEPROM,或是類似代替ROM的TrustZone?技術等專用執行環境。
3保護啟動過程免遭攻擊
上述的安全啟動過程在沒有惡意故障注入的情況下是充分夠用的,然而,這種情況在我們生活的真實世界中并不典型。攻擊者只需要創建自己的固件以及相應的散列摘要并將二者都安裝到系統中即可擊敗安全啟動過程。這破壞了檢測的完整性,因此我們需要有一個驗證檢測過程。
該驗證檢測過程需要使用諸如密鑰這樣的秘密信息,并生成固件的認證摘要或是簡單的一個證書(圖1)。之所以這樣設計,是因為對手如果想要阻撓檢測系統正常工作就需要知道相同的秘密信息以生成一對一致的固件 - 簽名。考慮到操作代碼的驗證過程也需要訪問同樣的秘密信息,嵌入式系統很可能會被攻擊者拆解,試圖找出秘密信息。而構建高級嵌入式系統所需分析工具與技術復雜性的大幅提升也為攻擊者提供了意想不到的幫助,使他們能夠直接或通過相關服務訪問這些工具以達到其利用系統的目的。
圖1 最佳的通用啟動過程,包括簽名操作固件的工廠準備和現場驗證
Factory Preparation -- 工廠準備
Operational Firmware -- 操作固件
Firmware Digest -- 固件摘要
EDCSA Sign -- EDCSA簽名
Boot KPRIV -- 啟動私鑰
Boot KPUB -- 啟動公鑰
Crypto Element -- 加密元件
Firmware Signature -- 固件簽名
Application Secure Boot -- 應用安全啟動
Flash Memory -- 閃存
Boot Code -- 啟動代碼
Boot Process -- 啟動過程
EDCSA Verify -- EDCSA驗證
ROM or TrustZone – ROM或TrustZone
不出現特殊情況的話,我們很容易想象出嵌入式系統開發人員和攻擊者之間這個猶如貓和老鼠的游戲接下來會如何發展。要不是出現了一種特殊類型的叫做加密元件(CE)的集成電路,那么這個游戲還將繼續下去。
4加密元件適時阻止攻擊
加密元件(CE)是專門設計用于抵御諸如嘗試檢索機密內容或篡改等攻擊行為的集成電路。執行帶有CE的安全啟動操作提供了驗證固件檢測和驗證過程中所需的完整性。CE可以集成到控制器或獨立的元器件中,為系統架構師提供所需的靈活性以迎合其部署需求。
5對稱與非對稱密鑰加密技術
雖然安全啟動的基本要素即檢測和過程保持不變,但是我們卻可以選擇對稱密鑰加密或非對稱密鑰加密技術來實現這兩大要素,以控制整個啟動驗證過程。
對稱密鑰加密技術在安全啟動過程的出廠設置和現場驗證兩個階段均使用相同的密鑰或相同密鑰的導數。如圖2和圖3所示,基于SHA256算法的驗證啟動過程就是一個對稱密鑰啟動過程的示例。基于對稱密鑰的啟動過程具備速度方面的優勢,但是在保證供應鏈中啟動密鑰的機密性方面卻可能會遭遇困難。因此,封閉的生態系統是最受大家歡迎的,因為只有唯一的一個實體掌握其中的密鑰。
圖2 采用對稱密鑰保障安全啟動的出廠設置
OEM prepares final operational code and signs it with a private key. -- OEM廠商準備最終操作代碼并使用私鑰進行簽名。
Firmware Binary -- 固件二進制
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一起組裝到嵌入式系統中。
OEM securely delivers signing secret key to CE manufacturing systems via a Hardware Secure Module. -- OEM廠商通過硬件安全模塊將簽名密鑰安全地交付給CE制造系統。
CE Partner -- CE合作廠商
CE partner provisions and ships CE to OEM. -- CE合作廠商供應和交付CE給OEM廠商。
圖3 對稱密鑰流驗證過程
System Processor -- 系統處理器
Firmware Binary -- 固件二進制
Signature -- 簽名
Secure Element -- 安全元件
Signing Secret Key -- 簽署密鑰
Validate -- 驗證
OR -- 或
非對稱密鑰加密技術(圖4)在安全啟動過程的出廠設置和現場驗證階段則使用單獨的密鑰,這兩個密鑰之間的關系由諸如橢圓曲線加密技術(ECC)等加密算法來控制。ECC被用在一種叫做橢圓曲線數字簽名算法(ECDSA)的特殊協議中,該協議常應用于固件簽名和驗證。通常情況下,原始設備制造商(OEM)都擁有多家合作廠商來為其供應構成嵌入式系統的子系統或某個系統的替代資源。
圖4 開放式合作伙伴生態系統中的安全啟動設置
OEM signs firmware partners to authorizing them to create legitimate operational firmware. -- OEM廠商簽署固件合作廠商,授權其創建合法的操作固件。
Firmware Partner -- 固件合作廠商
Respective firmware partner independently signs their operational firmware. -- 各個固件合作廠商獨立對其操作固件進行簽名。
Respective firmware partner delivers signed firmware to OEM. -- 各個固件合作廠商向OEM廠商交付簽名固件。
Signed Firmware -- 簽名固件
OEM assembles both firmware and CE into the embedded system. -- OEM廠商將固件和CE一起組裝到嵌入式系統中。
OEM signs manufacturing partners to provision CE with identities and secrets. -- OEM廠商簽署制造伙伴以為其供應帶有身份和秘密信息的CE。
CE Partner -- CE合作廠商
CE partner provisions and ships CE to OEM. -- CE合作廠商供應和交付CE給OEM廠商。
使用非對稱密鑰過程,例如ECDSA,也適用于安全散列算法SHA。在實踐中,SHA256會檢測操作固件以創建一個摘要,然后使用ECDSA協議對摘要進行簽名以完成整個驗證固件過程。這樣生成的簽名就是一個附有操作固件并可安裝到嵌入式系統中的證書(圖5)。
圖5 非對稱密鑰流的現場驗證過程
Firmware Binary -- 固件二進制
ECDSA Verify -- EDCSA驗證
Firmware Certificate -- 固件證書
Software Partner Certificate -- 軟件合作伙伴證書
OEM Root Certificate -- OEM根證書
Device Unique Certificate -- 設備唯一證書
CE Partner Certificate -- CE合作伙伴證書
System Processor -- 系統處理器
Random Challenge -- 隨機挑戰
Crypto Element -- 加密元件
Device Unique Private Key -- 設備唯一私鑰
ECDSA Sign -- ECDSA簽名
1. Verifies firmware is legitimate and came from an approved partner. -- 驗證固件是否合法且由許可合作伙伴提供。
2. Verifies CE device is legitimately provisioned by a sanctioned partner. -- 驗證CE器件是否由許可合作伙伴合法供應。
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. -- 借助掌握的私鑰相關知識來驗證嵌入式系統是否合法。這對于依靠CE作為信任基石的遠程系統而言至關重要。
非對稱的密鑰結構需要一個私鑰和一個公鑰,前者必須保密且只被用于出廠設置,而與其在數學上相對應的后者則只用于現場驗證階段。公鑰可以被任何人查看而不影響啟動過程的安全。因此,基于非對稱密鑰的安全啟動過程更適用于由多個實體共同構成的開放式生態系統。
6適合制造業的安全啟動
如果一個安全啟動過程需要很高的生產物流成本,那么它很快就會被市場拋棄。因此,一個有效的安全啟動過程應該是可以確定操作代碼和檢測過程的完整性且同時不會大幅增加生產流程的時間或成本。
雖然對于開放式和封閉式生態系統而言最佳的選擇分別是不對稱和對稱密鑰啟動過程,但是使用加密元件卻可以打破這個限制,使得任意一種啟動過程都可以應用于任意一個生態系統并且同時還能保持密鑰的機密性。但是,非對稱密鑰方法可以提供更多的自由度,令設計人員能夠在開放式合作伙伴生態系統中輕松打造一個從數學角度看非常嚴謹的信任鏈維護過程。
7問責制助力安全啟動落實
嵌入式系統的安全啟動過程一直以來都是由管理產品安全的相關法規和標準所推動。當嵌入式系統是一個在物理上獨立的系統、一個孤島式的存在時,這種模式是非常有效的。然而隨著IoT的出現,各個系統開始連入物聯網,故障遏制邊界的消除不僅大大鼓勵了攻擊者,也大幅提高了各界對安全啟動的關注度。事物的遠程可訪問性意味著我們能更容易地訪問嵌入式系統,而這樣就令世界上任何一個地方的任何一個人都可能成為系統攻擊的潛在受害者。雖然通過事后調查分析可能會揭示出哪個設備是罪魁禍首、哪家制造商應該被追責,但是損害已然造成。為了限制相關責任,產品制造商正開始采取積極的措施在他們的產品中集成防篡改安全啟動過程,并添加加密元件來成功保障安全啟動。
評論