陸超
(上汽大眾汽車有限公司,上海201805)
智能網(wǎng)聯(lián)化是目前汽車開發(fā)一個亮點,需要在控制整車成本同時,提供用戶豐富生態(tài)服務(wù)?;诘统杀臼辗艡C平臺,采用手機車機互聯(lián)技術(shù)方案,同時支持有線及無線連接方式,手機端傳輸移動在線服務(wù)數(shù)據(jù),車機進行投屏,支持智能語音識別、多輪對話、微信語音聊天,通過微信群進行群組導(dǎo)航等功能是一個可行的解決辦法,APP 可快速響應(yīng)新功能需求進行更新。本文提出相關(guān)應(yīng)用場景下的車機、手機APP、后臺服務(wù)器三者間通信及數(shù)據(jù)存儲的一種安全機制方案及應(yīng)用說明。
整個網(wǎng)絡(luò)中的參與節(jié)點包括車機端、云端和移動端,三者在系統(tǒng)中是獨立的個體,進行數(shù)據(jù)鏈接之前的雙方要建立可靠、安全的信任關(guān)系認(rèn)證?;跀?shù)字證書的認(rèn)證是目前公認(rèn)的認(rèn)證方式最佳實踐,該認(rèn)證方式既能識別個體身份,也能靈活控制使用范圍和使用期限,并且基于數(shù)字證書也是目前最為成熟的[1],所以本方案中會為車端、移動端和云端的設(shè)備及個人簽發(fā)相應(yīng)的數(shù)字證書,以此作為身份認(rèn)證的憑據(jù),用以驗證對方的數(shù)字簽名。
網(wǎng)絡(luò)通信屬于基礎(chǔ)設(shè)施范疇,是一切服務(wù)的基礎(chǔ)條件,必須保證其高可靠性、高可用性、高保密性。需要著重防范以下風(fēng)險:a. 數(shù)據(jù)泄露,采用明文發(fā)送數(shù)據(jù)的HTTP 業(yè)務(wù)造成數(shù)據(jù)篡改、泄露、流量劫持等安全問題。通過網(wǎng)絡(luò)嗅探設(shè)備等技術(shù)手段能還原HTTP 報文內(nèi)容。b.弱算法和協(xié)議,隨著時間的推移,過時的加密算法和存在安全漏洞的加密協(xié)議均可導(dǎo)致用戶敏感信息泄露。眾所周知,截至目前,DES 對稱算法已經(jīng)不安全,MD5摘要算法可被碰撞,密鑰長度在1024 位以下的RSA 非對稱算法已不安全,SSL 2.0 協(xié)議也已不安全[2]。國家密碼管理局要求金融機構(gòu)、黨政機關(guān)、重點企業(yè),必須使用國密算法和國密協(xié)議。c.DNS 劫持,也稱為釣魚攻擊,以危害巨大且不容易被用戶感知著稱。用戶只要接入黑客掌握的公共WiFi,或者瀏覽一下黑客所掌控的特殊構(gòu)建的WEB 頁面,DNS 就會被黑客篡改,并可以成功躲過常規(guī)安全軟件檢測。可導(dǎo)致用戶遭受DNS 詐騙或者敏感數(shù)據(jù)被竊取和篡改。d.通信過程未/弱加密,存在被破解風(fēng)險。
主要包括服務(wù)器大數(shù)據(jù)存儲,業(yè)務(wù)信息存儲;手機端用戶數(shù)據(jù)臨時緩存;車機端車輛數(shù)據(jù)、用戶信息存儲;明文保存敏感信息數(shù)據(jù)在本地,存在被竊取風(fēng)險。
智能手機作為當(dāng)今人手必備的隨身設(shè)備,安裝有各種應(yīng)用,而且屬于開放網(wǎng)絡(luò)。
手機APP 可以通過USB 和Wifi 和車機進行連接,同時需要和云端連接獲取相應(yīng)數(shù)據(jù)。在手機端會保存相應(yīng)的用戶信息、鑒權(quán)信息等,需要進行加密保護。
低成本收放機開發(fā)定義可以連接WiFi 熱點,但是車機本身無法上網(wǎng),收放機通過車身CAN 總線,獲取車輛數(shù)據(jù)、車況數(shù)據(jù)等,同時通過車機終端可以進行車輛的設(shè)置,是車輛智能化控制不可或缺的核心部分。所以對車機終端安全防護是整車安全以及車聯(lián)網(wǎng)安全核心。
在本項目中車機與手機連接,手機只是車機CAN 總線數(shù)據(jù)的接收端,因此由車機對需要傳遞給手機的數(shù)據(jù)進行加密保護,車機端CAN 總線數(shù)據(jù)的安全性由車機端的安全機制來確保。
手機端和車機端采用TCP 的通訊鏈路,基于TLS1.2 協(xié)議,證書采用自簽名方式實現(xiàn)。手機端與后臺采集HTTPS 的通訊鏈路,基于TLS1.2 的協(xié)議,證書購買CA 數(shù)據(jù)簽名機構(gòu)Wosign 的簽名的證書。車機端的安全隔離與權(quán)限控制由車機端系統(tǒng)進行控制及授權(quán)[3]。手機端既需要和車機端通訊,同時也需要與后臺通訊,手機端Link APP 的內(nèi)部數(shù)據(jù)存儲為加密存儲。整體架構(gòu)圖如下:
圖1 整體架構(gòu)圖
Link 手機APP 和WeCloud 云端通過HTTPS 進行請求,HTTPS 請求是目前互聯(lián)網(wǎng)公認(rèn)的加密傳輸協(xié)議,基于TLS 協(xié)議之上的應(yīng)用層協(xié)議,采用專業(yè)的CA 機構(gòu)- 沃通Wosign 的證書。一般需要加密傳輸?shù)闹饕怯脩粜畔ⅰ㈣b權(quán)信息、涉及車輛相關(guān)的信息,以上這些訪問均采集HTTPS 加密傳輸?shù)姆绞健?/p>
手機終端Link APP 在整體架構(gòu)中,既需要跟TSP 服務(wù)進行交互,也跟車機終端通過USB 或者Wifi 進行數(shù)據(jù)交互。手機App 和WeCloud 云端通過HTTPS 進行請求,這些請求均采用HTTPS 加密傳輸?shù)姆绞絹泶_保數(shù)據(jù)安全。手機App 和車機終端之間通過USB 或者WIFI 構(gòu)建數(shù)據(jù)傳輸局域網(wǎng)通道。
手機端主要存貯兩個文件:“私鑰,和加密簽名證書”,目前的手機系統(tǒng)都會分配App 目錄以供存貯相應(yīng)的文件,安全性由系統(tǒng)來負(fù)責(zé)。但考慮到這種機制容易被人破解,因此將這些文件以動態(tài)申請目錄的方法,存貯在其它系統(tǒng)級目錄,從命名上無法猜測到是證書和私鑰文件,增加破解的難度。
由于操作系統(tǒng)都是可以Root 的,所以不存在絕對的安全,但是對于Link 這樣的一款產(chǎn)品來說,主要功能都存在于手機端,并沒有可以操控車機的功能接口,統(tǒng)計數(shù)據(jù)也是以加密SDK 的方式直接提交后臺,并沒有特別需要提升安全等級的敏感數(shù)據(jù)和內(nèi)容[4]。
3.3.1 方案一
AES 對稱密碼在出車機出廠時預(yù)置到車機里,每個項目生成一個。由車機端產(chǎn)生私鑰,并進行公鑰證書生成。首次連接時,通過AES 加密方式傳遞相應(yīng)的公鑰證書(自簽)及數(shù)字簽名(自簽)信息。手機端做為TLS 客戶端,車機端做為TLS 服務(wù)端,建立TLS 加密傳輸通道。TLS 使用1.2 版本,加密套件:TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
優(yōu)點:a.車機端生成私鑰及證書,私鑰由車機保存,由于車機不能聯(lián)網(wǎng),定制系統(tǒng)相對安全。b.首次獲取證書使用對稱密鑰,相對安全。
缺點:a.手機存儲的對稱密碼、證書存在被破譯風(fēng)險。b.車機存儲證書,存在更新問題。
3.3.2 方案二
車機端與手機端建立TLS 單向認(rèn)證安全鏈接。WeCloud 作為自簽名CA,手機端作為TLS 服務(wù)端,車機端作為TLS 客戶端 。 TLS 使 用 1.2 版 本 , 加 密 套 件 :TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
優(yōu)點:a.整個鏈路相對安全。b.手機APP 非唯一私鑰,確保ID 不同。c.簽名證書由云端生成。
缺點:a.手機不聯(lián)網(wǎng),無法獲取簽名證書,車機與手機無法互聯(lián)。b.網(wǎng)絡(luò)波動影響連接成功率。c.車機存儲證書,存在更新問題。d.私鑰存儲安全存在風(fēng)險。e.使用TLS 建立的連接,發(fā)現(xiàn)WIFI 方案下,已知三星部分手機,華為部分手機存在TLS 握手時間過長,大概20~40S,導(dǎo)致連接超時,存在適配性問題。f.使用手機驗證碼作為連接前提,增加了用戶使用的復(fù)雜度,降低了用戶使用產(chǎn)品的意愿。
車機端防護主要體現(xiàn)在兩個方面:a. 對CA 證書的安全存儲,以防止被人為篡改并連接偽造的惡意手機APP。b.對進程的權(quán)限控制,以防止進程與手機APP 的通信已經(jīng)被劫持的情況下,也只能訪問有限的系統(tǒng)資源。
提前釋放CA 證書存儲到車機,證書通過混淆算法處理成加密字符串的形式。將該證書做進只讀文件系統(tǒng)(rootfs),由于文件系統(tǒng)是只讀的,所以該證書不會被人為篡改。該證書將只屬于相關(guān)進程的用戶組,其他進程無法訪問它,這樣就保證了機密性。
圖2 認(rèn)證流程
采取權(quán)限管理機制,對各個應(yīng)用進程制定DAC 規(guī)則并限制其能力。各個應(yīng)用進程都只屬于各自的用戶,這樣相關(guān)進程就只能訪問自己必須訪問的資源,而不能訪問屬于其他進程的資源。相關(guān)進程如必須訪問某些系統(tǒng)級資源,則給它賦予特定的能力,這樣它就可以像root 用戶那樣訪問那些必須的系統(tǒng)資源,但它依然不能訪問超出該能力之外的資源。車機各個進程之間的通信,會基于已有的事件ID,超出定義范圍外的事件ID 會被對方拒絕;這樣相關(guān)進程將無法獲取未定義的車身數(shù)據(jù)。