A Defense Mechanism Against Replay Attack in Remote Keyless Entry Systems Using Timestamping and XOR Logic
Abstract:
远程无钥匙进入 (RKE) 系统在现代生活方式中必不可少,其应用包括车辆和车库进入。然而,此类系统带来的便利是以它们对不同攻击(例如干扰、重放、干扰-重放和密码分析)的脆弱性为代价的。这些攻击如果轻视,可能会给公众带来灾难性后果,例如财产盗窃和人员伤亡。为此,提出了一种使用时间戳和异或编码的改进 RKE 系统来对抗上述攻击。此外,集成防御机制可在加密的发射器-接收器通信遭到破坏的情况下保护身份验证代码。所提出的 RKE 中的防御机制在现实设置中得到证明和测试。
介绍
无钥匙进入系统 (KES) 允许用户在不使用传统钥匙的情况下控制对车库或车辆的访问。这些系统利用无线遥控钥匙来避免与物理钥匙克隆、撬锁或热线连接相关的潜在盗窃。传统上,KES分为两种:1)遥控无钥匙进入(RKE)和2)被动无钥匙进入(PKE)。在 RKE 中,发射器(即密钥卡)以超高频带(例如,北美的 315 MHz,欧洲的 433 MHz)向接收器(例如,车辆)发送单向信号。这种传输仅在用户按下遥控钥匙以启动给定命令时发生。在PKE中,发射器 - 接收器通信是双向的,因为车辆上的接收器在加密的质询-响应认证协议中涉及近距离内的密钥卡。然后,在认证成功后执行各种自动化命令。[1]
固定代码 RKE 是最早的方法之一,其中密钥卡将预定的身份验证代码与命令一起发送。尽管固定代码 RKE 有助于简化设计和制造,但它极易受到重放攻击。换句话说,攻击者可以轻松捕获传输的信号,检索预定代码,并在以后使用它进行未经授权的访问。因此,为了克服固定码RKE的局限性,开发了滚动码RKE。[2]在滚动码 RKE 中,密钥卡在每次通信尝试(即按下)时根据密钥卡和接收器之间维护的同步计数器发送不同的验证码。每次尝试时,遥控器都会传输当前计数器值的加密版本,并在传输完成后将其递增。接收方解密代码以提取同步计数器的值并将其与自己的计数器的值进行匹配。如果两者匹配,则验证遥控器以执行请求的操作,并且接收器的计数器值递增。值得注意的是,加密和解密所使用的密钥永远不会被传输。相反,它由制造商嵌入在遥控钥匙和接收器中。在某些情况下,用户在有效通信范围之外多次按下遥控钥匙,导致计数器不同步。为了处理这个问题,接收器不仅匹配当前的计数器值,还匹配更多的后续值。一旦接收器找到匹配项,它就会相应地更新计数器值以重新获得同步。最后,如果接收器接收到的计数器值低于预期值,它将丢弃该代码,并且不会对 FOB 进行身份验证。
尽管 RKE 的安全性随着时间的推移而有所改善,但攻击者和研究社区仍在不断调查漏洞。[3] [4]此外,最近通过 RKE 攻击的机动车辆盗窃受到了媒体的极大关注。[5] [6]虽然滚动代码 RKE 被认为是安全的,但它容易受到许多攻击,包括干扰、密码分析和干扰和重放。这些攻击是可能的,并且在过去已经得到证明。在干扰中,攻击者用另一个相同频率的高功率信号干扰密钥卡信号。因此,这种攻击会阻止某些命令(例如锁定)并授予攻击者未经授权的访问权限。[7]在密码分析攻击中,通过执行逆向工程来利用滚动代码中的密码算法。[8] [9]一旦密钥被泄露,攻击者就可以检查最新的计数器值并按照接收者的预期生成有效的计数器值。
重放攻击对固定代码 RKE 有效且易于启动。[10]在这里,攻击者拦截并存储信号,以便稍后重新传输并闯入。另一方面,滚动代码 RKE 可以安全地抵御这种攻击。然而,当使用干扰进行重放攻击时,可以绕过滚动代码 RKE 安全性。图1显示了干扰和重放攻击设置,其中攻击者使用干扰器和信号拦截器。当受害者第一次使用遥控钥匙时,攻击者会干扰并捕获传输的信号。由于干扰造成的接收器失明迫使受害者再次使用遥控钥匙。此时,攻击者会干扰并捕获第二个信号并重放第一个以执行受害者的命令。稍后,攻击者使用第二个存储的信号来传达预期的计数器值。需要指出的是,由于低成本软件定义无线电 (SDR) 套件的可用性,可以对其进行编程以干扰、捕获和重放信号,因此发起干扰和重放攻击的成本很低。[11]
图1.针对滚动代码 RKE 系统的干扰-重放攻击
干扰重放攻击原理:攻击者通过对钥匙向车发出的射频信号进行干扰拦截,车内接收器因未收到信号无响应所以钥匙卡重发信号,攻击者再次截获报文并同时将第一次信号重发来执行解锁命令,这时用户不在考虑第一次按键操作失败的原因,然而攻击者已经拿到了第二次解锁命令,随时可以再次解锁用户的车辆。
在这项工作中,提出并实现了一种安全的 RKE 系统,以防御针对固定和滚动代码 RKE 系统发起的重放和干扰和重放攻击。即使用于加密通信的密钥通过密码分析和逆向工程泄露,这种方法也能提供安全的身份验证。
最先进的 RKE 系统安全
汽车安全和安全研究小组已经认识到大多数 RKE 系统的安全性可能会被破坏。[12]因此,提出并实施了许多对策。在 Toma 的作品中,[13]引入了一种强制加密的基于时间戳的方法来保护滚动代码 RKE 免受干扰和重放攻击。在这种方法中,加密的智能钥匙传输信号与计数器值一起传送时间戳。在接收方,信号被解密并使用同步计数器验证时间戳。这种方法被称为 Ultimate KEELOQ,它是对各种车辆中现有的 KEELOQ 滚动码技术的改进。在我们之前的工作中,时间戳被设计用来防御干扰和重放攻击。[14]其中的实现与 Toma [13]在处理同步计时器中的漂移方面提出的实现不同。拟议的工作进展[13] [14]通过在滚动代码 RKE 中加入额外的安全层,以在密钥被渗透的情况下保护同步计数器。所提出的系统采用时间戳和 XOR 逻辑。验证码和验证码在加密的 fob 传输信号中进行异或运算,由于可以产生相同异或输出的几种可能组合,导致对手端任何代码的破解复杂性增加(将详细说明)下一节有更详细的介绍)。也许值得注意的是,所提出的方案也可以用于改进固定码 RKE。
Daza 和 Salleras 也使用时间戳[15]通过获取当前时间和密钥的总和并将 Blake2 散列和传输到接收器来反击干扰和重放。然而,传输的消息包含纯文本的当前时间,这允许攻击者按照用于在线哈希密码检索的方法来提取密钥。攻击者只需提取一个未知值(即密钥)。在我们提出的方法中,攻击者需要首先破解加密算法,然后在传输的帧中提取产生异或值的两个代码的组合。格洛克等人提出了另一种使用对称密钥加密的防御技术。[16]在该技术中,遥控钥匙和车辆收发器交换消息以使用来自其可编程只读存储器 (PROM) 中存储列表的随机索引编号生成密钥。两端通过交换的消息就列表中数字的索引达成一致。然而,与所提出的方案不同,在该方案中,仅传输一条消息就足以执行相同的命令,需要大量的双向消息来执行命令。Joo等人采用了射频 (RF) 指纹识别。[17]检测对 RKE 系统的攻击。这种方法基于 RF 设备由于硬件缺陷而产生的不同特性。可以利用这些属性来区分真正的密钥卡和恶意的密钥卡。然而,指纹识别结合了机器学习,由于训练错误可能容易出现假阳性结果——这种情况在拟议的工作中不会发生。
作者提议的 RKE 系统
在所提出的 RKE 系统中,集成了一个同步计数器(即,如滚动码 RKE 中用于身份验证的计数器)、一个同步定时器和一个索引计数器。索引计数器用于从存储的列表中索引一个四字节的验证码。密钥和上述列表将特定于遥控器-接收器对,并由制造商嵌入其 PROM 中。四个字节用于表征锁定/解锁命令代码 (CMD)、同步计数器、当前时间、索引计数器和验证码(在我们的原型实现中共有 256 个代码)。同步计数器被实现为一个数值,每当遥控钥匙发送信号时,该数值就会增加一。同步定时器考虑使用晶体振荡器。
图 2a显示了发送器逻辑。对同步计数器和索引计数器检索到的验证码进行异或运算。计算出的 XOR 值与索引计数器、CMD 和时间戳一起存储在帧内,如图 3 所示。高级加密标准 (AES) 算法用于在传输之前对生成的 16-B 帧进行加密。[18]然后,更新所有计数器。图 2b说明了接收器逻辑。接收信号的当前时间被记录并与接收帧中的时间戳进行比较。如果两个值都在给定的时间窗口内,则接收器验证接收到的帧。在提议的系统中,时间窗口为±采用 10 s(可根据用例进行调整)。一旦帧被验证,接收者参考索引计数器并对其列表中的相应验证码和预期的同步计数器码执行异或操作。最后,如果结果输出等于接收帧中的 XOR 值,则接收器执行 CMD。
图2.在提议的滚动码 RKE 中对发射机 - 接收机的信号进行编码 - 解码。
图3.提议的 RKE 中的帧结构。
总结:索引值用于索引验证码,将验证码和计数器值异或后得到信息与命令、时间戳、索引值组合后加密。解密时先验证时间戳,然后根据索引提取验证码,最后将计数器值和验证码异或后与输入数据比对。成功则执行命令和更新计数器。
图4概述了提议的基于时间戳的安全RKE的防御机制。攻击者阻塞(并存储)在t(T)w处传输的信号,迫使受害者在t(T)n+1处重新尝试传输。攻击者反过来阻塞并存储重新尝试的传输,并在狭窄的时间窗口内重播第一个传输,以执行命令并欺骗受害者。稍后,攻击者重放重新尝试的传输以发起攻击,当帧时间戳t(T)n+1和当前接收器时间t®t(T)n+1之间的差值超出时间窗口(即±10 s)时,接收器将丢弃该攻击。值得一提的是,AES加密限制攻击者访问捕获帧内的不同字段。在AES加密遭到破坏的情况下,攻击者既不会从帧中存储的4-B XOR值中获取验证码,也不会从中获取同步计数器码。例如,设X=A⊕B、 其中X、A和B是k位数字。如果已知X,则存在2k个可能的A值,它们与B一起产生X。类似地,存在2k个可能的B值,它们与A一起产生X。总的来说,存在2k+1/2=2k个产生X的A和B组合。传输帧中的XOR值是32位数字(1B=8位)。因此,攻击者必须以1/232的成功概率检查232种不同的组合。这一额外的防御层优于[13][14]中先前报告的安全方法,该方法使攻击者能够在加密阶段受损时从传输的帧中提取同步计数器代码。
图4.由于时间戳,对我们的安全 RKE 系统的干扰-重放攻击不成功。
总结:通过加入时间戳,攻击者第二次重放攻击会被时间窗口限制而失效。由于验证码与计数器异或后的值的计算过程包含了2^32种不同可能组合,导致即使密钥泄露也不能在时间窗口内猜出正确的组合。
原型实现
略
实验和评估
干扰-重放射频信号
为了评估干扰和重放攻击对传统和提议的 RKE 系统的影响,从每个发射器(即密钥卡,Arduino)发送的信号被捕获并重放到其相应的接收器。为此,采用了与 GNU Radio 接口的 LimeSDR SDR 套件。[20] [21] GNU Radio 是一个免费的开源工具,提供信号处理和射频通信模拟;而 LimeSDR 是一种低成本的 RF 硬件,与 GNU Radio 兼容并支持各种无线通信标准。图 6显示了用于捕获和重放信号的 GNU Radio 框图。Osmocom Source 模块用于拦截传输的信号;而 File Sink 块用于存储它。重放攻击是通过使用 File Source 和 Osmocom Sink 块重新传输存储的信号来实现的。
图6.用于捕获和重放信号以发起重放攻击的 GNU Radio 框图。(a) 使用 LimeSDR 和 GNU Radio 捕获传输的信号并将其存储到文件中。(b) 使用 LimeSDR 和 GNU Radio 从文件向接收器重放存储的信号。
评估防御机制
通过使用相关开关一次仅启用一个系统来评估售后市场和提议的 RKE 系统。每个系统中捕获的信号稍后重放。发现重放代码激活了传统系统中的锁定/解锁命令。然而,在提议的系统中没有执行相同的命令,因为接收器接收重放传输的当前时间与其中嵌入的时间戳之间的差异不在有效时间窗口内。使用传统滚动码 RKE 系统和我们的安全 RKE 系统进行攻击和防御实验的视频演示可以在参考资料中找到,[22] ,[23]分别。需要强调的是,为了避免违反法规,实验中没有实施干扰。相反,干扰模拟如下:给定 RKE 系统中的接收器关闭。然后,相应的发射器用于在短时间内两次启动锁定/解锁命令。然后打开接收机,重放第一个捕获到的信号;然后是第二个捕获的信号。
结论
在本文中,提出了一种使用时间戳和 XOR 编码的安全增强型 RKE 系统来防御重放和干扰和重放攻击。此外,所提议的系统在 AES 密钥被泄露的情况下保护同步计数器和验证码。为了验证所提出的系统,在现实设置中实现和测试原型,并使用 SDR 套件执行此类攻击。在当前的原型中,同步计数器被实现为一个数值。在未来的工作中,将考虑使用非线性反馈移位寄存器的分组密码。此外,将进一步研究与时间戳相关的挑战(例如,时钟漂移)。