【射频】汽车远程无钥匙进入系统与滚动码

发布时间 2023-03-23 17:09:06作者: anliux

目录

概述

事件

  • 本田车的无钥匙汽车盗窃事件中,这些攻击存在一个共同点,就是它们都欺骗了车辆的远程无钥匙进入 (remote keyless entre,RKE)系统

原理

  • RKE系统的用户只需按下钥匙上的一个按键就可以打开车门和关闭车门。但RKE技术带来便利性的同时也存在安全性的问题。大多数低端的RKE系统发送器在每次按下按钮时都发送一个固定的识别码,低端系统中的惟一识别码通常是一个相对较小的数字。这些缺点为老道的窃贼们创造了机会,使他们能制造出一个能“截获”信号并重发的设备,或能快速“扫描”所有可能的识别码直到找到正确识别码的设备。采用滚动码加密技术可以大大改善固定码方式的安全性,因为每次遥控器发出的信息都是独一无二的,而且滚动码不存在简单的变化规律,这就有效的防止了简单的重放攻击,也无法被扫描。

  • 采用了滚动码技术的 RKE 系统也并非牢不可破,2015年DefCon 大会上Kamkar分享的RollJam 被证明可以被利用并攻击所有基于滚动码的系统。通过信号干扰、捕获和重放,攻击者可以获取到尚未使用的有效滚动码。但是RollJam需要持续的部署直到被利用,因为一旦在没有 RollJam 的情况下再次使用了遥控钥匙,RollJam捕获的信号就会失效。

  • 本议题提出了一种针对RKE系统的新型攻击 RollBack,它的特殊之处在于即使捕获到的滚动码已失效,也可以利用其触发RKE 系统中类似回滚的机制,并使得重放的信号被成功执行。此外,受害者仍然可以使用车钥匙,而且不易发觉遭受到了攻击。

  • 与 RollJam 不同的是,它只需要一次信号捕获,就可以在未来的任何时间利用任意次数。这种与时间无关的特性对攻击者特别具有吸引力,尤其是在汽车共享/租赁场景中。针对不同汽车制造商、车辆型号和 RKE 制造商的持续分析,其中约 70% 的汽车易受 RollBack 的影响,并预计全球范围内的影响会更大。

滚动码

滚动码介绍

  • 滚动码(Rolling codes),也称为跳跃码,是一种特殊类型的加密系统,用于无线无钥匙进入装置。
  • 过去,车主只需按一下按钮,遥控器就会将解锁码传送到汽车接收器上。
  • 这种方法有一个明显的缺陷,即任何人都可以在信号传输时接收到信号,然后在未经其允许的情况下使用该代码解锁车主的汽车。
  • 为此,滚动码技术出现了,它确保了每次传输的代码都是唯一的、不规则的、且不重复。

滚动码正常工作流程

1、车钥匙里存有当前的滚动码。当按下车钥匙按钮时,滚动码加上功能码(比如开门,关门等)一起发送给汽车。

2、汽车也存有当前的滚动码。当汽车收到同样的滚动码时,它就执行相应的操作。如果收到的数据不匹配,就不执行任何动作。

3、车钥匙和汽车里的滚动码是始终保持同步的。

4、如果在车钥匙距离车很远时误触了几次车钥匙按钮,或者钥匙发出的信号被故意拦截未被车辆接收,那么车钥匙中的滚动码就会前进好几步,此时跟车内的码就不同步了。这种情况下,汽车允许接收当前码之后指定数量的码,只要车钥匙发送的码在这个窗口之内,汽车都认为是有效的,成功接收后,计数器会再次重新同步。

5、如果车钥匙被误按超过设定次数,车钥匙和车就会彻底失去同步,这时候就只能想办法恢复同步了。

滚动码攻击场景工作流程

如果攻击者能够捕捉到车辆附近意外按下按钮的信号,那么就有可能通过重放该信号来解锁车辆。但是在实际情况下,要从随机的人那里获取这些信号是相当不现实的。

RollJam

RollJam介绍

RollJam 设备是款无线电装置,比手机还小,售价32美元,设计的目的在于破坏“滚动码”的安全性。

RollJam工作流程

当受害者首次按下钥匙按钮时,RollJam利用廉价的无线电设备在汽车使用的常见频率波段上发送噪声,拦截信号Unlock1使其不能被车辆接收,与此同时保存截获到钥匙发出的Unlock1信号。

