車聯網的時代,你的汽車是怎樣被入侵的?
(請允許我在標題處放一張與本文無關的圖)嘿嘿,寫在開頭:本來這篇文章是寫來參加比賽的,但是由於一些原因沒及時將最新的成果交上去,落選了T_T淡淡的sad 。本文是在學校王yf老師的指導下寫出來的,在此表示萬分的感謝,謝謝您^_^
文章是筆者看了許多外文資料後寫的,多少會有差漏;最後,本文是一篇科普文~涉及的知識比較淺~ 歡迎大家指教 ~ 謝謝
======================================================================
如果說,黑客盜刷了你的銀行卡僅僅是讓你損失了部分財產,那麼試想一下有一天他們入侵併控制了你的汽車,使得車上的剎車失效了,那會如何?
隨著科技的發展,汽車正從一個單一而複雜的機械結構向一個機械與電控結合的統一體發展著。汽車上越來越多的部件、模塊脫離了傳統的機械控制而投向了電控單元(ECUs, Electronic Control Units)的懷抱,諸如剎車閥,節氣門,車門鎖,雨刮器等都由ECUs精準調控。然而,電控單元在使我們擁有了更加精準的控制的同時,卻帶來了一系列的安全問題。
一. 簡介
人與人的配合需要交流,汽車內部各電控單元的相互配合,則需要一個共享的內部通信網路,例如:CAN(Controller Area Network), LIN(LocalInterconnect Network);對於外部通信,我們建立了遠程信息處理系統(Telematics systems),如通用公司的OnStar,福特的Sync,寶馬的Connected Drive,雷克薩斯的Enform等,它們能為車主提供一些列的遠程協助諸如發生碰撞後自動報警、遠程診斷汽車故障、找回丟失車輛等。總而言之,汽車內部各模塊間、汽車與汽車間、汽車與外部通信設備間的通信變得越來越高速快捷、越來越智能化和信息化,如圖1.1所示,這是一個車聯網的時代。然而,正如計算機信息化發展一樣,汽車電子或者更具體地說是汽車CAN匯流排的安全問題隨之而來。
圖1.1 車聯網示意圖二. 關於CAN你需要知道的東西
1. 什麼是CAN(ControllerArea Network)?
CAN是一種用於解決微控制器與設備交互問題而開發的一種串列通信協議,廣泛應用於汽車、工業、機器人等行業。在2008年,美國官方強制要求在本土銷售的汽車都必須運用CAN協議。與龐大的萬維網相比,CAN顯得更加的簡單和低級。
2.CAN的分類
在硬體層面上,CAN可分為兩種類型:差分匯流排以及單匯流排。差分匯流排往往應用於較重要的、優先順序搞的、需要高速通信的模塊間的通宵,如引擎控制模塊(ECM)與車身控制模塊(BCM);而單匯流排則因其傳輸速度相對較低而應用於普通模塊間的通信,諸如左門鎖模塊與右門鎖模塊,其優點是價格相對較低,如圖2.2。
圖2.2 CAN匯流排類型及其應用3.CAN數據包結構
接著讓我看看CAN數據包的結構如圖2.1.2,可以很容易的發現一個問題——數據包缺少地址位。在這樣一種情況下,數據包會面向匯流排內的所有節點發布,也就是說每個節點都可以收到相同的數據包,而至於是否執行則通過檢測數據包頭部所標識的類型來決定。
圖2.3 CAN數據包拓展結構
4.CAN面臨的安全問題
A. 數據包發布指向問題。由於CAN數據包是向匯流排上的所有節點發布的,所以當一個惡意的設備成功接入匯流排時,可以順利的嗅探匯流排內流通的數據包,獲取相關的信息;而更令人擔憂的是惡意設備可以通過向所有節點發布具有非法指令的數據包來控制各個關鍵模塊,不妨試想一下當你面臨危險需要剎車的時候,剎車模塊電控單元忽然接收到一個「關閉剎車模塊」並無視駕駛員機械操控的指令會發生什麼。
B. 數據包內缺少身份認證域。缺少身份認證域,各節點在接收到數據包後,無法確認數據包來源是否正確,即意味著只要數據包符合預設的數據類型,設備便可執行數據包內的代碼。
C. 易受拒絕服務式(DoS, Denial of Service)攻擊。CAN採用基於優先順序的仲裁方案,它允許一個節點長時間聲明處於「佔用」狀態,此時其他節點退出匯流排。儘管大多數的控制器已經從邏輯上避免了長時間聲明「佔用」狀態的情況,但黑客可不會遵守這一要求,他們可以通過讓發送數據包使已經受控的節點長時間「被佔用」,以致其他節點由於匯流排被佔用而無法正常工作。
三. 認識和防範汽車入侵
現代汽車集成豐富的輸入/輸出模塊,各模塊都共同連接在汽車內部網路上,進行汽車內部信息的交互;同時,汽車間也可通過外部網路進行通信,如圖2.2.0所示。若想成功入侵、控制一輛汽車,則需要進入其內部網路,方法有兩種:直接的物理接觸和間接通過無線設備接入。
圖2.2.0 汽車集成的各類模塊單元
(1) 防範通過直接物理接觸的入侵
直接的物理是建立在入侵者能與汽車「親密接觸」的條件下,通過車上的物理介面接入汽車的內部網路,如:OBD-II介面,自動門鎖介面,多媒體介面。OBD-II介面往往位於方向盤下端的內飾板中,靠近駕駛員膝蓋的位置如圖2.2.1,不同的車型位置稍有變化。之後,入侵者便可在匯流排的節點上植入惡意代碼、偽造數據包,進而入侵整個匯流排。但是,這一入侵方式有個極其重大的缺點便是它要求入侵者必須與被入侵的汽車有物理上的直接而長時間的接觸,因此它並不為大多數技術人員所接受。
圖2.2.1.1 OBD-II介面
OBD-II介面是汽車上最重要的介面之一,通過它我們能順利接入CAN匯流排並對匯流排上的各個節點進行調控檢測或者將代碼寫燒入各節點中,是汽車檢測員手中重要的工具之一,同時它更加為黑客接入汽車內部網路提供了極大的便利。標準的16口OBD-II介面示意圖如2.2.3,其中9個口的功能是自定義的。
圖2.2.1.2 OBD-II介面示意圖
為了讓計算機能與OBD介面成功通信,我們需要用到一個基於Windows平台的「PassThru」標準,它為我們提供許多有用的通信介面。一旦成功連接上OBD-II介面,通過這些介面,我們可以實現基本的診斷以及重寫代碼的功能。基本的思路入下圖2.2.1.2所示:
圖2.2.1.2 基於OBD-II介面的入侵流程圖
入侵基本流程如下:
1) 確認汽車服務站網路地址
2) 入侵併控制服務站內已經安裝「PassThru」標準的主機,當目標主機被激活(檢測到與被維修汽車內部網路連接時)
3) 黑客已目標主機為跳板,接入被檢修的汽車的CAN匯流排,監聽、修改匯流排上的數據包或向各個發布惡意代碼,進一步達到控制汽車儀錶盤、剎車閥等的目的。
對於這一入侵方式的防範無疑是簡單的:一般情況下,由於較少的顧客會用上OBD-II介面,廠商在汽車生產時可為其加上物理鎖或電子鎖,只有通過正確的鑰匙或者口令才能正常使用OBD-II介面,而這一鑰匙或口令由顧客私人保管;同時,廠商可在說明書上略微普及汽車電子的安全知識,提高用戶的防範意識;而用戶在平時用車時需注意對汽車的保護,不讓陌生人與汽車有較長時間的接觸,不隨意將車鑰匙交與他人。
(2) 防範間接通過無線設備的非法接入
在一輛汽車內往往配有多種具備無線通信能力的設備,它們有的支持短距離無線通信,有的支持長距離無線通信,如收音機、藍牙、電話交換網路等等。由於直接物理接觸所的局限性較大,入侵者想出了另一種更具可行性和隱蔽性的無線入侵方式。首先,入侵者利用某一設備或協議的漏洞成功入侵控制車載無線設備,而無線設備往往與其他控制模塊一樣掛載於汽車的內部CAN匯流排上,接著便通過這一節點成功進入汽車內部網路並進而達到控制整個汽車網路的目的,原理如圖2.2.2。
圖2.2.2 無線入侵原理圖
四. 關於未來
確實,儘管越來越多的汽車模塊將會集成於內部網路並受ECUs控制,變得越來越智能化和自動化,但是與飽受安全威脅的手機、計算機系統相比,它們的執行能力卻又顯得相對的局限,因為汽車的內部網路的設計宗旨只是讓汽車更安全、更環保、更高性能、更易用,而非讓汽車擁有更好的娛樂性,如此不妨設想一下駕駛員一邊開車一邊玩遊戲會發生什麼。同時,汽車廠商對車載系統app的嚴格審核進一步提高了系統的安全指數。相信在廠商以及相關技術人員的共同努力下,我們將會擁有更加安全、高效、高性能的汽車。
推薦閱讀:
※愛車爸爸是什麼?愛車爸爸好用嗎?
※車輛隊列模型3
※愛車爸爸來告訴你營銷的四大策略!
※斑馬網路前CEO施雪松回應卸任:需要更多年輕人!