PKES無鑰匙進入與啟動系統漏洞:秒開Tesla model S
高階汽車一般都裝備了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:
- 首先需要對特定的challenge請求響應。根據response的值可以從TMTO資料機構中讀取正確的檔案,可能的key有65536個。
- 然後查詢key fob對不同challenge的response。第二個challenge-response對可用於搜尋65536個可能的key。
- 最後一步在Raspberry Pi 3 Model B+的軟體上平均耗時2秒。使用同樣的配置,搜尋2^40個key大約要777天。
為了證明攻擊的可行性,研究人員進行了PoC攻擊,可以在幾秒鐘克隆一個key fob。攻擊者的裝置包括Raspberry Pi 3 Model B+、Proxmark3、Yard Stick One和一個USB電池板。Raspberry Pi連線到智慧手機的wifi熱點,要從含有TMTO表的硬碟中下載檔案。
攻擊例項
PoC視訊如下所示:
ofollow,noindex" target="_blank">https://v.qq.com/x/page/y0783dr8jwd.html
POC攻擊一共分為下面幾個階段:
- Phase 0: 攻擊者記錄汽車週期性傳輸的wake以獲取2位元組的car id;
- Phase 1: 攻擊者偽裝成汽車,傳輸2個選好的40位的challenge到key fob,並記錄各自24位的response;
- Phase 2: 使用challenge response對和TMTO表,就可以恢復40位的金鑰。第一對用於選擇正確的key子集,第二對用於從大約2^16個可能的key中找出key。
- Phase 3: 攻擊者偽裝成key fob,解鎖並啟動汽車。
受影響的車型
研究人員只在Tesla Model S上驗證了攻擊的可行性。而Tesla的PKES系統是從Pektron購買的。研究人員查詢FCC的裝置認證資料庫發現,Pektron還為McLaren、Karma、Triumph提供無鑰匙進入解決方案。因此,研究人員認為該攻擊同樣適用於其他車型和廠商。
臨時解決方案
研究人員建議:
- 將key fob放在包裡或金屬盒裡來攔截RF訊號。這種方法雖然可行,但是並不方便。
- Tesla近期引入的一些軟體特徵可以緩解這一問題,Tesla Model S車主應關閉無鑰匙進入並開啟PIN。
- 第三個方案是為key fob加一個額外的按鈕,只有按鈕時才開啟低頻通訊。這一方法的優勢在於可以阻止中繼攻擊,並使key fob克隆變得更難以實現。如果受影響的車型不引入軟體解決方案的話,這可能是唯一的一種方案。