一. 簡介

安全公司如何研究汽車安全?第一時間想到的,是買一輛車,以攻防測試為核心,積累能力,孵化產品等。想法是很好,但是,如今汽車種類繁多,想研究地通透且廣泛,就需要要將所有種類的汽車買來研究,這是成本不允許的。將汽車拆除后又重裝,這是時間不允許的。如何在安全公司內部建立車聯網的研究環境,是多數安全廠商在研究初期面臨的困境。

為脫離這一困境,進一步思考,我們需要的是汽車本身的電子器件,以及其功能背后的業務環境。所以,如果能買到整套汽車的電子零件,將其組件成一個測試臺,達到“熱插拔”的效果,也是一種解決問題的思路。然而,在4S店購買整車全新的零件,其成本也是非常高昂。好現狀是,當我們在閑魚搜索“全車電器”,我們可以輕易找到多套拆車零件,如圖1所示。

圖1  保時捷全車電器

在閑魚買這些零件,可以降低汽車的研究成本。但是,一個非常巨大的問題是,這么多零件,如何脫離完整的汽車環境來運行呢?這就得梳理清楚“全車電器”都包含哪些?哪些是我們研究最核心的零件?以及如何將利用這些零件上電運行,與測試工具建立理想的測試環境?

為此,撰寫本文以分享建立研究環境的一些經驗。主要內容是闡述清楚我們解決以上三個問題的過程,一些測試工具如CAN分析儀、杜邦線等可以在網絡上買到的設備和其他測試條件,則默認具備。

二. 全車電器包含哪些?

“全車電器”是汽修行業的名詞,我們可以簡單地理解為,凡是需要接電線的零件,都可以稱之為電器,全車所有接車的零件加起來就可以稱為“全車電器”。在某個車型中,全車電器包含供電系統、保險盒、空調控制系統、發動機控制系統、并線輔助系統、多媒體控制系統、門鎖控制系統、天窗控制系統、車身穩定系統、儀表系統、網關系統、線束等26種電器系統。隨著人們對汽車的乘坐體驗要求越來越高,汽車的功能將不斷地迭代升級,對車內電器系統進行分類及組網部署成為了汽車研發過程的重點工作。

大多數汽車根據功能域將車內網劃分為診斷域、動力域、底盤域、車身域和信息域這5大部分,部分混動車型還會有混動域,具備高級輔助駕駛的車型還會有ADAS域。各域總線接入情況基本如下:

  • 車身CAN總線:車身控制器、PEPS、車窗、座椅等ECU;
  • 動力CAN總線:整車控制器、換擋操縱機構、發動機管理等ECU;
  • 底盤CAN總線:電子助力轉向(EPS)、電子穩定控制系統(ESC)等ECU;
  • 信息CAN總線:多媒體系統、T-BOX、抬頭顯示模塊、行車記錄儀等ECU;
  • 診斷CAN總線:外接OBD接口

這么多的電器系統,每一個都是我們安全測試所需要的嗎?顯然不是。所以,需要關注最核心的幾個零件。

三. 核心的零件包含哪些?

車聯網信息安全研究的重點應該放在信息與通信這兩個方面,以涵蓋全車的重要業務數據。在車聯網這一套全車電器中,組裝最少節點,保證不會遺漏車內網絡傳輸信息,作為測試臺來研究是一個不錯的思路。

根據信號的分類,可以篩選出部分核心零件。汽車信號,暫且可以分為兩類,一類是網絡信號,包含4G、藍牙、Wi-Fi、CAN、以太網、LIN、flexray等。另一類是控制與狀態信號,這類信號往往是數字電平信號或者模擬信號,如控制車門、玻璃電機的電平信號等。顯然,前者才是研究的核心。所以,核心零件當中必然包含域控制器和網關。其包含的零部件為車身、底盤、動力、座艙、自動駕駛這5個域控制器以及網關。

根據通信方式,可以篩選出另一部分核心零件。汽車的通信包含了4G、GPS這類遠程通信和Wi-Fi、藍牙、無線鑰匙、UWB等近場通信。所以,核心零部件應需要包含汽車鑰匙、儀表、PEPS控制器(無鑰匙進入和啟動控制器,部分車型會與車身域控制器合二為一)、門把手及控制器、TBOX、胎壓控制器這5個零件。如果研究汽車防盜,且需要響應的話,還需要一鍵啟動按鍵,方向盤、轉向柱、門鎖電機控制器及電機。

為了連接方便,如果能找到對應車型的完整線束,將為零件的供電帶來非常大的便利。因為線束上會有顏色,一般,每個車型的線束顏色及供電相關的信息可以在修車網站上查到,免去了非必要的電路分析的功夫。但是,找到配套的完整線束是比較難的,因為大部分拆車的零件都是出于事故車,拆車師傅在拆車時,會將線束剪掉以方便拆車。

所以,核心的零件,并不是一個固定的列表,一方面,這些零件需要包含汽車的所有通信數據,另一方面,還需要包含我們研究的目標功能,比如研究汽車防盜需要的電機以給定反饋。

將核心零件買回來后,另外一個問題是:如何讓這些零部件工作起來。

四. 如何給這些零部件供電并啟動?

