本研究是针对特斯拉 Model X 无钥匙系统的实用安全评估。所分析的无钥匙系统采用了由通用标准认证的安全元件实现的安全对称密钥和公钥密码原语。本文记录了该系统的内部工作原理,包括遥控钥匙、车身控制模块和配对协议。此外,还介绍了相关逆向工程技术和几个安全问题。其中,遥控钥匙固件更新机制和遥控钥匙配对协议中发现的问题导致绕过了所有已实施的加密安全措施。此研究还开发了一种完全远程的概念验证攻击(PoC),允许在几分钟内进入车辆内部并配对修改后的遥控钥匙,从而启动汽车。该攻击不是中继攻击,因为其允许攻击者随时随地启动汽车。
用户可以将遥控钥匙和车身控制模块 (BCM) 视为解锁和启动 Tesla Model X 的主要组件。实际上,还涉及其他车辆组件(例如驱动逆变器)。用户还可以使用配套的智能手机应用程序解锁和启动汽车。汽车只会执行先前与汽车配对的遥控钥匙请求的操作。要将遥控钥匙与汽车配对,维修技术人员可以使用 Tesla Toolbox 软件。遥控钥匙可用于通过按下按钮来锁定和解锁汽车,这被称为远程无钥匙进入 (RKE,Remote Keyless Entry)。此外,被动无钥匙进入和启动 (PKES,Keyless Entry and Start) 功能可确保在遥控钥匙接近时,汽车将自动解锁并启动。
下图显示了 Model X 遥控钥匙中包含的PCB。值得注意的是,德州仪器的 CC2541 BLE 片上系统 (SoC)负责与汽车通信的遥控钥匙。此外,还有一个 Maxim Integrated 低频 (22 kHz) 转发器芯片,用于接收车辆发送的数据。最后,还有一个通过 Common Criteria EAL5+ 认证的英飞凌 SLM97 安全元件。该遥控钥匙包含三个微处理器,每个微处理器都包含一个硬件 AES 协处理器。
Model X遥控钥匙嵌入了许多硬件,并且应该包含创建实际安全遥控钥匙所需的所有组件。使用通用标准认证的安全元件使研究者相信遥控钥匙的设计考虑了安全性。通过识别遥控钥匙中使用的组件,很明显攻击不太可能涉及对专有密码的密码分析,而是希望设备使用标准化的密码原语。另一方面,这个遥控钥匙比经典设计更复杂,并且有BLE作为额外的攻击向量。
Tesla Toolbox软件是维修技术人员用于Model S和Model X车辆维护的诊断工具。Toolbox软件还实现了遥控钥匙配对程序,因此允许维修技术人员将新的遥控钥匙与汽车配对。在正常情况下,该软件在带有USB-to-CAN接口的笔记本电脑上运行,该接口连接到车辆中的诊断连接器。如前所述,这允许软件与车辆内部的ECU进行通信。下图显示了Toolbox软件的屏幕截图。从这个屏幕截图中可以推断出Toolbox软件可以指示汽车唤醒遥控钥匙,并且该软件可以发现正在广播的遥控钥匙并唤醒。
要进行遥控钥匙的配对,需要使用额外的 USB 到 BLE 适配器(USB-to-BLE),以便允许 Toolbox 软件与遥控钥匙进行通信。在正常的遥控钥匙配对场景中,Toolbox 软件协调配对过程并有效地充当遥控钥匙和 BCM(车辆主控模块)之间的安全通信桥梁。许多汽车都实现了两种遥控钥匙配对方案:一种是使用已有的配对遥控钥匙,另一种是没有可用的配对遥控钥匙。前一种情况通常允许车主将额外的遥控钥匙与他们的汽车配对,而无需访问服务中心。后者通常被称为所有密钥丢失的情况,通常需要制造商特定的诊断工具来解决。对于特斯拉 Model X 车型,只有一种配对机制,并且不需要配对的遥控钥匙。这样做统一了配对协议,但也阻止了合法车主在不访问服务中心的情况下将额外的遥控钥匙与汽车配对。
Tesla Model X 的遥控钥匙采用德州仪器的 CC2541 BLE SoC。在正常操作中,遥控钥匙不会将自己广播为可连接的BLE外围设备,但会使用BLE广播包向汽车传输数据(例如,RKE解锁命令)。只有在遥控钥匙重新启动时,它会短暂地将自己广播为可连接的BLE外围设备。同样,BCM可以使用LF数据包强制遥控钥匙进行广播。当遥控钥匙广播为可连接时,BLE中心可以连接到它并获取可用服务及其相关特征的列表。
Model X的遥控钥匙提供三个BLE服务:第一个服务包含用于读取遥控钥匙的一般信息(例如软件版本和电池电量)的特性。第二个服务包含用于无线下载(OAD)的特性,这是德州仪器(TI)用于无线固件更新(OTA)的实现。换句话说,该OAD服务允许以无线方式更新CC2541 BLE SoC上的固件。第三个服务涉及应用协议数据单元(APDU)的使用,这些数据单元通常用于与智能卡进行通信。在这种情况下,该服务允许BLE客户端与遥控钥匙内的安全元件进行交互,这是在将新遥控钥匙与汽车配对时使用的功能。
从攻击者的角度来看,OAD和APDU服务都非常有趣。如果OAD固件更新机制没有得到适当保护,攻击者可能会滥用它将恶意固件映像上传到CC2541 BLE SoC。APDU服务可能被滥用以向遥控钥匙中的安全元件发送任意APDU命令。
安全元件,例如用于Model X遥控钥匙的英飞凌SLM97CFX1M00PE,类似于智能卡。物理智能卡接口和APDU格式已经标准化为ISO-7816规范的一部分。在这种情况下,物理接口是不同的,因为遥控钥匙包含在PG-VQFN-8-1封装中的SLM97安全元件,但是接口信号与普通智能卡中使用的相同(GND、VCC、IO、RST和CLK)。输入输出(IO)信号承载了CC2541 BLE SoC和安全元件之间交换的所有信息(APDU)。
前图显示了可以在遥控钥匙PCB上访问IO信号的位置。通过将逻辑分析仪连接到此IO引脚,可以接收所有交换的APDU命令。该图还显示了一个ModelX遥控钥匙,其导线焊接到大部分测试点,PCB上的过孔未被覆盖。能够接收在PCB上的各个组件之间传输信息的多个信号有助于了解系统的功能。例如,通过同时探测多个信号,确定了MAX2153E芯片接收到按钮按下的信号,然后通过串行外设接口(SPI)向CC2541BLE SoC发送信号。之后,CC2541 BLE SoC向安全元件发送一个APDU命令,该命令返回一个16字节的响应。 APDU响应稍后由CC2541广播,是指示车辆执行操作(例如锁定或解锁)的令牌。
Toolbox 软件可以用于更新遥控钥匙固件,因此它包含了最新固件二进制文件的备份。此外,汽车中的大多数组件(包括遥控钥匙)的固件都包含在信息娱乐系统的根文件系统中,因为它负责更新汽车中的所有组件。通过对二进制固件更新(1.5.1版)的粗略分析,很明显固件映像以明文形式分发给 Model X 遥控钥匙。固件映像使用与德州仪器提供的示例实现相同的标头格式,但特斯拉在固件映像的末尾添加了一些额外的字段。固件以包含 16 位 CRC 值的 16 字节标头开始。标头后面是固件映像的实际代码部分,并用 0xFF 字节填充到固定长度。最后,特斯拉添加了固件映像的 SHA1 哈希值,后跟一个 12 字节的magic值,其中包含两个空格、文本表情符号 \(◦_◦)/ 和一个额外的空格。
在这个初始固件格式分析中,无法识别任何签名或消息认证标签,以保护固件的真实性。通过修改作为 BLE 广播一部分的设备名称(Tesla Keyfob),可以验证这一发现。随后,更新了 CRC 值和 SHA1 哈希摘要并执行了 OAD 协议。遥控钥匙现在使用之前设置的设备名称进行广播,因此接受了修改后的固件。从这个实验中可以清楚地看出,遥控钥匙没有验证提供的固件二进制文件的真实性。
这种不安全的固件更新(或 OAD)实现允许攻击者覆盖 CC2541 SoC 执行的固件。实际上,这意味着能够建立 BLE 连接的攻击者将能够在遥控钥匙的 BLE SoC 上执行任意代码,从而向安全元件发送任意 APDU 命令。然而,在正常操作期间,遥控钥匙不会广播可连接的 BLE 外围设备。
Model X 车型中的 BCM 连接到诊断连接器所暴露的 CAN 网络上。维修技术人员可以通过该诊断连接器使用 UDS 协议通过 CAN 网络与 BCM 进行交互。UDS 协议是一种常用的诊断通信协议,是 ISO-14229 标准的一部分。许多电子控制单元(ECU)实现了一个 UDS 服务器,允许客户端与之交互。客户端可以使用这些服务来执行诊断操作。
为了列举 BCM 的 UDS 接口,设置了一个测试台( bench setup),包括 Model X BCM、一个工作台电源和一个 USB 转 CAN 接口。这使得研究人员可以使用 Python 和作为 Linux CAN 子系统一部分的开源工具轻松地与 BCM 进行通信。具体来说,使用了 socketCAN 和 CAN-utils 用户空间工具以及 can-isotp 内核模块和 python-can-isotp 库。
在正常情况下,要将遥控钥匙与汽车配对,车主需要安排服务预约。维修技术人员会通过 USB 转 CAN 接口将笔记本电脑运行的 Tesla Toolbox 软件连接到汽车上。此外,还会建立一个低功耗蓝牙 (BLE) 连接,连接笔记本电脑和将与汽车配对的新遥控钥匙。配对过程涉及两个不同的部分或协议:首先提供新的遥控钥匙,然后将其与汽车配对。在实践中,这两个协议通常由服务技术人员依次执行。在接下来的部分中,将详细描述配置和配对协议。然后,将描述如何对安全元件本身执行的操作以及在协议中发现的问题进行逆向工程。
在配对过程的第一部分(称为 provisioning )中,Toolbox 软件通过 BLE 连接与遥控钥匙中的安全元件通信,并通过互联网连接与 Tesla 操作的硬件安全模块 (HSM) 进行通信。下图显示了供应协议中涉及的各方以及他们之间交换的消息。