?
一、信息安全背景
信息安全需求來源
現在車可能相比于十年之前,它有更多的聯網的功能,越來越像一個手機。有一些隱私的信息也會存放在車上,車輛已經越來越多的跟自己的一些個人相關的信息有關。 ? 自動駕駛功能引入以后,因為它可以依靠一些軟件來實現自動駕駛。信息安全,它的特點是:可能會去篡改軟件的內容或者是讓一些功能失效。 ? 對于Safety來講,它有一部分也關系到信息安全,所以從個人隱私、信息和車輛的使用安全來講,它都離不開信息安全,有非常強相關的關系。 ?
? ?
信息安全的相關場景
在車里面,有哪些場景會和信息安全有關?以往我們用的多的是診斷,它是一個接入車上電子ECU的一個通道,是診斷入口。 ? 車連上互聯網后。多了很多應用場景,如下圖所示。像遠程收集汽車的狀態,有些信息還可以和4S店系統做一個同步,得到維護和服務的信息;像車隊管理,物流公司整車都有架構系統,還有V2X跟路邊單元通信和云端的一些V2S的服務; ?
? 還有自動駕駛保險,比如說保險以后跟車上面是不是有一個非常健全的信息安全系統,有很大關聯;比如說可以根據車輛傾向性等級,制定不同保險的策略;還有OTA可以遠程去更新車上的一些固件;還有遠程駕駛員協助;這些都是可能和信息安全可能會有些關系的應用場景。 ?
信息安全的風險點
在這種場景下,有哪些手段可能會成為車輛信息安全被攻擊的途徑呢?從下圖里面可以看到,如Head Unit或者一個導航系統,它是最主要的一些被攻擊者去攻擊的一個途徑,因為它上面有存儲設備的接入,又有網絡互聯的功能。 ?
? OTA也是通過下載。所以它上面可以有很多手段黑客可以攻擊。有些手段在互聯網時代是比較多見的。比如通過以太網的一些協議來攻擊和侵入我們的系統。 ? 上面的系統也是Linux或者安卓的,這些也是在消費電子領域經常使用的,有很多手段和惡意的方式來攻擊我們的系統。包括去獲取系統上的一些用戶數據什么的。除了這個,還有我們車上的ECU,ECU跟安全用車有非常大的關系。 ? ECU上面的固件也是非常重要的,信息安全的一個問題點就是:它有可能通過一些方式去更新ECU的一些固件,達到破壞功能,會獲取用戶數據的一些目的。 ? 除了通過CAN的OBD或者直接去更改固件、應用,現在有OTA以后,也可以遠程去更新車上大部分ECU固件,這些都成為信息安全需要去考慮怎么去做保護的一些點。如: ? 1. 一些非法接入設備,有非法OBD的設備,非法USB的一些磁盤的設備去做訪問 。 ? 2. DOS類似的攻擊手段,大多數也是基于以太網上面去做一些基于DOS的攻擊,像TCP 、SYN 、ACK、辦公攻擊,都是黑客經常會使用這種手段。 ? 3. 為了觸發一些非標準的畸形的報文,去系統進入癱瘓或者進入一個無法工作的狀態。 ? 4. 通常會被黑客使用的手段之一就是端口掃描,去提前獲取我們車上設備的一些基本信息,根據這些基本信息再去有針對性的去制定一些破解的方案。這些都是信息安全的技術手段。 ? 5. 密碼爆破,這種系統通常都會用一個密碼系統來保證是不是合法客戶在操作設備,所以它也會有很多技術用一些密碼破解,達到介入你這個系統地。 ?
二、信息安全措施
中央計算架構下的數據通信安全
針對剛才提到的這些有可能信息安全的一些點。我們有什么考慮呢?我們就當前比較火的中央計算區域控制器下的架構來分析一下。 ?
? 我們可以看出,中央計算這個組上面需要考慮的一些經濟安全的技術,比如說它們之間最基本的還是用以太網做一個骨干網。如果是這樣一個設計,這個以太網上的數據通信的安全通信就顯得非常重要。 ? 比如現在使用的TLS/DTLS就是這樣一個通信的安全機制。它基于公鑰加密進行會話、密鑰協商和加密通信這樣一個手段來保證,這樣一個中央計算單元上面,我們通常會布置一個可信的執行環境。上面會運行一些可信的應用,可專門做一些密鑰的管理,做一些加密算法的運行。 ? 在這樣一個中央計算單上面,我們會布置一個入侵檢測系統和一個防護系統,也叫IDPS。 ? 為了做內網和外網的一個隔離,我們經常會設計一個安全網關。將對外的一些流量和車內使用流量做一個劃分,將有可能會被攻擊的這樣的網絡,相對來說比較安全,屬于車輛內部的網絡作為一個隔離,就是中央網關的架構下做的。 ? 中央網關通常是需要有一個比較強的處理器,因為它可能需要做一些深度的包的一個檢測;還要運行一個IDPS的引擎;有些固件需要做它的一個轉發;需要一些固件實現類似于黑白名單、過濾器這樣的一個功能。 ? 除了在中央計算單元上去做這樣一些信息安全的設計外,對于區域控制器這樣的節點,實際上也要布置類似的信息安全策略,如果它是一個接入的以太網,TLS這種安全通信機制也需要去實施的。 ? 另外類似,還有一個HSM,用來做一些信息安全模塊密鑰的管理、安全算法。像這種區域控制器也要有這樣的設計,另外區域控制上會接入CAN的ECU通信。 ? 以往對于CAN上面的保護,我們考慮的經常是,有沒有設定CAN ID的發送,雖然它能實現過濾一些非法ID,實際上如果比較了解車上CAN總線設計的一些專業人員來講,它是有辦法做一些模仿CAN總線消息的發送,去做一些能攻破系統的一些攻擊手段;或者操作車上的一些開關什么的都是可以通過模仿一些CAN消息發送來實現。 ? 因此,需要在傳統的CAN總線上也布置一個IDS系統,去針對CAN報文的一些異常行為做一個檢測,然后去做上報,并且做一些保護的措施,達到從CAN通訊層面的信息安全的一個策略。 ? 在MCU上的IDPS,實現相對來說是輕量級的,因為它需要部署在一個MCU的環境下面。這樣的一個區控制器它有以太網通信能力,所以用VLAN做一些虛擬網段的劃分;做一些數據流量的隔離,讓它運行在一個比較安全的環境下面。 ? 我們現在基本上也用上了SecOC通信,因為CAN或者是以太網在ECU層面,它們都是通過PDU去通信的,我們可以對PDU做一個信息安全層面的校驗,這就是secOC做的一個方法。 ? 對于使用了SecOC的情況,攻擊者就不能輕易破壞掉了,因為secOC有一些加密機制來保證它通信的信號的完整性和真實性。 ? 從軟件的設計上來講,SecOC可以保證每個電路與執行的鏈路都是安全可信的。比如獲取密鑰到運行密鑰的一個模塊到最終應用層去得到它,經過的每一個軟件模塊,它都是在一個很嚴密的一個框架下面去實現。 ? 所以,即使有黑客通過一些手段進入你的軟件系統,它也很難從一個可信的鏈路當中獲取一部分的數據,截取出來。這就是可信軟件鏈路的一個要求。 ? 像CP AUTOSAR里面CSM它其實在設計當中也會考慮這樣一個可信鏈路,保障不會從某一個軟件模塊數據被截取了,這就是在設計這些模塊的時候需要考慮的一些原則。 ?
零部件信息安全架構
接下來看一下零部件提的信息安全的一個架構,在中央計算單元模塊里面我們通常會做會引入一些概念,比如說可信執行、運行時環境RTE、安全核、安全啟動等。 ?
? 從總體思路上來講,就是將需要信息安全有關的功能運行在一個可信的環境里面,并且保證它調用這些可信應用的時候,都是一個安全的路徑上面去完成的; ? 另外就是做一個功能的隔離,筆者認為比較重要的一些應用統一放在一個單獨的分區上面。這樣的話跟一些比較容易被受攻擊的一些娛樂功能做一個物理軟件層面的隔離或者是硬件上的隔離。 ? 如果是硬件上隔離,通常效果會更好。軟件上隔離成本會低一點,會降低一定的運行效率,但是從一定程度上也能起到信息安全的一些隔離的作用。對于可信執行謀害,通常會叫TEE的概念,就是可信應用。 ? 可信應用完全是依照信息安全的標準去設計模塊,它的可靠性和魯棒性是非常強的,不會輕易出現一些被攻破的bug什么的。 ? TEE上一般會做一些密鑰的管理去讀取的一些策略,還有一些安全算法,比如說加密算法一般會實現在TEE的核心核上面。 ? 那么,每個域APP怎么去使用一些信息安全呢。比如說密鑰信息它怎么去獲取它,怎么樣去調用一個加密庫?這就需要在每個分區上面有自己的信息安全的一些組件去實現。也可以認為它們是一些類似中間件的東西,它就保證說讓上層更容易的去調用一些TEE上面的一些功能。 ? 像現在AP上面提到的一些跟信息安全有關的組件,類似于IAM還有Crypto,這些都是去提供一些標準的Crypto接口去讓應用或者是一些Functional去調用一些密鑰的信息或者是加密函數。 ? 還有就是操作系統,類似于現在的Linux,除了標準Linux,也有一些衍生出來的是經過信息安全加固的這樣一個Linux操作系統,它為信息安全做了一些特定的機制來保證它的系統從信息安全的角度更加健全,不容易被攻破。 ? 還有類似于IDS的軟件組件去做一些部署,IDS會去做一些數據的收集,這些數據都是跟信息安全有關,因為這些信息就表現出來當前系統運行是不是在合理的情況下; ? 有沒有一些特征是正在被黑客攻擊或者是一些狀況,根據這些狀況再去下發一些保護的策略,如立即制止這種非正常的一些操作,或者說切斷一些入口的通道,來保證你被攻擊的影響減少。 ?
數據傳輸安全
信息安全在筆者看來有一大部分說的是安全通信協議,下圖里面顯示了一些我們通常會用的一些數據傳輸安全的一些機制。 ?
? 從最底下來看,假設我們這個通信是基于以太網的,從最底下的一個MACsec的通信,我們需要有MACsec的一些安全協議。像MAC Security也有相應的標準,比如說IEEE 802.I AE這樣一個協議。 ? 再往上到IP層也有Security的協議,再往上數據鏈路層的安全,以及對于數據報文的一個安全協議SecOC;每一層都有相應的一個安全機制;再往上,應用層之間可以有一些特定的通信機制。如果認為SOME/IP也是偏應用層的一個通信協議,SOME/IP上面也會有相應的Security的一些協議可以去使用。 ? 下面這張圖是從一個縱向的角度去解釋了每個層面數據安全它是位于什么層級?剛才也有簡單的介紹,這邊可以再強調一下。 ?
? 對于防火墻或者是IDPS,它的層級是跨的比較深的。它從VLAN到第一層第二層,再到往上的數據包和應用層包,其實都可以做一些分析。如果要做到第四層以上,我們就認為它是一個深度的包檢測了,可以從協議層和應用層的再去幫你分析這個包是否是合理的?是不是非法的一個數據包? ? 如果要實現這樣的功能,一般都需要比較強的一個CPU去實現了,通常這種比較成熟的防火墻,IDPS在IP領域其實是已經做得很好了。有這樣一個模塊,可以一個專門用來做IDPS防火墻模塊通常有可能要達到幾千幾萬這樣一個模塊都有,它的作用就是幫你一個深度的包的檢測和去判斷一些信息安全的檢測。 ? 在車載領域相對來說這個概念還比較新,畢竟我們車內用到的芯片的算力還是比較受限的,所以一般來講只會在數據鏈路層左右做一個黑白名單或者是IP地址層面的一些過濾與防御。 ?
入侵檢測與防御
IDPS概念是什么? ? 首先我們所有的一些檢測行為都需要有一個數據輸入,所以第一個階段就是數據包嗅探,一般這些數據包都是從操作系統那邊第一手拿到的一個IP的數據包作為一個精準的數據輸入, ?
? 經過解碼以后做一些處理,然后去分析一些協議層面或者數據層面的一些解析,用一些規則來判斷它是否是正常的一個數據庫。 ? 所以這邊與規則匹配,當然一些比較有特點的攻擊或者是那種對于標識不合規的一些,我們可以自動做一個檢測過濾。基于這種規則匹配以后就形成了一個報警和日志,這就是一個IDPS的功能。 ? 這有個P指的是protect,既然已經檢測到這樣攻擊行為以后,我怎么樣去盡量的減少對這個系統產生的影響,立即去更新我本地的一個規則,馬上實施以后,立即直指當前被攻擊的這個源頭,這都是一些手段。 ? 在當前車載中,protect的動作設計,基本上是不太會引入的,因為你平時比較擔心的是立即執行這個保護行為會不會影響車的功能,所以現在大部分做的是IDS。對于規則的更新和發放,實際上是比較謹慎的。 ? 這張圖進一步解釋了對于車載IDPS它是怎樣一個部署的系統?像我們用的PC這種,它就是一個電腦,就是直接一個以太網。就是說你電腦上裝IDS的一個程序就可以做這個系統。 ? 它部署比較容易,在車上去做IDPS的話,它要做很多事情,比如說我讓左邊這張圖,中央網關去要部署這樣一個IDPS主節點做一些本地的一個引擎和規則管理。 ?
? 一些入侵行為需要去收集車上所有ECU的一些報文,無論是CLAN還是以太網,這些都是你去判斷是否有入侵行為的一個數據源頭,所以你要從域控制器上把一些數據包給收集過來上面, ? 但不能把所有包直接全部傳過來,需要有一定規則的,有IDPS的話,有一些slave的謀害會按一定的規則去一些數據的異常行為,然后更新給中央網關,中央網關再去統一去做篩選和規則匹配。 ? 對于試驗報告,一般這個系統部署在云端,它的上面可以算力比較強,它可以去上面運行一些安全機制,策略管理,它可以做很多對于IDPS的一些規則判斷或者是對于整個車輛平臺和車型做一個進步的IDPS的這樣一個規則的升級。 ? 它可以獲得這些漏洞。最新的漏洞和攻擊手段,它都可以在這個系統上去識別,然后再匹配車上反應出來的一些數據,做一個規則匹配。對于車載IDPS,大概就是這樣一個系統設計。 ?
三、AUTOSAR信息安全架構
AUTOSAR提供的安全模塊
今天我們講AUTOSAR里面信息安全架構有哪些?前面也提到了一些概念,就是實際上就是AUTOSAR里面就在使用的。像Crypto Stack提供一些軟件加密和密碼服務,這是一個基本的模塊和CSM 提供可信軟件的模塊鏈路。 ? 還有就是一些通信的安全協議像SecOC 、TLS、IPsec每個層級都有一些安全的協議。還有就是AP里面的IDS專門是用來做一個權限的管理,對于本地的資源做訪問,做統一的安全診斷,安全診斷除了UDS里面的R7服務,現在多了一個R9,專門用來做一些信息安全產品的驗證,對UDS做了一個這方面的擴展。 ? 下圖左邊是AUTOSAR里面跟信息安全有關的一些組件模塊,主要Crypto?Driver、Crypto??Interface以及CSM模塊。 ?
? 右邊是AP下面和信息安全有關的。AP那邊不能直接說這幾個模塊是信息安全有關的,應該說它是哪些模塊信息安全會影響它?它的設計里面體現出來信息安全的一些理念, ? 像剛說到的通信鏈路,主要是Communication Management,在這個層面它有很多信息安全的協議的設計,如 IAM、Crypto Stack都是一些與上層應用和Functional Clusters去使用密鑰和加密程序的一個必要的模塊。 ?
SecOC
下圖是SecOC,它可能已經用在當前的設計里面,所以就不展開了分享IAM這就是一個標準的SecOC的一個架構圖。 ?
Identity?and Access?Management
IAM稍微去理解一下它的過程,首先是應用程序去請求一些動作。它是通過一些中間件Functional Clusters去操作,操作它之前我們去先通過IAM這個模塊去認證它是否是被認證過的一個應用。在IAM返回一個認定結果以后,它才可以真正的使用到一些請求的一些資源,它就是IAM標準的實現的一個過程。 ?
? 下圖細節地描述了怎么做它的一個隔離?首先它應用和下面的一些資源是在沒有IAM做一些Check之前它是隔離的。需要通過一系列的判斷的以后,給出一些認證結果,它才能正常的使用資源。 ?
Secure Communication-Motivation
接下來分享一下AP中的安全通信。主要從以下三個方面考慮: 1. 完整性,安全通信的目的就是要保證數據的完整性。 2. 真實性是不是合法的一個來源。 3. 機密性,在未授權的情況下不能被訪問到。 ?
支持的SOME/IP Binding協議
對于SOME/IP Binding來說,我們 Communication Management可以看到這幾種綁定的協議,SecOC它支持Message Signing、多播、TCP/UDP都支持。 ? TLS層面也有相關的一些綁定的支持,IPsec Security在標準里面都是支持的。 ?
? ?
IPsec-Internet Protocol Security
IPsec Security通常是以軟件的模式體現,首先有一個IKE的模塊是Exchange這樣的模塊,下面IPsec里面有相應的IPsec模塊,還有一些Framework的一些模塊,像這樣一些Database的Security策略也是通過一些配置可以去產生,這是AUTOSAR對于信息安全有一些設計,有它一定的便捷性。 ?
? ?
配置Secure Communication
如果進行配置,我們可以在SWC Port端口上面相應去設計綁定你的安全策略。比如說SOME/IP Binding、secOS/TLS/DTLS,在一個系統級的設計層面都可以去部署這些安全策略。 ?
? ?
Crypto?Stack
Crypto Stack剛才也說了,它主要包含的功能是密鑰管理的一些加密算法執行。一般使用Crypto時,還需要一些Crypto Internet,然后再通過一些返回取得解密以后的一些消息。 ? 下圖的例子就是原始未解密的信息,然后我們去調用Crypto的一些模塊,然后得到一個解密的一些消息的過程。 ?
Use Cases
在Crypto的一個標準文檔里面,它分了幾種類型:Crypto Key管理和鍵值管理這樣幾個接口類型。整個Crypto的設計,實際上還是充分考慮信息安全的一些使用場景對它做了一些加密的分類,最后它可以訪問你硬件上的TEE或者HSM,通信鏈路的都是安全可靠,這是AUTOSAR Crypto的一個設計。 ?
? ?
編輯:黃飛
?
評論
查看更多