電子工程專輯 EE Times China -提供有關電子工程及電子設計的最新資訊和科技趨勢
引言當今無處不在的線上和永遠在線應用使黑客攻擊感到異常興奮,這為他們提供了可以嘗試攻擊的全球性數量大量的設備。嵌入式設備的安全性對於阻止黑客獲得其控制權至關重要,更糟糕的一種情況是,黑客可能會對設備的連接系統發起更具破壞性的攻擊。但是,遠程攻擊只是對手採取的其中一種方式,對物理硬體設備的本地攻擊則是獲取機密信息的另一種方法,這些攻擊包括訪問系統驗證密碼,甚至包括應用代碼本身的智慧財產權等。
本文將回顧在嵌入式微控制器中配置強大而可靠嵌入式安全機制的基本概念。我們將探討一些安全原則,並深入了解攻擊者使用的攻擊面和攻擊手段。
圖1:在IoT部署中,即便一個受損或不安全的設備也會使整個系統遭受對手攻擊。(來源:意法半導體)
無論安全性設置給嵌入式系統增加多少複雜性也絕不能低估,而且,這不僅涉及保護加密密鑰和嵌入式固件,還包括個人可識別數據。如果對手獲得設備固件的訪問權限,就有可能對代碼進行反向工程。通過了解代碼的工作原理,攻擊者可以發現進一步漏洞,並有機會注入惡意代碼。在取得訪問單個不安全連接IoT設備之後,可能會損害整個IoT網絡部署,參見圖1。
需要保護什麼在開始探討安全技術之前,我們首先回顧並分類需要保護的對象。黑客可以針對物聯網設備的三個不同方面發動攻擊。一個目標是需要保護的物聯網設備,其中包含的資產需要保護。圖2列出了需要保護的資產以及每個目標受到損害後的相關風險。在實施嵌入式安全技術時,這種分類方法有助於選擇所使用的正確安全方法。
圖2:受保護目標、資產和相關風險的分類有助於確定需要實施的安全方法。(來源:意法半導體)
攻擊類型對於物聯網設備的攻擊可能出自多種來源,大致可分為基於軟體或基於硬體的攻擊。對設備運行軟體的攻擊可以在本地或通過網絡連接進行,而硬體攻擊類型則進一步可細分為非侵入式或侵入式。非侵入式攻擊一般在本地進行,僅在某些情況下需要與IoT設備的主PCB進行電氣連接。而侵入式硬體攻擊涉及對設備微控制器的物理和電氣訪問。對設備發起侵入式攻擊通常是黑客採用的最昂貴途徑,並且需要特別的專業知識。圖3展示了上面討論的三種攻擊類型,並回顧了攻擊者使用這些攻擊手段的技術和原因。圖3:攻擊類型和成本。(來源:意法半導體)
軟體攻擊往往最為常見,通過利用設備通信管道,找到固件中的錯誤或缺陷(已知的協議漏洞)。由於是遠程攻擊,涉及的成本也可能相對較低,且易於實現。關於設備漏洞的一些信息可以在黑客社區內共享和交流。
實踐中的安全措施從設備製造商的角度來看,對設備安全驅動程序的了解有助於確定所需的安全功能,以下討論的三種情況突出顯示了每種情況所需的一些安全功能。下一節內容將說明眾多安全功能及其實現方式。
場景一考慮一家固件銷售公司,其主要收入來源於特許權使用費。該公司生產的固件是一種極其寶貴的智慧財產權(IP)資產,需要加以保護。客戶將固件與應用代碼一起使用。從公司的角度來看,需要將固件與客戶代碼安全地隔離。公司需要不時地發布固件更新,因此需要安全安裝和更新固件。在這種情況下,所需的安全功能包括隔離、軟體IP保護以及安全固件安裝和更新等日常規範。
場景二IndustrialAdvantage公司出售昂貴的生產控制設備,並希望為客戶提供固件更新服務,但要求提供的設備上僅運行IndustrialAdvantage固件。需要認真處理固件更新過程,並在整個過程中進行身份真實性驗證。通過一個安全啟動功能可確保設備上僅僅運行IndustrialAdvantage固件。安全的安裝和更新功能負責進行完整性和真實性驗證。
場景三Consumer Tech製造的設備可收集用戶數據,並作為系統擴展的一部分。公司時刻在確保遵守GDPR等消費者數據法規,Consumer Tech還希望確保其設備行為可靠,並且僅僅Consumer Tech固件才可在設備上運行。在設備與主機系統進行通信期間,可能會有暴露用戶數據風險,通過使用加密技術、設備標識和身份驗證可以防止暴露個人身份信息。使用安全啟動功能可以維護平臺完整性。
設置安全框架對於嵌入式開發人員而言,能夠訪問微軟設備微控制器平臺的一套全面且強大安全功能至關重要。這裡一個案例是意法半導體STM32系列微控制器的「 STM32Trust」生態系統,參見圖4。
圖4:STM32Trust安全功能生態系統。(來源:意法半導體)
STM32L4和STML5 系列微控制器上使用的STM32Trust安全功能已通過Arm PSA Level 2和SESIP Level 3認證,這些安全功能要麼嵌入在微控制器晶片內,要麼作為與器件相關的固件提供。
在本文的剩餘部分,我們將重點介紹STM32Trust提供的兩項基本安全功能:安全啟動(SB)和安全安裝/更新(SBSFU),這些在之前的場景討論中已經進行了重點介紹。
安全啟動安全啟動的基本原理是,在重置設備時,安全啟動代碼會執行並驗證應用固件是否真實可靠,然後再決定是否啟動。安全啟動取決於兩個參數。首先,安全啟動代碼是重置時執行的唯一代碼。其次,啟動代碼不可改變,這意味著無法以任何方式對其進行修改。啟動代碼地址是唯一的,從而可防止在設備重置時訪問其它固件地址。這兩個方面共同為設備建立了信任根,參見圖5。
圖5:安全啟動功能的基本原理。(來源:意法半導體)
通過類似籤名對比,可進行應用固件完整性和真實性驗證。完整性檢查需要將應用代碼生成的哈希值(有時稱為摘要)與提供的參考基準進行比較。真實性驗證需要檢查根據生成的哈希值和專有密鑰得到的籤名,然後使用關聯的公鑰驗證籤名。參考哈希值和籤名值始終需要固件提供,這些通常存儲在稱為元數據(metadata)或標報頭(header)的容器中,參見圖6。由於生成方法的原因,元數據不需要加密。如果試圖採用惡意固件,則無法使固件哈希值與參考值匹配。圖6說明了使用哈希值固件摘要和私鑰的元數據籤名結構。
圖6:生成元數據籤名。(來源:意法半導體)
在圖7中,安全啟動代碼使用元數據籤名來確認應用固件的完整性和真實性狀態。如果籤名核對過程驗證了有效固件,則啟動過程將繼續,並加載應用代碼,與應用固件或籤名出現差異會導致啟動過程失敗。
圖7:在加載應用之前,使用元數據籤名驗證應用固件。(來源:意法半導體)
安全固件更新固件更新過程中已經確知的關鍵步驟包括:
●創建應用固件更新
●生成關聯元數據
●將其傳輸到目標設備
●安全啟動功能使用元數據來檢查應用固件完整性和真實性
●如果檢查通過,則安全啟動過程將安裝新固件
新的元數據籤名創建方法與安全啟動中採用的技術相同。對於許多遠程連接的物聯網/工業物聯網(IoT/IIoT)設備,最簡單的傳輸方法是通過無線方式(OTA)更新。沒有網際網路連接的設備則需要本地連接,例如可使用UART、SPI、USB或microSD卡等方式更新。新的應用固件是採用加載程序寫入目標設備快閃記憶體,加載程序通常包含在安全啟動代碼或應用固件中。當前固件仍在運行時,新固件需要在本地存儲。
圖8說明了遠程固件更新的過程,需要兩個內存「插槽」以用於當前固件和更新版本存儲。
圖8:遠程固件更新示例。(來源:意法半導體)
更新過程的最後階段涉及檢查新的應用固件。如果元數據檢查通過,則會進行最新和現有應用固件的交換,表明更新已完成。
結論嵌入式設備的安全性不再是可選配置,每臺設備都需要防禦惡意攻擊和潛在漏洞。設備的安全性始於啟動,因此在啟動過程中整合安全啟動以及安全固件安裝和更新等安全功能至關重要。STM32Trust能夠為嵌入式開發人員提供保護設備以及滿足法規要求的所有安全功能。
作者:貿澤電子Mark Patrick