当首个钥匙信号遭到拦截,且未能解锁车门时,车主极大概率会再次尝试。在第二次按下钥匙按钮时,RollJam会再次拦截信号Unlock2,不过也会在同时传送第一次的信号Unlock1,这次车门被解锁了,通常用户会忽视之前的解锁失败。但是RollJam却获取了第二个有效的信号。如果RollJam安装在汽车上或藏在车库附近,它就可以重复拦截信号,不管车主进行了多少次解锁,它都始终传送上一个信号,然后储存下一个信号。RollJam的安装者不管何时取回这一装置,他都会得到一个未使用且有效的滚动码信号。

RollJam的两个主要缺点

1、攻击者必须非常精确的掌握时机。如果其未能及时利用获取到的滚动码信号,一旦车主再次解锁了车辆,就需要重复之前的过程再次获取新信号。

2、当攻击者想再次打开同一辆车时,必须从头开始重做所有事情。

RollBack:与时间无关的重新同步攻击

RollBack概述

  • 捕获并重放两个连续的解锁信号就能够解锁汽车

详细过程

当受害者首次按下钥匙按钮时,RollBack设备发送噪声拦截信号Unlock1,与此同时截获该信号。

当首个信号遭到拦截未能解锁车门时,受害者极大概率会再次尝试。在第二次按下钥匙按钮时,RollBack不会拦截信号Unlock2,只会捕获它,因为车辆顺利接收到了Unlock2,车门被解锁了。

接下来,车主如往常一样使用车钥匙开锁、关锁,可能会重复 n 次。

接下来攻击者控制 RollBack设备重放之前捕获的两个连续“解锁”信号 Unlock1和 Unlock2,当重放Unlock1时,车门还是处于锁定状态,但是重放Unlock2 之后,车门被打开了。

上述场景中滚动码的变化过程

攻击者重放了连续的两个滚动码之后,车辆中的滚动码计数器重新同步到了之前的滚动码n,因此会响应 n+1 次发送的命令。

RollBack 两个明显特点:与时间无关

一旦攻击者捕获到信号,无论车主使用钥匙解锁关锁汽车多少次,都可以在未来的任何时间启动 RollBack。

RollBack 成功利用一次后,它还可以根据需要再重新利用多次,而无需从头开始重做任何事情。
简而言之,一次捕获两个信号,就可以无限期地访问该车辆。

RollBack的影响因素

首先是需要重放的信号数(SIGNALS)。在上面的例子中重放的信号数是2,然而,其他易受攻击的系统可能需要更多。因此,RollBack的第一个(也是最重要的)属性是攻击者必须捕获(和重放)的信号数量。

其次观察到的现象是,对于有些车辆比如马自达,攻击者必须严格按照相同的、连续的顺序重放信号,也就是说,不能错过中间的任何信号。但是也发现有些易受攻击的车辆(比如起亚)并不特别关心这个问题,捕获的任意两个非严格连续信号重放都是有效的。因此,把第二个需要注意的属性称为SEQUENCE,它可以是严格的(就像前面提到的日产汽车的情况,必须是连续的两个信号);也可以是松散的,即只要是按照捕获的顺序重放信号即可。

第三个属性称为TIMEFRAME,表示重放时相邻两个信号之间可以经过的最大秒数。一些车辆对此进行了限制;有些车辆则无限制。捕获信号后,使用Universal Radio Hacker等应用程序在给定的时间范围内重放它们(即修剪信号间的“空噪声”)很容易。

RollBack变体

需要重放2条信号、2条信号无需一定是连续的、信号发送的间隔无要求。
需要重放2条信号、2条信号必须是连续的、信号发送的间隔不能超过N秒。
需要重放3条信号、3条信号必须是连续的、信号发送的间隔无要求。
需要重放5条信号、5条信号必须是连续的、信号发送的间隔无要求。
到目前为止还没有发现 (2,严格,U)、(2,松散,y秒)的组合情况。

受影响的车辆小结

车辆的年龄无关紧要。新款汽车可能与老款汽车一样脆弱。
传动系统(混合动力与汽油)无关紧要。尽管混合动力或纯电动汽车使用更多的软件(因此可能更容易引入应对措施),但 RKE 系统本身似乎是独立的。
大多数测试的亚洲汽车都易受攻击。例如,所有经过测试的马自达、本田和起亚汽车都易受攻击。但是,所有经过测试的丰田汽车都不易受到RollBack的影响。
所有使用2和 Mfr.3制造商提供钥匙的车辆都受到影响,而且它们都只需要两个信号。
大多数使用 Mfr.1 制造商提供钥匙的车辆会受到影响。马自达汽车需要3个信号,本田汽车需要5个。
使用4 制造商提供钥匙的车辆似乎是安全的。

参考

END