3. 智能汽車功能安全(Safety)和信息安全(Security)在設計階段也有衝突的地方,比如過度基於軟體實現的安全特性,會導致控制指令的延時,影響功能安全特性的實現。因此為了提升產品的性能,以及Safety和Secuirty的強隔離,也必然會要求將更多的信息安全特性集成到晶片裡,或者基於晶片的能力來實現。
晶片安全圖譜的兩個維度:
1. 一個維度是晶片自身的安全防護能力,比如能抵抗物理侵入式、半侵入式物理攻擊;能檢測和防禦故障注入攻擊;以及耳濡目染的側信道攻擊。這就像是一輛坦克自身厚重的鋼板,能抵擋普通子彈和炸彈的攻擊。物理攻擊需要較強的專業能力,比如藉助專用的測試儀器,以及可以近距離接觸的物理設備。
2. 另外一個維度是基於晶片的安全服務,比如晶片直接固化的密碼類算法,密鑰管理機制,真隨機數生成器,PUF等機制。3.1 側信道攻擊
a)概念:利用設備的接口對晶片進行電磁和功耗的分析,無需對晶片進行破壞
b)常見測評、攻擊類型:時間分析、功耗分析、電磁輻射分析、光子分析
c)適用對象:集成電路/晶片、智慧卡、智能門鎖、物聯網終端、車載電子等產品
圖2(圖源:百家號)
下面是一個針對手機的側信道攻擊(電磁分析攻擊),作為一個簡單的樣例。
圖3(圖源:https://www.sohu.com/a/165330167_99909589)
d)防護原理:消除和降低側信道信息與密鑰的相關性,常用手段:
3.2 故障注入攻擊
利用故障(電壓、時鐘等)引起電路出現異常,根據異常信息分析晶片內部的敏感信息;或者直接利用引起電路的異常來改變程序運行等。
常用測評/攻擊類型:電壓注入、時鐘注入、電磁注入、溫度注入,雷射注入。(信息來源:樂鑫發布關於故障注入和安全啟動的安全性公告(CVE-2019-15894))
傳感器:專用傳感器(電壓、頻率、溫度等)對電壓、時鐘故障可以起到檢測和告警作用
邏輯&時鐘冗餘:邏輯冗餘分為面積冗餘和時間冗餘。面積冗餘是指多分計算邏輯各計算一次,最終對比各個計算邏輯的結果來檢查是否有故障注入;時間冗餘是指一份計算邏輯計算多次,比較多次的結果來檢查是否有故障注入。
金屬外殼&特殊封裝:通過金屬外殼,可以對雷射故障注入,電磁故障注入等手段具有一定的抑制作用
邏輯深埋:將關鍵電路邏輯部署在晶片內層,而不是直接部署在晶片表層,使得故障注入的難度增加
CRC校驗
3.3 物理攻擊
a)概念:去除晶片封裝,對內部電路進行電接觸,結合其他攻擊手段獲取保存在晶片內部的敏感信息
b)常見攻擊類型:FIB電路修改/探針攻擊、單板級走線篡改/探聽、整機攻擊。
c)防護技術:
- 提供加解密功能
3. Evita Full-Medium-Light與SHE差異以下為詳細的案例介紹。
圖4
2)核心能力:
4.2 專用算法密碼引擎
1)NXP針對Flash讀寫直接加解密引擎-Bus Encryption Engine,BEE圖5:BEE 邏輯架構圖
總線加密引擎(BEE)被實現為實時解密引擎,用於CPU直接讀取並同時解密Flash(FlexSPI接口)中的數據。BEE的主要功能是:2)NXP針對RAM在線加解密引擎-Inline Encryption Engine
4.3 小結
1. SHE規範奠定了汽車安全基礎,引入了汽車可配置的安全子系統概念
2. EVITA的HSM規範擴展了SHE,並採用了Full,Medium、Light三種規格,從而滿足更多場景的要求
3. 如今,OEM正在創建自己的技術規範,包括SHE、EVITA和FIPS 140-2的某些方面,以及區域/行業性特殊要求(比如支持國密算法)
4. 還有一些廠商定義特定的輕量級加密引擎,比如NXP的IEE、BEE、PRINCE算法等
先講一個概念:信任鏈(chain of trust)
在可信計算體系中,建議信任需要先擁有可信根(Root of Trust),然後建立一條可信鏈(chain of Trust),再將信任傳遞到系統的各個模塊,之後就能建立整個系統的可信鏈。
安全啟動的原理就是硬體信任錨+信任鏈。
網絡設備的安全性嚴重依賴設備上運行軟體的完整性,通常使用信任鏈確保軟體完整性,啟動期間每個階段在執行前檢查下一個階段,如下圖所示,這個過程有一個特例,這一步之前沒有任何東西可以進行任何檢查,此階段稱為信任根(Root of Trust)。
5.1 安全啟動
安全啟動(Secure Boot):安全啟動也叫Verify boot,就是在啟動過程中,前一個部件驗證後一個部件的數字籤名,驗證通過後,運行後一個部件。
圖7
目前安全啟動基本上是對安全要求比較高的場景下,晶片必備功能。
可信啟動(Trusted Boot):也稱為Measure boot,就是在啟動過程中,前一個部件度量(計算HASH)後一個部件,然後把度量值安全保存下來,比如放到一個集中的部件(或雲端),設備啟動後的一致性(完整性)的校驗由集中的部件負責完成。擴展:在IoT領域,以微軟為主推出了輕量級的類TPM技術-DICE,就使用了基於硬體信任錨的可信啟動方式。
5.3 加密啟動
顧名思義,就是存儲在flash中的image是密文,啟動過程中會先解密再啟動,下圖是NXP加密啟動的流程圖:
圖9
2.安全啟動(Secure boot)、可信啟動(Trusted boot)和加密啟動(Encryptedboot)三種啟動方式並不是互斥的,可以把實際應用場景、性能要求結合起來使用。比如安全啟動(Secure Boot)和加密啟動(Encrypted boot)相結合,既可以確保啟動過程系統軟體的一致性(沒有加載被篡改過的軟體系統),又能確保Flash中的軟體image不被逆向破解(因為image已被加密) 3.需要注意的是,如採用加密啟動,可以藉助前面講的IEE硬體加密引擎,就可以顯著提升解密性能,從而提升啟動。6.1 OTP存儲器
一次性可編程存儲器(On Chip One Time Programmable ROM, On-Chip OTP ROM):OTP存儲器,也稱為eFuse,是晶片中特殊存儲模塊;欄位中的任何eFuse位都只能從0編程為1(融合),但是讀取操作沒有限制。OTP在安全中的應用一般可以存放一些固定不變的值,比如:
下面簡單介紹一下OTP和Secure Boot的配合案例,在一些低端設備,限於成本和性能 等原因,會採用對稱加密的方式來驗證啟動過程bootloader image合法性,那又是如何做到的呢?晶片第一次boot時,軟體bootloader根據以下步驟使能Secure boot:
1)硬體產生一個secure boot key,將這個key保存在efuse中,利用這個key、一個隨機數IV和bootloader image計算出secure digest。
2)secure digest與隨機數IV保存在flash的0x0地址,用於在後續boot時驗證bootloader image是否被篡改。
3)bootloader通過燒寫efuse中的ABS_DONE_0永久使能secure boot。
4)晶片在後面的boot中,ROM bootloader發現efuse中的ABS_DONE_0被燒寫,於是從flash的地址0x0讀取第一次boot時保存的secure digest和隨機數IV,硬體使用efuse中的secure boot key 、隨機數IV與當前的bootloader image計算當前的secure digest,若與flash中的secure digest不同,則boot不會繼續,否則就執行軟體bootloader。
5)軟體bootloader使用bootloader image中保存的公鑰對flash中的partition table和app images籤字進行驗證,驗證成功之後才會boot到app代碼中。
第一次boot時secure boot與flash encryption的生效過程如下圖所示,圖中藍色框是 secure boot的步驟,綠色框是flash encryption的步驟:
圖10
後續boot時流程圖如下,圖中綠色框中的步驟會執行解密,解密是由硬體自動完成: 圖11(圖源:https://www.cnblogs.com/aaronLinux/p/9198725.html)6.2 Flash空間保護機制
Flash空間保護主要是Flash某些區域設置只讀或者只寫,防止非法訪問和篡改。Flash保護區域的數量和大小會根據Flash的類型和該Flash塊的大小而有所不同。主要的應用場景有:
6.3. 內存的保護機制
目前作業系統也可以設置一些區域的不可讀或者寫的機制,也有晶片級內存保護機制,下面仍然以NXP晶片為例。
圖13:i.MX 8安全性概述
安全存儲區具備嚴格的訪問控制機制,安全存儲區域具備Domain ID,權限級別(TZ或NS)和權限列表(Permissions),只有硬體訪問時具備這些能力的訪問才能訪問成功,否則會失敗,這個是完全硬體級的訪問控制,可以與Trust Zone和業務的訪問控制權限等配合使用。FOTA(Firmware over the air)
能夠對汽車執行現場軟體更新的優勢已得到充分確立:它將為製造商節省資金,使關鍵錯誤得以立即修復並在其生命周期內隨時向汽車添加引人注目的新功能。理想情況下,對車輛操作至關重要的更新應在後臺無縫且不可見地進行。
圖14
上圖顯示了關鍵組件,這些組件將更新文件從OEM伺服器獲取到車輛中的特定ECU。通過蜂窩網絡在單個車輛和伺服器之間建立安全連接。這樣就可以將新的固件更新安全地發送到車輛的Telematics Unit,然後再發送到OTA Manager。OTA Manager管理車輛內所有ECU的更新過程。它控制固件更新到ECU的分配,並告訴ECU何時執行更新。
這在需要同時更新多個ECU的情況下非常重要。為涉及多個ECU的車輛添加新功能。更新過程完成後,OTA Manager將向OEM發送確認。
可以在運行OTA Manager的ECU上安裝外部NAND快閃記憶體,以存儲固件更新,直到需要它們為止。外部快閃記憶體還可以用於存儲其他車輛ECU的固件備份副本,如果ECU更新出現重大故障,則可以調用該備份副本,從而使ECU沒有任何可用的固件。這些備份副本將通過加密和身份驗證來提供保護,以防止存儲在外部存儲模塊中的同時對固件進行任何篡改。
OTA Manager包含車輛內每個ECU的表格,其中包括序列號和當前固件版本等信息。這樣,OTA Manager可以驗證到達的固件更新,並確保已授權將其用於該車輛。如果要更新的ECU不具有安全功能,則OTA Manager還將負責解密和驗證傳入的更新。完整二進位文件:新固件完整發送。這具有不依賴於先前固件的優點,從而即使先前版本已損壞也可以進行更新。該方法的兩個缺點是傳輸二進位文件所花費的時間以及在接收方ECU中存儲二進位文件所需的空間。許多傳統的ECU在CAN總線上的典型速度為500kbit/s。
差異文件:在伺服器上,OEM將新固件與以前的版本進行比較,並創建一個「差異」文件,其中包含它們之間的差異列表。
根據更改的數量,此文件通常是:
「A/B」方法(「A/B」 approach):這會使每個ECU上的快閃記憶體數量增加一倍,以便它可以在「主」快閃記憶體中包含當前固件,並在「第二」快閃記憶體中具有用於全新版本的空間。從最終用戶的角度來看,這種方法是理想的,因為ECU可以使用主存儲器保持正常運行,而新固件可以在後臺寫入輔助存儲器。更新完成後,ECU在方便的時間使用新更新的固件(在輔助快閃記憶體塊中)(例如,在下次啟動時,也可以等待將開關與要更新的其他ECU進行同步)。由於始終有可用的固件,因此沒有將ECU置於不可操作狀態的危險,因為始終可以立即「回滾」到先前的可用固件。一個明顯的缺點是在MCU上實現兩倍於執行快閃記憶體的成本。
「就地」方法(「In place」 approach):在這種情況下,設備上僅存在固件的一個版本,並且作為更新的一部分擦除並編程了各個塊。當ECU處於正常運行狀態時,更新無法運行——這意味著車輛將在一段時間內無法運行。該時間段主要由重新編程ECU Flash所需的時間決定。車輛中的主要ECU(如發動機控制器)將具有數MB的快閃記憶體,如果需要對完整的固件進行重新編程,則可能需要數十秒的時間才能完成。對於OEM廠商來說,這是一個挑戰——客戶是否會接受這樣的事實,即他們無法在長達一分鐘的時間內啟動引擎。A/B方法的增加成本必須與「就地」方法給客戶帶來的不便之間進行權衡。由於「就地」方法中僅存在固件的一個版本,因此更新過程中發生錯誤或重置可能很難從中恢復,並且如果未仔細處理,則可能導致模塊(以及汽車)功能無法正常運行,因此在車庫對其進行更新之前,車輛將一直無法使用。
現代處理器配備了基於硬體的調試功能,以促進片上調試過程。
如果診斷過程沒有合適的安全機制,很容易被黑客利用,如下圖所示:
圖15
安全JTAG模式通過使用基於挑戰/響應的身份驗證機制來限制JTAG訪問。檢查對JTAG埠的任何訪問。只有授權的調試設備(具有正確響應的設備)才能訪問JTAG埠。未經授權的JTAG訪問嘗試將被拒絕。此功能需要支持基於質詢/響應的身份驗證機制的外部調試器工具(例如Lauterbach Trace32,Arm®RVDS/DS5調試器等)。通常在設備製造期間而不是在開發板上啟用安全JTAG模式。目前很多晶片廠商都提供自己的安全診斷方案,下面僅以NXP為例:
圖16
1.用戶通過JTAG接口請求調試
2.SOC以晶片唯一ID響應
3.伺服器找到相應的密鑰(TZ或normal world)
4.用戶通過JTAG界面提交密鑰
5.安全的JTAG模塊將密鑰與預先配置的密鑰進行比較
6.如果匹配,則啟用調試(對於TZ或normal world)
註:
1. 這裡的安全診斷是針對晶片的調測,不要跟測試設備通過OBD口和車內ECU進行通訊爭端協議(UDS)進行混淆了。2. 從安全角度通常建議設備真正投入使用時,應關閉晶片的JTAG口或者其他類型的調測埠。
安全運行環境主要是指晶片向OS和APP提供安全隔離的計算環境,以及配套的虛擬機管理程序或者SDK,通常包括晶片計算多分區(Multi Partitions)機制和可信計算環境(Trust zone)。
1)Arm V8.4架構開始引入Secure EL2擴展,在Secure世界中增加了對虛擬化的支持。這使得可以在非安全狀態下進行虛擬化的功能進入安全狀態。虛擬化的一個關鍵特性是增加了虛擬機管理程序控制兩階段的地址翻譯過程(如 圖17 )。 圖172)Secure EL1中安全分區具有隔離的地址空間,其他安全分區無法訪問此空間,是一個沙箱環境。
3)使用Secure EL2安全分區來實現安全世界的虛擬機,安全分區管理器:EL3和Secure EL2中通用的固件負責管理這些安全分區,這裡的關鍵組件是安全分區管理器(SPM)2. 系統資源隔離(以NXP的XRDC特性為例)
1)什麼是分區:
內核,外圍設備和內存可以屬於多個分區
2)分區的工作原理:
3)分區的好處:
非法訪問時會立即報告,有助於在投入實際應用之前發現難以追查的資源競爭問題 提供成品的安全性:保護系統關鍵的SoC外設免受不太信任的應用程式的攻擊圖19
註:限於篇幅,本文沒有講述Trustzone技術本身,這方面的技術在網上有大量的論述,本文不再重複。
3. 多核虛擬化
目前很多車載ECU具有多核,每個核可以根據實際需要運行不同ASIL等級的應用程式,也可以把Security和Safety應用嚴格隔離開,或者通過虛擬化技術運行不同的作業系統等。因此多核虛擬化技術應用也會越來越多。第一節講的ARM Trustzone最近的架構已經支持虛擬化技術,下面是NXP虛擬化技術的一個例子:1.晶片的安全為什麼這麼重要?
最重要原因是汽車容易進行近距離和物理接觸,所以黑客可以較容易實施物理攻擊,如果沒有安全的晶片設計,很難保障整車的安全。比如密鑰和隱私數據的盜取,篡改等;同時行業標準,整車性能要求也促使大家不得不把更多安全功能建立在晶片安全輔助的基礎之上。
2.汽車晶片級安全技術層次以及各技術之間的關係
2.1首先要關注晶片自身的物理安全能力,汽車晶片必須能抵抗一定級別的物理攻擊,比如黑客可以利用側信道攻擊獲取晶片內部的密鑰信息,一旦獲取密鑰,就可以成功突破車內其他部件,甚至突破一批汽車的安全控制措施,因為目前很多車型是使用相同密鑰的,安全強度低。
2.2 汽車智能化和網聯化的加強,從封閉的安全世界走向了一個相對開放的危險世界。那麼整車的信任源在哪裡?因為沒有信任源,整車的信任體系就無法建立起來。這個時候我們就要求車內核心的晶片自身必須嵌入信任根或者引入第三方TPM晶片,確保上電的「第一行代碼就是完全可信的」,由此通過安全啟動,構建整車的信任鏈。
2.3 有個信任根,就需要關注安全存儲。汽車的密鑰,設備的唯一身份,以及一些特殊的安全度量值(比如軟體hash),安全配置等,都需要安全的存儲機制,確保黑客看不見,拿不走,改不了,這類安全技術比如OTP、PUP、晶片級訪問控制等。
2.4. 有個硬體層面的安全底座,就要考慮上層應用的安全機制,尤其是安全隔離。隨著現在ECU計算能力的增強,運行的功能越來越集中,就需要考慮功能之間的隔離,確保一個功能被黑客攻破,讓攻擊不能蔓延開,從而不會影響其他功能的正常運行,因此就出現了各種安全運行的機制,比如trust zone,虛擬化技術,運行期內存一致性檢查技術,控制流一致性(CFI)技術等。
2.5.另外還有一些特殊場景的安全,比如內置數字版權技術,晶片安全調測技術,固件安全刷寫等場景,都需要考慮安全性,否則都會帶來嚴重後果。
最後,我們需要強調的是,沒有一個單點安全技術可以包治百病,安全沒有「銀彈」,必須確保各個晶片設計,軟體設計,系統設計各環節的安全。從威脅分析入手,再基於成本、功耗、基礎設施配套情況等來綜合設計系統的安全機制。免責聲明:本文為轉載文章,轉載此文目的在於傳遞更多信息,版權歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權問題,請聯繫小編進行處理。
貿澤電子設計圈由貿澤電子(Mouser Electronics)開發和運營,服務全球廣大電子設計群體。貿澤電子原廠授權分銷超過1,100家知名品牌,可訂購500多萬種在線產品,為客戶提供一站式採購平臺,歡迎關注我們,獲取第一手的設計與產業資訊信息!