車主打開車門,坐在座椅上,踩下剎車,按一鍵啟動按鈕,發動機成功打火。這是汽車啟動的流程。如果只是構建研究環境,可以直接為相應的零件供電。但是,問題在于,汽車零件并不像電腦主機一樣,將供電線插好就可以工作,因為他們有獨特的接口形狀以及定義,在網上一定可以買到插頭,但不一定可以買到線束。

如BCM(車身控制器),其外形如圖 2所示。車身控制器是一個以單片機為控制核心的零部件,其特點是引出了多達上百的輸入輸出口[1],以滿足眾多車身電器的連接。這些輸入輸出的接口,接收或者輸出的是傳感器、電機等ECU的原始控制信號,比如控制電機用的PWM或者電平信號,比如控制開鎖關鎖的電平信號等。沒有線束,沒有插頭,如何為其供電呢?

圖 2 車身控制器接口圖

找到正確的接口定義及其電路圖,連接電源后觸發其啟動條件,一定可以其上電并運轉起來。如何找到其接口定義呢?答案是利用維修手冊。汽車維修手冊中含有電路圖,在電路圖的識別過程中,手冊中會寫清楚如何將所有的零件建立正確的電氣連接。如圖 3所示的維修網站提供[2]的電路圖資料中,包含了每個電器系統的接插件外形及其引腳定義。如下圖所示,圖中標記了BCM J2接口的名稱、序號和定義。

圖 3 車身控制器部分接口定義

電路圖中,常電電源(12V直流電源)給到了J2接口序號為1、2、3、14、16、19、31、32的8個接口。這8個接口都接入的是常電電源,但是,在主板上,他們并非默認短路連接,而是通過8路電源獨立連接。只接通一路是無法啟動BCM的。可見,如果僅僅通過電路分析,得到這個正確的結論,可能需要相當長時間的研究才行。

將這8路電源分別接入12V電壓,電路板的鋪地面接入GND,啟動電源,即可為BCM供電。由于接入的電源接口較多,先使用面包板將所有電源短路后,在接入電源(紅色夾子為12V,黑色夾子為GND)。具體如圖4所示。

圖4 車身控制器電源接線

將電源的開關打開,可以看到板子已經開始運行,且電流在0.9A左右跳動,說明內部功能正在運行,影響了PCB板的功耗。具體如圖5所示。

圖5 車身控制器通電后的電流顯示

BCM通過CAN總線接收消息來完成其他ECU(如座艙域控制器、TBOX等)對燈、門等汽車結構的控制。同樣,通過查看電路圖,可以找到CAN通信的接口在J7的14和39號針腳,如圖6所示。

圖6 車身控制器的CAN接口定義

將其和CAN總線分析儀建立連接后,啟動BCM電源,即可查看BCM發出的CAN報文,如圖7所示。

圖7 通電后收到的響應報文

在測試的過程中,我們設定發送的測試報文ID從0遞增,每次發送遞增1,發送2048個payload全部為0x55和0xAA的CAN消息,即可遍歷幀ID為0x000-0x7FF的所有消息了。我們聽到PCB主板上繼電器跳動的聲音,說明CAN信號中包含大燈、門鎖等控制信號,因為這些大電流設備需要繼電器作為BCM的開關進行控制。通過二分法,我們定位到幀ID為0x550的第一個字節的第2、3位(從0開始,由低位向高位計算)為控制其兩個繼電器的數據位。具體數據格式如圖8所示。

圖8 控制車身控制器的繼電器的數據格式

車機、TBOX、網關等其他零件的供電和測試與此類似,且都不如BCM復雜,這里不再贅述。將車機、TBOX、網關、BCM供電并完成CAN總線的連接后,一個小型的帶有車身控制和座艙娛樂功能的小型汽車網絡就搭建完成了。

五. 總結與展望

本文介紹了建立汽車安全研究環境的過程,并以供電、控制、通信最為復雜的BCM為例,闡述了如何解決BCM供電和通信問題的。

在安全廠商做汽車安全,最為困難的,無疑是沒有汽車,沒有汽車意味著沒有最基礎的業務環境,不了解業務的乙方,也就沒有專家。利用二手市場,購買全車電器并建立原車的電氣連接,將大大降低我們的研究成本。同時,也能夠將汽車的電子電氣結構分析通透,盡可能多地暴露整車的業務,幫助我們與更了解業務的甲方客戶達成部分共識。安全廠商不了解汽車業務的難題,也算是解決了。

這種方式建立的環境也存在一些缺陷。比如,由于沒有車主的權限,APP的遠程控制功能是不可用的,除非我們成為這輛車的車主,買一輛二手車,經過戶后,可以請4S店幫忙認證。再比如,舍棄部分電器,帶來的儀表盤上的各類告警信息比較多,所以,在節約成本的同時,還應該盡可能多地接入電器,以保證汽車的業務功能足夠完善。

維修資料的有償共享已成為汽修行業的常態,這將有助于汽修行業的發展,也將幫助更多的人了解汽車。維修材料給到的只是設備參數以及接口定義,并不是信息泄露。甲方應將更多精力放在對自身產品的加固方面,自身產品足夠強,接口定義也并不會給黑客帶來信息或者價值。

同時,我們也不建議工程師為了一個賬戶,去攻擊汽車的云端資產,這將為公司和個人帶來不必要的損失。撰寫以上內容,希望對讀者能有些幫助。有問題或者想交流,歡迎聯系我們。