高端汽車一般都裝備了Passive Keyless Entry and Start (PKES,汽車無鑰匙進入與啟動)系統,PKES系統允許在無用戶交互的情況下基于遙控鑰匙(key fob)的物理接近度來解鎖和啟動汽車。
之前就有研究人員分析發現PKES系統易受中繼攻擊(relay attacks)的影響。在中繼攻擊中,兩個惡意攻擊者通過長距離通信信道中繼近距離通信。近期有新聞報導稱中繼攻擊常被用于竊取豪華轎車。距離約束(Distance bounding)機制逐漸被用于預防中繼攻擊。
本研究的目的是評估目前PKES系統對除中繼攻擊外的其他攻擊的抵抗性。研究人員完全逆向了Tesla Model S中使用的PKES系統,研究發現該系統使用的是過時的DST40專用加密算法。
PKES工作原理
研究人員分析的PKES系統使用的是簡單的詢問/應答(Challenge/Response)協議,如下圖所示。
汽車使用的傳輸信道是134.2KHZ的低頻(LF)波段。Key fob在歐洲的傳輸頻段是433.92 MHz的特高頻 UHF (Ultra High Frequency)。
正常情況下,汽車會周期性地通告其id(identifier,圖中的wake)。然后key會接收到汽車的id,如果是期望的car id,key fob就會回復,表示準備接收詢問(challenge)。
然后,汽車會傳輸一個隨機的challenge給key fob。Key fob會計算出一個response并傳遞。汽車在接收到key fob的response后,首先會進行確認然后解鎖車門。汽車啟動時,會重復進行相同的challenge/response協議。
安全脆弱性
前面提到的簡單challenge-response協議會有一些安全問題。比如,缺乏多重認證,這樣任何接收到汽車id的人都可以從key fob來獲得response。因為汽車的id是以wake消息的形式廣播的,所以任何人都可以記錄。
計算response時的加密原語(primitive)也存在安全問題。研究人員分析發現該系統使用的是過時的專用DST40。早在2005年,Bono等人就用黑盒方法逆向了密碼,并用FPGA cluster搜索了40位的密鑰。
DST40的內部原理超出了本文的講解范圍,但理解DST40將40位challenge抓便為24位response的過程很重要,這一轉變依賴的是40位的加密密鑰。因為response是24位置,少于challenge的40位,所以對給定的challenge,多個加密密鑰會生成相同的響應。因此,攻擊者恢復加密密鑰至少需要兩個challenge-response對。
因為汽車的id是公開的,所以可以傳輸選擇的任意challenge到key fob并查看response。這樣就可以傳輸相同的challenge到每個key fob來進行攻擊。因為key-space很小而且沒有多重認證,因為可以執行時空折中攻擊(Time-Memory Trade-Off, TMTO attack)。但是需要提前計算response并保存結果。保存的結果可以減少執行隨后的key復原所需要的計算次數。
研究任意挑選了一個challenge(0x636f736963),并計算了針對每個key可能產生的response。之后,所有產生相同response的key都保存到同一文件中。下圖是5.4TB數據結構的可視化表示。
為了恢復特定key fob使用的key:
為了證明攻擊的可行性,研究人員進行了PoC攻擊,可以在幾秒鐘克隆一個key fob。攻擊者的設備包括Raspberry Pi 3 Model B+、Proxmark3、Yard Stick One和一個USB電池板。Raspberry Pi連接到智能手機的wifi熱點,要從含有TMTO表的硬盤中下載文件。
攻擊實例
PoC視頻如下所示:
https://v.qq.com/x/page/y0783dr8jwd.html
POC攻擊一共分為下面幾個階段:
受影響的車型
研究人員只在Tesla Model S上驗證了攻擊的可行性。而Tesla的PKES系統是從Pektron購買的。研究人員查詢FCC的設備認證數據庫發現,Pektron還為McLaren、Karma、Triumph提供無鑰匙進入解決方案。因此,研究人員認為該攻擊同樣適用于其他車型和廠商。
臨時解決方案
研究人員建議:
下一篇:千萬不要低估SOAR