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:

  1. 首先需要对特定的challenge请求响应。根据response的值可以从TMTO数据机构中读取正确的文件,可能的key有65536个。
  2. 然后查询key fob对不同challenge的response。第二个challenge-response对可用于搜索65536个可能的key。
  3. 最后一步在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视频如下所示:

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提供无钥匙进入解决方案。因此,研究人员认为该攻击同样适用于其他车型和厂商。

 

临时解决方案

研究人员建议:

  1. 将key fob放在包里或金属盒里来拦截RF信号。这种方法虽然可行,但是并不方便。
  2. Tesla近期引入的一些软件特征可以缓解这一问题,Tesla Model S车主应关闭无钥匙进入并开启PIN。
  3. 第三个方案是为key fob加一个额外的按钮,只有按钮时才开启低频通信。这一方法的优势在于可以阻止中继攻击,并使key fob克隆变得更难以实现。如果受影响的车型不引入软件解决方案的话,这可能是唯一的一种方案。
(完)