一、背景:
在汽車ECU軟件中,如果需要依靠汽車總線(如CAN)刷新CPU里面的程序時(shí),必須要通過安全訪問,從而防止非法刷新操作危及車輛安全(例如,黑客攻擊)。在車聯(lián)網(wǎng)以前,車輛總線是一個(gè)自封閉的網(wǎng)絡(luò),黑客通過遠(yuǎn)程電腦控制汽車在物理上是不可能的,除非親自在汽車?yán)锊僮骰蛘呤紫仍谄嚨腛BD接口上安裝無線設(shè)備再遠(yuǎn)程操控。隨著車聯(lián)網(wǎng)時(shí)代的到來,越來越多的車輛會(huì)選擇遠(yuǎn)程云端刷新程序,實(shí)現(xiàn)快捷修復(fù)程序Bug,但這也為黑客遠(yuǎn)程攻擊車輛程序提供了渠道。
二、ISO4229安全訪問規(guī)范分析:
對(duì)于傳統(tǒng)汽車,雖然黑客遠(yuǎn)程攻擊汽車軟件的可能性很低,但是ISO4229規(guī)范也多少考慮了惡意刷新軟件的可能性。因此在安全訪問方面還是考慮比較多的:
1.算法固化在ECU和上位機(jī)程序里,不通過總線傳輸。
2.每個(gè)Seed只能使用一次,如果Key計(jì)算錯(cuò)誤。重新訪問返回新的Seed,防止黑客對(duì)一個(gè)Seed玻璃破解。
3.連續(xù)2次安全訪問嘗試失敗后啟動(dòng)讀Seed延時(shí)機(jī)制,比正常2ms響應(yīng)一次的時(shí)間被延長(zhǎng)5000倍,大大縮短黑客隨機(jī)碰撞Seed-Key的次數(shù)。
三、ISO4229安全訪問漏洞分析:
1.Seed-Key是可重復(fù)使用的。雖然黑客可能獲取不到Seed-Key的算法,但是可以獲取到有限的Seed-Key的數(shù)對(duì)。這個(gè)在車輛開發(fā)階段,整車廠或供應(yīng)商測(cè)試時(shí),每次刷新時(shí)有效的Seed-Key都在CAN網(wǎng)絡(luò)上保留著。雖然測(cè)試人員也不知道算法,但不能防止有人監(jiān)聽網(wǎng)絡(luò)報(bào)文提取每次安全訪問Seed-Key的樣本,為破解使用。
2. ISO4229只規(guī)定Seed生成方法是偽隨機(jī)的,但是沒有提出測(cè)試標(biāo)準(zhǔn)。有的軟件工程師會(huì)用簡(jiǎn)單的Seed生成算法,如圖示,Seed是Cnt取樣值的函數(shù),Seed=F(Cnt取樣值),最簡(jiǎn)單的函數(shù)就是Seed=Cnt取樣值。
由于取樣時(shí)刻是任意的(實(shí)際是OS中取樣任務(wù)周期的整數(shù)倍+OS調(diào)度波動(dòng)值,例如2ms*N+△T),取樣出的CNT是隨機(jī)的。隨便測(cè)幾下沒問題,但是整體上統(tǒng)計(jì)就顯示出規(guī)律性。如下圖是對(duì)一個(gè)120MHz的16位定時(shí)器在一個(gè)2ms任務(wù)的統(tǒng)計(jì)結(jié)果。顯然,1000ms內(nèi)看起來是隨機(jī)的,但是從2000ms開始就體現(xiàn)出宏觀的規(guī)律性。
有的程序員會(huì)引入非線性計(jì)算(如下圖Seed=Cnt * Cnt+offset,或更復(fù)雜的)讓統(tǒng)計(jì)結(jié)果看起來均勻分布。但是會(huì)使虛假Seed數(shù)量增多(即有的Seed永遠(yuǎn)取不到),減小了Seed的樣本空間,也就減少了黑客隨機(jī)碰撞攻擊的次數(shù)。
3. ISO4229只要求解鎖成功后Seed就變成0但是沒有限制解鎖成功前可以獲取Seed的次數(shù),很多整車廠的Spec也沒有該要求。這意味著ECU上電后只要上位機(jī)不請(qǐng)求解鎖,就可以無限次的獲取Seed。這樣黑客用上位機(jī)以固定周期(如2ms)一直取讀Seed,就可以獲取Seed的統(tǒng)計(jì)特性,從而破解出Seed的生成算法。根據(jù)第1條風(fēng)險(xiǎn),只要知道一個(gè)Seed-Key值,讓ECU在期望的采樣時(shí)刻做風(fēng)險(xiǎn)2的碰撞試驗(yàn)。通過有限次試驗(yàn),就能獲取期望的Seed,安全訪問就被攻破了。
根據(jù)上述分析,傳統(tǒng)安全訪問風(fēng)險(xiǎn)的根源在于Seed可以重復(fù)出現(xiàn)。
四、車聯(lián)網(wǎng)條件下ISO4229安全訪問的基本條件:
1. Seed的產(chǎn)生依然是偽隨機(jī)數(shù),這個(gè)和傳統(tǒng)車一樣不可改變,因?yàn)榻o車上安裝真隨機(jī)數(shù)發(fā)生器成本太大。
2. Seed的產(chǎn)生是不可重復(fù)的。
3.一個(gè)駕駛循環(huán)內(nèi)Seed的產(chǎn)生次數(shù)是有限(如3次)。且ECU上電后10秒內(nèi)不返回Seed,防止黑客連續(xù)獲取Seed做隨機(jī)碰撞攻擊。
五、Seed的生成方案:
根據(jù)第四節(jié)描述,可以參考網(wǎng)上銀行的OTP動(dòng)態(tài)口令,用HMAC算法生成不可重復(fù)的Seed。方案如下:
ECU上電后EEPROM初始化完成,讀出上次Seed計(jì)算的次數(shù)N,然后用公式Seed[i]=HMAC(key,N+i)連續(xù)計(jì)算三個(gè)Seed[0,1,2]存儲(chǔ)在RAM里。
此處key是一個(gè)任意固定值的參數(shù)。
ECU上電超過10S后,上位機(jī)有一次讀Seed請(qǐng)求,就返回一個(gè)Seed[i],同時(shí)立即存儲(chǔ)N=N+1到EEPROM。一個(gè)駕駛循環(huán)上位機(jī)最多只能獲取3個(gè)Seed。
測(cè)試階段限制N的范圍為[0,Nt),量產(chǎn)出廠時(shí)N的初始值寫Nt,保證測(cè)試階段的Seed在量產(chǎn)車?yán)锊粫?huì)出現(xiàn)。
六、綜合Seed-key安全訪問方案
上面方案只保證了Seed的不可重復(fù)。如果只為了滿足這一條,HMAC算法中的參數(shù)key都沒有用,完全可以初始化為0,這顯然浪費(fèi)了這個(gè)算法的價(jià)值。
如果把公式Seed=HMAC(key,N)中的key作為整車安全訪問的秘鑰,只要ECU里的key和上位機(jī)的key’完全一樣,用相同的HMAC算法對(duì)N做數(shù)字簽名就可以獲得一樣的口令,從而安全訪問通過。因?yàn)镠MAC是Hash散列函數(shù),不可能根據(jù)已知口令推算出key。在EEPROM作用下,可以保證N連續(xù)增長(zhǎng)不重復(fù),從而不會(huì)產(chǎn)生重復(fù)的口令。雖然N是可預(yù)測(cè)的,但是黑客在不知道key的情況下,不可能對(duì)N做出正確的簽名。
ECU里的key和HMAC算法完全分離,只有在整車下線時(shí)由工廠在安全的網(wǎng)絡(luò)環(huán)境下寫入,與測(cè)試階段的key完全不一樣。這樣key的保密性和訪問過程的安全性就完全掌握在整車廠手里。
七,小結(jié):
傳統(tǒng)安全訪問策略的缺點(diǎn):
整車廠要自己設(shè)計(jì)算法或委托供應(yīng)商提供算法,且算法都不一樣,使得刷新工具的兼容性差。同時(shí),軟件開發(fā)階段底層軟件工程師要考慮不同客戶項(xiàng)目的差異,這種低效率重復(fù)工作量比較大。
有的整車廠的安全訪問策略都是自己制定的,出于保密又不能公開被認(rèn)證機(jī)構(gòu)檢驗(yàn),其安全性不一定可靠。
有的整車廠的安全訪問策略算法與秘鑰是一體的,算法升級(jí)困難。
一個(gè)廠家的同一車型或很多車型都共用一個(gè)算法,風(fēng)險(xiǎn)的范圍很大。
基于HMAC算法安全訪問策略的優(yōu)點(diǎn):
由于采用OTP技術(shù),Seed永不重復(fù),使針對(duì)一個(gè)Seed的暴力破解也無效。整車廠只要保管好自己的秘鑰就可以保證安全。
由于算法是統(tǒng)一的,避免低效率重復(fù)性開發(fā)及測(cè)試安全訪問算法,軟件成本大大降低。
由于算法是統(tǒng)一的,刷新工具可以兼容所有采樣HMAC算法的車輛。
由于key可以靈活配置,就能實(shí)現(xiàn)一個(gè)秘鑰配一臺(tái)車,大大縮小風(fēng)險(xiǎn)范圍。
如果不是在出廠時(shí)寫入key, 而是在4S店售出時(shí)寫入key,那么掌握軟件刷新的權(quán)限就流車主自己手里,后續(xù)整車廠想升級(jí)程序就要問車主請(qǐng)求key,這種出讓安全訪問權(quán)限的技術(shù)可以成為一個(gè)吸引消費(fèi)者的賣點(diǎn)。
-
定時(shí)器
+關(guān)注
關(guān)注
23文章
3298瀏覽量
118949 -
汽車總線
+關(guān)注
關(guān)注
10文章
51瀏覽量
15576 -
CAN網(wǎng)絡(luò)
+關(guān)注
關(guān)注
1文章
45瀏覽量
17456
原文標(biāo)題:汽車軟件刷新——當(dāng)前安全訪問策略的缺陷及改進(jìn)方案
文章出處:【微信號(hào):QCDZSJ,微信公眾號(hào):汽車電子設(shè)計(jì)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
某安全瀏覽器竟然也被查出高危漏洞?開源安全問題不容忽視
漏洞真實(shí)影響分析,終結(jié)網(wǎng)絡(luò)安全的“狼來了”困境
你的數(shù)據(jù)安全么?Hadoop再曝安全漏洞| 黑客利用Hadoop Yarn資源管理系統(tǒng)未授權(quán)訪問漏洞進(jìn)行攻擊
ISO 26262功能安全標(biāo)準(zhǔn)體系解讀
ACR1256U-R9讀寫器如何實(shí)現(xiàn)密鑰存儲(chǔ)區(qū)安全訪問控制
符合ISO 26262的功能安全平臺(tái)工具
安全風(fēng)險(xiǎn)分析-Arm A配置文件的Arm固件框架
基于屬性的Web服務(wù)安全訪問控制方案
LTC4229 理想二極管和熱插拔控制器

技術(shù)分享 | ISO 26262中的安全分析之FMEA

什么是汽車ISO 26262功能安全標(biāo)準(zhǔn)?

Impero:革新安全遠(yuǎn)程訪問方案

小鵬汽車斬獲兩項(xiàng)國(guó)際頂級(jí)安全認(rèn)證 ISO 26262功能安全流程認(rèn)證和ISO 21448預(yù)期功能安全(SOTIF)流程認(rèn)證

評(píng)論