一、背景:
在汽車ECU軟件中,如果需要依靠汽車總線(如CAN)刷新CPU里面的程序時,必須要通過安全訪問,從而防止非法刷新操作危及車輛安全(例如,黑客攻擊)。在車聯網以前,車輛總線是一個自封閉的網絡,黑客通過遠程電腦控制汽車在物理上是不可能的,除非親自在汽車里操作或者首先在汽車的OBD接口上安裝無線設備再遠程操控。隨著車聯網時代的到來,越來越多的車輛會選擇遠程云端刷新程序,實現快捷修復程序Bug,但這也為黑客遠程攻擊車輛程序提供了渠道。
二、ISO4229安全訪問規范分析:
對于傳統汽車,雖然黑客遠程攻擊汽車軟件的可能性很低,但是ISO4229規范也多少考慮了惡意刷新軟件的可能性。因此在安全訪問方面還是考慮比較多的:
2.每個Seed只能使用一次,如果Key計算錯誤。重新訪問返回新的Seed,防止黑客對一個Seed玻璃破解。
3.連續2次安全訪問嘗試失敗后啟動讀Seed延時機制,比正常2ms響應一次的時間被延長5000倍,大大縮短黑客隨機碰撞Seed-Key的次數。
三、ISO4229安全訪問漏洞分析:
1.Seed-Key是可重復使用的。雖然黑客可能獲取不到Seed-Key的算法,但是可以獲取到有限的Seed-Key的數對。這個在車輛開發階段,整車廠或供應商測試時,每次刷新時有效的Seed-Key都在CAN網絡上保留著。雖然測試人員也不知道算法,但不能防止有人監聽網絡報文提取每次安全訪問Seed-Key的樣本,為破解使用。
2. ISO4229只規定Seed生成方法是偽隨機的,但是沒有提出測試標準。有的軟件工程師會用簡單的Seed生成算法,如圖示,Seed是Cnt取樣值的函數,Seed=F(Cnt取樣值),最簡單的函數就是Seed=Cnt取樣值。
由于取樣時刻是任意的(實際是OS中取樣任務周期的整數倍+OS調度波動值,例如2ms*N+△T),取樣出的CNT是隨機的。隨便測幾下沒問題,但是整體上統計就顯示出規律性。如下圖是對一個120MHz的16位定時器在一個2ms任務的統計結果。顯然,1000ms內看起來是隨機的,但是從2000ms開始就體現出宏觀的規律性。
有的程序員會引入非線性計算(如下圖Seed=Cnt * Cnt+offset,或更復雜的)讓統計結果看起來均勻分布。但是會使虛假Seed數量增多(即有的Seed永遠取不到),減小了Seed的樣本空間,也就減少了黑客隨機碰撞攻擊的次數。
3. ISO4229只要求解鎖成功后Seed就變成0但是沒有限制解鎖成功前可以獲取Seed的次數,很多整車廠的Spec也沒有該要求。這意味著ECU上電后只要上位機不請求解鎖,就可以無限次的獲取Seed。這樣黑客用上位機以固定周期(如2ms)一直取讀Seed,就可以獲取Seed的統計特性,從而破解出Seed的生成算法。根據第1條風險,只要知道一個Seed-Key值,讓ECU在期望的采樣時刻做風險2的碰撞試驗。通過有限次試驗,就能獲取期望的Seed,安全訪問就被攻破了。
根據上述分析,傳統安全訪問風險的根源在于Seed可以重復出現。
四、車聯網條件下ISO4229安全訪問的基本條件:
1. Seed的產生依然是偽隨機數,這個和傳統車一樣不可改變,因為給車上安裝真隨機數發生器成本太大。
2. Seed的產生是不可重復的。
3.一個駕駛循環內Seed的產生次數是有限(如3次)。且ECU上電后10秒內不返回Seed,防止黑客連續獲取Seed做隨機碰撞攻擊。
五、Seed的生成方案:
根據第四節描述,可以參考網上銀行的OTP動態口令,用HMAC算法生成不可重復的Seed。方案如下:
ECU上電后EEPROM初始化完成,讀出上次Seed計算的次數N,然后用公式Seed[i]=HMAC(key,N+i)連續計算三個Seed[0,1,2]存儲在RAM里。
此處key是一個任意固定值的參數。
ECU上電超過10S后,上位機有一次讀Seed請求,就返回一個Seed[i],同時立即存儲N=N+1到EEPROM。一個駕駛循環上位機最多只能獲取3個Seed。
測試階段限制N的范圍為[0,Nt),量產出廠時N的初始值寫Nt,保證測試階段的Seed在量產車里不會出現。
六、綜合Seed-key安全訪問方案
上面方案只保證了Seed的不可重復。如果只為了滿足這一條,HMAC算法中的參數key都沒有用,完全可以初始化為0,這顯然浪費了這個算法的價值。
如果把公式Seed=HMAC(key,N)中的key作為整車安全訪問的秘鑰,只要ECU里的key和上位機的key’完全一樣,用相同的HMAC算法對N做數字簽名就可以獲得一樣的口令,從而安全訪問通過。因為HMAC是Hash散列函數,不可能根據已知口令推算出key。在EEPROM作用下,可以保證N連續增長不重復,從而不會產生重復的口令。雖然N是可預測的,但是黑客在不知道key的情況下,不可能對N做出正確的簽名。
ECU里的key和HMAC算法完全分離,只有在整車下線時由工廠在安全的網絡環境下寫入,與測試階段的key完全不一樣。這樣key的保密性和訪問過程的安全性就完全掌握在整車廠手里。
七,小結:
傳統安全訪問策略的缺點:
整車廠要自己設計算法或委托供應商提供算法,且算法都不一樣,使得刷新工具的兼容性差。同時,軟件開發階段底層軟件工程師要考慮不同客戶項目的差異,這種低效率重復工作量比較大。
有的整車廠的安全訪問策略都是自己制定的,出于保密又不能公開被認證機構檢驗,其安全性不一定可靠。
有的整車廠的安全訪問策略算法與秘鑰是一體的,算法升級困難。
一個廠家的同一車型或很多車型都共用一個算法,風險的范圍很大。
基于HMAC算法安全訪問策略的優點:
由于采用OTP技術,Seed永不重復,使針對一個Seed的暴力破解也無效。整車廠只要保管好自己的秘鑰就可以保證安全。
由于算法是統一的,避免低效率重復性開發及測試安全訪問算法,軟件成本大大降低。
由于算法是統一的,刷新工具可以兼容所有采樣HMAC算法的車輛。
由于key可以靈活配置,就能實現一個秘鑰配一臺車,大大縮小風險范圍。
如果不是在出廠時寫入key, 而是在4S店售出時寫入key,那么掌握軟件刷新的權限就流車主自己手里,后續整車廠想升級程序就要問車主請求key,這種出讓安全訪問權限的技術可以成為一個吸引消費者的賣點。
-
定時器
+關注
關注
23文章
3241瀏覽量
114516 -
汽車總線
+關注
關注
10文章
47瀏覽量
15379 -
CAN網絡
+關注
關注
1文章
44瀏覽量
16907
原文標題:汽車軟件刷新——當前安全訪問策略的缺陷及改進方案
文章出處:【微信號:QCDZSJ,微信公眾號:汽車電子設計】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論