360秒完成:使用Hitag2进行劫持

本文译自 Gone in 360 Seconds: Hijacking with Hitag2
作者:Roel Verdult Flavio D. Garcia Josep Balasch

摘要

电子车辆防盗装置是一种防盗装置,除非存在相应的应答器,否则防盗装置会阻止车辆的发动机启动。这种应答器是无源RFID标签,它嵌入在车钥匙中并向车辆无线认证。它通过强制机械锁来防止犯罪者对汽车进行热线接线或启动汽车。在一些国家/地区,法律要求拥有这种防盗锁。Hitag2于1996年推出,目前是汽车防盗器行业中使用最广泛的应答器。至少有34种汽车制造商使用它,并已安装在200多种不同的汽车模型中。Hitag2使用具有48位密钥的专有流密码进行身份验证和机密性。本文揭示了密码设计中的几个弱点,并提出了三种实际攻击,这些攻击仅使用无线通信即可恢复密钥。最严重的攻击是使用普通硬件在不到六分钟的时间内从汽车中恢复了密钥。这种攻击使对手可以绕过加密身份验证,而仅保留机械密钥作为保障。这在物理钥匙已被基于Hitag2的无钥匙进入系统代替的车辆上更为敏感。在我们的实验过程中,我们设法使用应答器仿真设备从各种品牌中恢复了秘密密钥并启动了许多车辆的发动机。这些实验还揭示了防盗装置的一些实施缺陷。

1 引言

过去,大多数汽车仅依靠机械钥匙来防止劫机者偷车。从20世纪90年代开始,大多数汽车制造商在其车辆中都加入了电子汽车防盗器,作为一种额外的安全机制。
从1995年开始,根据欧洲指令95/56 / EC,所有在欧盟销售的汽车都必须装有这种防盗装置。类似的规定也适用于其他国家,例如澳大利亚,新西兰(AS / NZS 4601:1999)和加拿大(CAN / ULC S338-98)。电子汽车防盗器由两个主要组件组成:一个小的应答器芯片,嵌入在汽车钥匙的塑料部分中(见图1);读卡器位于车辆仪表板的某个位置,点火器周围有天线线圈,请参见图2。
在这里插入图片描述
应答器是一个无源RFID标签,其工作频率为125 kHz。当它进入阅读器电场的邻近范围时,它将通电。当应答器不存在时,防盗锁止装置会阻止车辆启动发动机。
在这里插入图片描述
远程操作中央锁定系统必须与众不同,该系统可打开门,由电池供电,以433 MHz的超高频(UHF)运行,并且仅在用户按下远程钥匙上的按钮时才会激活。最近的汽车钥匙通常与混合芯片一起部署,该芯片支持电池供电的超高频以及无源低频通信接口。

凭借Hitag2系列应答器,其制造商NXP Semiconductors(以前称为Philips Semiconductors)引领了防盗锁市场[34]。图4显示了一个列表,其中包含一些部署有Hitag2应答器的车辆。即使恩智浦通过“相互支持”提高了“牢不可破的安全级别身份验证,质询响应和加密数据通信” 1,它仅使用48位共享密钥。

自1988年以来,汽车工业已朝着所谓的无钥匙点火或高端汽车无钥匙进入的方向迈进[26]。在这样的车辆中,机械钥匙不再存在,它已被启动按钮代替,如图3所示。这些车辆中剩下的唯一防盗机制是防盗器。令人惊讶的是,如今销售的许多无钥匙点火或进入车辆仍基于Hitag2密码。在一些无钥匙进入汽车中,Hitag2还用作备用机制,例如在遥控器的电池耗尽时打开门。
在这里插入图片描述

相关工作

德州仪器(TI)生产了一种类似的防盗应答器,名为数字签名应答器(DST)。它受另一种专有加密算法保护,该算法仅使用40位秘密密钥。Bono等人对这些算法的工作进行了逆向工程。在[10]中。Francillon等。在[18]中证明,可以实时中继几个无钥匙进入系统的(加密)通信。该文章表明,在某些情况下,此类通信可以在至少100米的距离上被拦截。
在这里插入图片描述
恩智浦Hitag2应答器家族的历史与90年代后期设计和部署的其他安全产品的历史重叠,例如Keeloq [8、13、27、28],MIFARE Classic [12、19、22、35],CryptoMemory [4,5,23]或iClass [20,21]。

最初,有关Hitag2转发器的信息仅限于对芯片功能进行高级描述的数据表[36],而专有加密算法的详细信息已由制造商保密。此阶段的安全性主要基于模糊性,直到2007年对Hitag2内部工作进行了逆向工程[47]。与其前身Crypto1(在MIFARE Classic中使用)相似,Hitag2密码由48位线性反馈移位寄存器(LFSR)和用于输出密钥流的非线性滤波器功能组成。Hitag2密码的发布引起了科学界的兴趣。Courtois等。[14]率先通过将密码状态转换成方程组并使用SAT求解器执行密钥恢复攻击来研究Hitag2流密码对代数攻击的强度。他们最实际的攻击需要两天的计算时间,并且总共进行了四次窃听身份验证尝试才能提取出密钥。还提出了一种更有效的攻击方法,要求选择16个初始化向量(IV)和6个小时的计算时间。但是,正如作者自己所指出的那样,Hitag2身份验证协议可以阻止选择的IV攻击(请参见第3.5节),因此在实践中使这种攻击不可行。

在[42]中,Soos等人。他介绍了SAT解算器的一系列优化,从而可以减少Curtois等人的攻击时间。少于7小时。最近,Stembera和Novotn´y [45]实施了蛮力攻击,利用COPACOBANA2高性能FPGA集群可以在不到两个小时的时间内完成。但是请注意,如果在标准PC上进行这种攻击大约需要4年。最后,Sun等。[44]等人测试了Hitag2密码抵御立方体攻击的安全性。尽管根据其结果可以在不到一分钟的时间内恢复密钥,但是这种攻击需要选择初始化向量,因此应严格视为理论上的。

我们的贡献

在本文中,我们展示了Hitag2发送应答器中的许多漏洞,这些漏洞使对手能够检索秘密密钥。我们提出了三种在不同情况下提取秘密密钥的攻击。

在实践中,我们已经在20多种不同品牌和型号的车辆上实施并成功执行了这些攻击。在所有这些车辆上,我们都能够使用仿真设备绕过防盗锁并启动车辆。

具体而言,我们在Hitag2中发现了以下漏洞。

  • 应答器缺少伪随机数生成器,这会使身份验证过程容易受到重放攻击。此外,当在存储应答器身份的块上发出读取命令时,应答器会提供已知数据,从而可以恢复密钥流。命令中的冗余允许对手将该密钥流扩展为任意长度。这意味着应答器提供了任意长度的密钥流预告片。
  • 以1/4的概率,密码的输出位仅由内部状态的34位决定。结果,(平均)四分之一的身份验证尝试会泄漏有关秘密密钥的一位信息。
  • 密码的48位内部状态仅被32位随机数随机化。这意味着秘密密钥上的16位信息在整个不同会话中都是持久的。

我们在以下三种实际攻击中利用这些漏洞。
第一次攻击利用了密码的可延展性,并且利用了应答器没有伪随机数发生器这一事实。它按照[16]行使用密钥流转移攻击。这使对手可以首先从阅读器获得身份验证尝试,然后再将其重播到应答器。利用密码的可延展性,可以将其用于读取已知的明文(应答器的身份)并恢复密钥流。在新的会话中,对手可以使用此密钥流在毫秒内读取任何其他存储块(正确配置的密钥除外)。当密钥没有受到读保护时,此攻击也可以用来读取密钥。实际上,对于大多数我们从法国制造的汽车进行测试的车辆都是这种情况。

在相同的攻击策略可以应用于其他基于LFSR的密码的意义上,第二次攻击速度较慢,但更笼统。攻击使用[3,6,7,11,25,38]中提出的时间/内存权衡。利用LFSR的线性特性,我们能够有效地生成查找表,从而将复杂性从248个加密降低到237个。不管发送应答器的读取保护配置如何,此攻击都会恢复秘密密钥。与应答器的通信需要30秒,而执行2000个表查询又需要30秒。

第三次攻击也是最强大的攻击,因为它只需从汽车防盗器中进行几次身份验证尝试即可恢复密钥(假设对手知道有效的应答器ID)。这种密码分析攻击利用了不同会话之间的依赖性以及对密码中使用的过滤器功能的低度确定。为了执行此攻击,对手首先从汽车上收集了136次部分身份验证尝试。可以在一分钟内完成。然后,对手需要执行235项操作以恢复密钥。在普通笔记本电脑上,此过程不到五分钟。

此外,除了研究Hitag2的安全性外,我们还研究了不同制造商如何将其部署和集成到汽车防盗系统中。我们的研究表明,在许多车辆中,应答器由于具有可读或默认密钥以及可预测的密码而配置错误,而防盗器单元则使用了弱伪随机数生成器。我们测试的所有汽车都使用标识符白名单作为附加的安全机制。这意味着,为了使用我们的第三次攻击来劫持汽车,对手首先需要窃听,猜测或无线扒窃合法的应答器ID,请参阅第7.5节。

遵循负责任披露的原则,我们已与制造商NXP联系,并在发布前六个月将其发现告知了他们。我们还提供了帮助,帮助您编译文档以将这些漏洞告知其客户。与恩智浦的沟通非常友好和富有建设性。恩智浦(NXP)多年来一直鼓励汽车工业向更安全的产品迁移,这些产品应采用强大且经过社区审查的加密算法,例如AES [15]。令人惊讶的是,鉴于更好的芯片(≤1美元)相对于高端车型的价格(≥50,000美元)的成本差异,汽车行业不愿转向安全产品。

2 硬件设置

在深入探讨Hitag2的细节之前,本节将介绍我们开发的实验平台,以便在汽车防盗系统的实际部署中进行攻击。特别是,我们建立了一个便携式且高度灵活的设置,使我们能够:i)在Hitag2阅读器和应答器之间进行监听通信,ii)模拟Hitag2阅读器,并且iii)模拟Hitag2发送应答器。图5描述了我们在阅读器和应答器之间进行窃听通信设置中的设置。

我们实验平台的核心元素是Proxmark III电路板3,该电路板最初由Jonathan Westhues4开发,旨在与RFID配合使用。

在这里插入图片描述
我们实验平台的核心元素是Proxmark III电路板3,该电路板最初由Jonathan Westhues4开发,旨在与从低频(125 kHz)到高频(13.56 MHz)的RFID转发器一起工作。Proxmark III开发板的价格约为200美元,并配有FPGA和ARM微控制器。诸如调制/解调之类的低级RF操作由FPGA进行,而诸如帧编码/解码之类的高级操作则在微控制器中执行。
Hitag2标签是在邻近区域RFID应用中使用的低频应答器[36]。从阅读器到应答器的通信使用二进制脉冲长度调制(BPLM)进行编码,而从应答器到阅读器的通信则可以使用曼彻斯特或双相编码进行编码。为了窃听,生成和读取从阅读器到应答器的通信,我们增加了对BPLM信号编码/解码的支持,请参见图6。
在这里插入图片描述
对于应答器端,我们还添加了支持曼彻斯特编码方案的功能,如图7所示。
在这里插入图片描述

3 Hitag2

本节详细介绍Hitag2。这些信息大部分在公共领域。我们首先描述Hitag2的功能,存储器结构和通信协议,这主要来自产品数据表[36]。然后,我们描述先前在[47]中进行反向工程的密码和身份验证协议。在3.7节中,我们证明了可以对攻击进行反向加密。我们首先需要引入一些符号。令F2 = {0,1}是两个元素(或布尔集)的字段。符号⊕表示异或(XOR),0n表示n个零位的位串。给定两个位串x和y,xy表示它们的串联。x表示x的按位补码。我们写yi表示y的第i位。例如,给定位串y = 0x03,y0 = y1 = 0且y6 = y7 =1。我们用{−}表示加密。

3.1功能

对Hitag2内存内容的访问取决于预配置的安全策略。Hitag2应答器最多提供三种不同的操作模式:

1.在公共模式下,一旦应答器加电,用户数据页的内容就可以由应答器简单地广播。
2.在密码模式下,阅读器和发送应答器通过交换密码来相互验证。通信是明文进行的,因此此身份验证过程容易受到重放攻击。
3.在加密模式下,读取器和应答器通过48位共享密钥执行相互身份验证。阅读器和应答器之间的通信使用专有的流密码进行加密。此模式用于汽车防盗系统,将成为本文的重点。

3.2 存储器

Hitag2发送应答器总共有256位非易失性存储器(EEPROM),分为8个块,每个块4个字节。图8说明了以加密模式配置的应答器的存储器内容。块0存储只读应答器标识符;密钥存储在块1和2中;方框3中的密码和配置位;4至7块存储用户定义的存储器。仅在成功进行相互身份验证之后,才授予读取器以加密方式访问任何存储块的权限。
在这里插入图片描述

3.3通信

阅读器与应答器之间的通信协议基于主从原理。读取器将命令发送到应答器,应答器在预定义的时间段后进行响应。有五种不同的命令:验证,读取,读取,写入和停。

如图9所示,authenticate命令的固定长度为5位,而其他命令的长度至少为10位。可选地,这10位可以用5位大小倍数的冗余消息扩展。冗余消息由命令的最后五位的位补码组成。根据数据表[36],引入此功能是为了“实现更高的置信度”。

在加密模式下,应答器以暂停状态启动,并由authenticate命令激活。成功认证后,应答器进入活动状态,在该状态中,应答器仅接受已加密的活动命令。传输的每个加密位都包含一个与密钥流的一位进行异或的明文位。活动命令的3位参数n表示内存中的偏移量(block number)。从这一点出发,我们通过引用命令来解决Hitag2活动命令,并明确提及身份验证。
在这里插入图片描述
接下来,我们定义函数cmd,该函数构造一个位字符串,该字符串表示带有r冗余消息的块n上的命令。
定义3.1。令c为图9中定义的第一个2位命令,n为3位存储块编号,r为冗余消息的数量。然后,函数cmd:
在这里插入图片描述
定义为:
在这里插入图片描述
例如,使用两个冗余消息读取块0的命令将导致以下位字符串。
cmd(11,0,2) = 11000 00111 11000 00111
阅读器和应答器之间的加密消息在没有任何奇偶校验位的情况下进行传输。发送应答器的响应始终以五个前缀开头,请参见图10。在本文的其余部分,我们将省略此前缀。典型的向前和向后通信大约需要12毫秒。
在这里插入图片描述

3.4 Cipher

在加密模式下,使用Hitag2流密码对应答器和读取器之间的通信(成功认证之后)进行加密。该密码已在[47]中进行了逆向工程。密码由48位线性反馈移位寄存器(LFSR)和非线性滤波器函数f组成。每个时钟节拍,LFSR的二十个位都将通过过滤器功能,从而生成一位密钥流。然后,LFSR使用生成多项式在左侧向左移动一位,以在右侧生成新的位。示意图见图11。
在这里插入图片描述
定义3.2。反馈功能L:

L(x0 ...x47) := x0 ⊕ x2 ⊕ x3 ⊕ x6 ⊕ x7 ⊕ x8 ⊕ x16 ⊕x22 ⊕x23 ⊕x26 ⊕x30 ⊕x41 ⊕x42 ⊕x43 ⊕x46 ⊕x47.

在这里插入图片描述
滤波器功能f由三个不同的电路fa,fb和fc组成,每个电路输出一位。使用来自LFSR的总共20个输入位不止一次使用电路fa和fb。它们产生的位用作fc的输入。电路由三个布尔表表示,它们包含每个输入的结果位。
在这里插入图片描述
为了将来参考,请注意,f的每个构造块(因此f本身)都具有以下特性:对于一半的可能输入(分别为1),其输出为零。
备注3.4(密码示意图)。图11与[47]引入并随后由[14,19,44,45]使用的示意图不同。图11中滤波器功能的输入位相对于[47]的输入位移位了一位。旧原理图中的过滤器函数代表先前状态f(xi-1 … xi + 46)处的密钥流位,而图11中的滤波器函数代表当前状态f(xi … xi + 47)。此外,我们对布尔表进行了调整,使其与我们的表示法一致。

3.5 Authentication protocol

图12中描绘了Hitag2中以加密方式使用的身份验证协议,该协议在2007年进行了反向工程并在线发布[47]。读取器通过发送一个身份验证命令开始通信,应答器通过发送其标识符id来应答。从这一点开始,通信被加密,即与密钥流进行异或。读取器以其加密的质询nR进行响应,答案aR = 0xFFFFFFFF也被加密以证明密钥知识;应答器以其针对读者的挑战的加密答案aT(对应于图8中的块3)结束。
在这里插入图片描述
在身份验证协议期间,将初始化流密码的内部状态。初始状态由32位标识符和密钥的前16位组成。然后将与密钥的最后32位进行XOR的读取器随机数nR移入。在初始化期间,LFSR反馈被禁用。由于通信是从nR开始进行加密的,因此nR后面比特的加密会受到它前面的比特的影响。通过在移入nR之后达到相同的密码内部状态来实现身份验证。

3.6 Cipher Initialization

以下精确定义了密码的初始化以及LFSR流a0a1 …和密钥流b0b1 …的生成。
在这里插入图片描述

3.7 Rollback

为了恢复密钥,在任何时间点i都学习密码αi的内部状态就足够了。由于攻击者知道id和{nR},因此可以将LFSR回滚到时间零。
在这里插入图片描述
如果首先使用L将LFSR左移以在右侧生成新位,则R恢复在左侧丢失的位,即
在这里插入图片描述
在这里插入图片描述

如果攻击者设法在某个时间i恢复LFSR的内部状态αi= aiai + 1 … ai + 47,则她可以反复应用定理3.7恢复a0a1 … a79,从而恢复密钥流b0b1b2。…通过从身份验证协议中窃听{nR},对手可以进一步计算

在这里插入图片描述
最后,对手可以如下计算密钥
在这里插入图片描述

4 Hitag2 weaknesses

本节描述了Hitag2设计中的三个弱点。第一个是协议缺陷,后两个是密码的设计。这些弱点稍后将在第5节中加以介绍。

4.1任意长度keystream oracle

此弱点描述了在不知道秘密密钥的情况下,但是仅通过一次身份验证尝试,就有可能从应答器中收集任意长度的密钥流位。3.3节介绍了可以修改或停止Hitag2应答器的阅读器命令。如定义3.1所述,可以用五位的倍数扩展此命令的长度。10位命令可以具有可选数量的冗余消息r,以便消息的总位数为10 + 5r位。由于功耗和内存的限制,Hitag2似乎设计为无需发送/接收缓冲区即可进行通信。因此,所有加密操作都是在位到达或传输时直接执行的。实验表明,Hitag2发送应答器成功地接受了来自阅读器的加密命令,并发送了1000条冗余消息。该命令的大小由10 + 5×1000 = 5010位组成。

由于没有来自应答器的挑战,因此可以将任何有效的{nR} {aR}对重播到应答器以实现成功的身份验证。接收到aT之后,将初始化发送应答器的内部状态,并等待来自读取器的加密命令,如图9所示。在不知道密钥流位b96b97 …及以后的情况下,需要评估所有可能的组合。一个命令至少包含10位,因此有210种可能性。每个命令都需要一个3位参数,其中包含块号。读取和读取都接收到32位响应,而写入和停止都具有不同的响应长度。因此,当搜索得到32位响应的10位加密命令时,在匹配的210个值中恰好有16个。平均而言,在32次尝试之后找到第一个读取命令,该读取及其参数的补码是线性差,因此仅需进行15次尝试。

在这里插入图片描述
16个猜测中的一个代表第一个存储块上读取命令的加密位。该块包含已知明文的id,因为它在身份验证期间以明文方式传输。因此,有一种猜测,就是所传达的比特等于图13中的消息。

通过正确的猜测,可以恢复40个密钥流位。然后,此密钥流用于使用六个冗余消息对块0上稍作修改的读取命令进行加密,如第3.3节所述。发送应答器以下一个32位密钥流做出响应,该密钥流用于加密标识符,如图14所示。因此,使用先前恢复的密钥流并通过扩展读取命令来检索接下来的30个密钥流位。

此操作可以重复很多次。例如,使用恢复的密钥流位b96 … b167,可以构建具有12条冗余消息等的70位读取命令。实际上,恢复2048位连续密钥流只需不到30秒。
在这里插入图片描述

4.2 会话之间的依赖关系

3.6节显示,在密码状态为α79时,密码已完全初始化,并且从那里开始,密码仅产生密钥流。这表明密码的48位内部状态仅由32位的读取器随机数nR随机化。因此,在状态α79下,只有LFSR位16到47受阅读器随机数影响。因此,LFSR位0到15在整个不同的会话中保持不变,这在它们之间产生了很大的依赖性。这16个会话持久性位对应于秘密密钥的位k0 … k15。

4.3 低度确定滤波功能

过滤器函数f:由三个构建块fa,fb和fc组成,它们以两层结构排列,请参见图11。由于这种特殊的结构,输入位a34 … a47仅影响fc的最右边输入位。

此外,对fc的简单检查显示,在输入位的32种配置中的8种中,最右边的输入位对fc的输出没有影响。在这些情况下,fc的输出由其最左边的4个输入位确定。此外,这意味着滤波器函数f由内部状态的最左34位确定。以下定理精确地说明了这一点。
在这里插入图片描述

5 Attacks

本节介绍针对Hitag2的三种攻击。第一次攻击很简单,并授予对手对应答器内存的读写访问权限。在第二次攻击中描述的密码分析在与汽车短暂通信后恢复了密钥和应答器。此攻击使用可应用于其他类似LFSR的流密码的通用技术。第三次攻击描述了Hitag2密码的自定义密码分析。它只需要汽车进行几次身份验证尝试,并允许敌手以235次操作的计算复杂度来恢复秘密密钥。

最后两次攻击分别在时间/内存/数据和时间/迹线之间进行权衡。为简单起见,我们以最佳值或鉴于当前可用硬件我们认为“明智”的具体值来描述这些攻击。

5.1 Malleability attack

该攻击利用了第4.1节中描述的任意长度的密钥流预言薄弱环节,以及在身份验证算法期间应答器不会对读取器造成任何挑战的事实。这种臭名昭著的弱点使对手可以先获取密钥流,然后使用它来读取或写入卡上的任何块,并保持持续的通信和计算复杂性。如图13所示,在恢复密钥流位b96 … b137之后,对手可以转储发送应答器的完整内存,包括其密码。从应答器恢复密钥流并创建内存转储总共花费不到一秒钟的时间,并且只需要位于受害者附近即可。这显示了与[22] Garcia等人类似的情况。演示如何以无线方式从受害者那里窃取MIFARE Classic卡。

存储密钥的存储块具有额外的可选保护机制。有一个一次性可编程的配置位,用于确定这些块是否可读。如果读取器尝试读取受保护的块,则应答器不响应。在那种情况下,对手仍然可以使用第5.2节和第5.3节中介绍的攻击。如果应答器配置不正确,它将使对手读取所有必要的数据以启动汽车。

5.2 时间/内存权衡攻击

这种攻击非常普遍,只要有足够的连续密钥流可用,它就可以应用于任何基于LFSR的流密码。实际上,由于第4.1节中所述的弱点,Hitag2就是这种情况。它扩展了过去几十年[3、6、7、11、25、38]发表的类似的时间/内存折衷方法。这种攻击需要与阅读器和应答器进行通信。下一个命题引入了一个小技巧,使您可以立即快速执行n个密码步骤。直观地,该命题表明状态s及其第n个后继项之间的线性差是每个位生成的线性差的组合。这将在以后的攻击中使用。
在这里插入图片描述
为了进行攻击,对手A进行如下操作:
在这里插入图片描述
2. A模拟一个应答器并尝试对目标汽车进行身份验证。遵循身份验证协议,汽车将通过消息{nR} {aR}进行应答。
3.接下来,攻击者以无线方式将该消息重放到合法的应答器,并使用第4.1节中描述的弱点获得256个字节的密钥流ks0 … ks2048。请注意,这可以在钥匙放在受害者的包或口袋中时完成。
4.对手设置i = 0
5.然后在对数时间中,从步骤1的表中查找密钥流ksi … ksi + 47。
6.如果密钥流不在表中,则它将递增i并返回到步骤5。如果存在匹配,则对应的状态是候选内部状态。A使用其余的密钥流来确认这是密码的内部状态。
7.最后,对手使用定理3.7回滚密码状态并恢复秘密密钥。

复杂性和时间。
在步骤1中,对手需要预先计算一个1.2 TB的表,该表需要242.5个密码滴答,等于2^37个加密。在生成期间,每个条目都直接存储在对应的
.bin文件,如前所述。这8 KB文件中的每个文件也都需要排序,但是只需几分钟即可将它们全部排序。在一台标准笔记本电脑上,对整个表格进行计算和排序所需的时间少于一天。第2-3步大约需要30秒钟,才能从发送应答器收集256个字节的密钥流。步骤4-6需要(在最坏的情况下)需要进行2000次表查找,而在标准笔记本电脑上查找时间不到30秒。从开始到结束,总共需要一分钟来执行攻击。

5.3 密码分析攻击

结合第4.2节和第4.3节中描述的弱点,攻击者可以在从汽车上收集了几次身份验证尝试后恢复密钥。如果使用标识符白名单作为次要安全措施(实际上对于我们测试的所有汽车都是这种情况),对手首先需要获得有效的应答器ID,请参见第7.5节。

攻击背后的直觉很简单。假设对手对密钥的前34位有一个猜测。预期有四分之一的迹线具有定理4.1中的属性,该定理使对手能够对{aR}的第一位执行测试。第4.2节中描述的会话之间的依赖性使攻击者可以多次执行此测试,从而大大减少候选(部分)密钥的数量。如果攻击者收集了136条迹线,这(平均)允许她执行136/4 = 34位测试,即与猜测到的关键位一样多。对于通过这些测试的少量候选密钥(通常为2或3),对手将对密钥的其余14位进行详尽搜索。下面是对该攻击的精确描述。
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
复杂性和时间

在步骤1中,对手需要收集136个部分身份验证跟踪。可以使用Proxmark III在1分钟内完成。在步骤2和3中,对手需要构建2^16个表。对于这些表中的每一个,对手都需要计算218次加密和218次表查找。步骤4的复杂性可以忽略不计,因此我们将其忽略。这增加了总的复杂度
216×(218 + 2^18)= 2^35个加密/查找。请注意,直接分割K的搜索空间很简单尽可能多的过程。在标准四核笔记本电脑上,此计算只需不到五分钟的时间。因此,整个攻击可以在不到360秒的时间内完成,这解释了论文的标题。
这种攻击比[14,45]中提出的其他实际攻击要快。下表显示了这种攻击与文献中其他攻击之间的比较。
在这里插入图片描述
在这里插入图片描述

6 Starting a car

为了详细说明我们的攻击的实用性,本节介绍了我们使用一种具体车辆的经验。为此,我们选择了德国汽车,主要是因为它具有无钥匙点火功能。这辆车具有典型的机械钥匙,而不是混合动力遥控器,其中包含Hitag2应答器。在汽车的仪表板上,有一个用于插入遥控器的插槽和一个用于启动发动机的按钮。当在此插槽中插入一块合适大小的塑料时,汽车反复尝试验证发送应答器(失败)。该汽车使用7.5节中所述的标识符白名单。同一部分说明了如何从受害人的遥控器中无线窃取有效标识符。一旦汽车收到有效的标识符,仪表板就会亮起,并且LCD屏幕会弹出并显示如图16左所示的消息。另请注意仪表板上的标志。在这一点上,我们使用Proxmark快速收集了足够的痕迹,并执行了5.3节中的攻击以恢复密钥。这辆车是我们测试的为数不多的,没有可预测密码的汽车之一,因此我们可以从受害者的遥控器无线读取它。然后,我们使用Proxmark来模拟应答器。图16右图显示汽车接受了Proxmark,就好像它是合法的应答器一样。同一张图片显示(通过查看转速表)可以在此阶段启动发动机。

7 实施的弱点

为了验证攻击的可行性,我们已经在至少20种不同品牌的汽车模型上对这三种攻击进行了测试。
在我们的实验中,我们发现,除了密码和协议方面的弱点之外,应答器通常配置不当,并且在汽车中的集成度很差。
我们测试的大多数汽车都使用默认或可预测的应答器密码。
一些产生具有非常低的熵的随机数。
大多数车钥匙都有 车辆相关信息存储在应答器的用户定义的存储器中,但没有经过测试的汽车 实际检查这些数据。
一些汽车将Hitag2用于无钥匙点火系统,由于缺乏物理钥匙,因此更容易受到攻击。
本节总结了我们在实际实验中发现的一些弱点。
特别是,第7.4节显示了当转发器使用可预测的密码时,第5.3节中描述的攻击的含义。
第7.5节介绍了如何规避标识符白名单。
这是一种常用于车辆防盗器的附加安全机制。

7.1弱随机数生成器

从我们测试的汽车中,大多数伪随机数生成器(PRNG)都将时间用作种子。时间间隔的精度不足。一秒钟的时间范围内的多次身份验证尝试将获得相同的随机数。更糟糕的是,我们遇到了两辆PRNG熵低的汽车。如图17所示,第一个法国汽车(A)通过将32位中的24位始终设置为零来产生仅具有8位熵的随机数。
在这里插入图片描述
另一辆法国汽车(B)产生了随机的随机数,但实际上,每个字节的最后半字节由第一个字节的最后半字节确定。这些随机数的子集如图18所示。
在这里插入图片描述

7.2低熵键

一些汽车的钥匙上有重复的图案,这使其容易受到字典攻击。韩国汽车(C)的最新型号使用了我们遇到的熵最低的钥匙。它尝试以密码模式和加密模式访问应答器。为此,它使用默认密码MIKR和格式为0xFFFF *** *** ***的密钥,如图19所示。
在这里插入图片描述

7.3 Readable keys

5.1节显示了如何恢复Hitag2发送应答器的内存转储。几乎所有人都通过以不可读的方式设置块1和2的方式设置配置的位来保护秘密密钥免受读操作。虽然有一些例外。例如,实验表明,大多数法国制造商的汽车都没有设置该保护位。这使攻击者能够立即恢复密钥。更令人担忧的是,这些汽车中的许多汽车具有使用远程无钥匙进入系统的可选功能,该系统的范围更广,因此更容易受到无线攻击。最令人担忧的是,可以在几米的距离上无线访问的应答器和不受保护的可读密钥的组合。

7.4 可预测的应答器密码

应答器密码被加密并在身份验证协议的应答器应答aT中发送。除密码算法外,这是Hitag2协议的附加安全机制。除了应答器证明知道秘密密钥这一事实外,它还发送加密的密码。通常,如果使用的密码系统被破坏,最好有一些后备方案和对策。第5.3节演示了如何从密钥库中恢复密钥。车辆。但是要启动引擎,还必须知道发送应答器的密码。实验表明,我们测试的汽车中至少有一半使用默认或可预测的密码。

7.5 标识符扒窃

第一代车辆防盗器无法计算任何密码运算。这些应答器只是在RF通道上发送恒定(唯一)的标识符。车辆将合法的应答器标识符列入白名单,只有白名单中的那些应答器才能使引擎启动。大多数汽车防盗装置仍使用这种白名单机制,这实际上是恩智浦所鼓励的。这些汽车只会尝试对白名单中的应答器进行身份验证。这对于攻击者是一个额外的障碍,即在能够执行之前从受害者那里恢复一个真实的标识符任何攻击。至少有两种方式可以使对手无线扒窃Hitag2标识符:

一种选择是使用低频(LF)接口以无线方式从受害者的钥匙中窃取标识符。这可以在接近距离内完成,只需几毫秒。根据Hitag2数据表[36],应答器的通信范围可达一米。虽然,嵌入到车钥匙中的Hitag2应答器已针对大小进行了优化,但无法实现这种通信距离。但是,对手可以使用带有大天线的调谐设备,而忽略掉辐射规定(例如[17]),以达到更大的阅读距离。文献中的许多示例表明了这种设置的简单性和低成本[24、30、31、43]。

另一种选择是使用宽范围超高频(UHF)接口。为此,当受害者按下遥控器上的按钮(例如,关上门)时,对手需要窃听混合式Hitag2发送应答器[39]的传输。大多数无钥匙进入应答器应要求以明文广播其标识符(例如参见[39])。

关于LF接口,UHF接口具有更宽的传输范围。如[18]所示,从100米的距离窃听此类传输并不难。从安全角度来看,第一代Hitag2转发器比混合转发器具有物理优势,因为它们仅支持LF接口。

8 缓解

本节简要讨论了用于汽车防盗器的简单但有效的身份验证协议,还介绍了第5节中提出的多种缓解攻击的措施。有关更多详细信息,请参阅[1,9]。

首先,我们强调,对于汽车行业来说,从薄弱的专有密码迁移到经过同行评审的诸如AES加密密码链模式(CBC)的AES [15]非常重要。一个简单的双向身份验证协议如图20所示。随机随机数nR,nT,秘密密钥k和应答器密码PWDT的长度至少应为128位。在文献[32、33、46、48、49]中提出了可比的方案。
在这里插入图片描述
市场上已经有实现AES的防盗应答器,例如Atmel的ATA5795 [2]和NXP的Hitag AES / Pro [37]。应该注意的是,尽管他们使用经过同行评审的加密算法,但是它们的身份验证协议仍然是专有的,因此缺乏公共和学术审查。

为了减少我们的密码攻击的适用性,汽车行业可以考虑以下措施。此攻击是最敏感的,因为它不需要访问车钥匙。在迁移到更安全,更开放设计的产品之前,应将这些对策解释为缓解(但不是解决方案)。

扩展应答器密码

应答器密码是身份验证协议的重要组成部分,但令人遗憾的是,它只有24位的熵。通过详尽搜索很容易找到这样的密码。此外,正如我们在7.4节中提到的那样,制造商通常会使用可预测的应答器密码来部署汽车。如图8所示,在Hitag2应答器中有四页用户定义的内存可用。这些密码可用于将应答器密码扩展为128位随机数据,以增加其熵。这意味着,对手必须先能够访问应答器的内存,然后才能偷车。

失败后延迟身份验证

第5.3节中介绍的仅汽车加密攻击需要进行几次身份验证尝试才能降低计算复杂性。延长对手收集这些痕迹所需的时间会增加被抓住的风险。为此,防盗锁会在重新认证之前引入一个暂停,该暂停会随着顺序不正确的身份验证数量的增加而递增或呈指数增长。在[40]中提出了一种有趣的技术来实现这种对策。该延迟会影响产品的健壮性,可用性和可用性,但会大大增加攻击时间,从而降低偷车的风险。

除了这些措施,重要的是改进车辆中用于生成读取器随机数的伪随机数生成器。不用说,加密密钥和应答器密码也是如此。NIST提出了一种统计测试套件,可用于验证伪随机数生成器的质量[41]。

9 结论

我们在Hitag2中发现了许多严重漏洞 及其在汽车行业中的使用。特别是,Hitag2允许将读取器数据重放到应答器;提供无限的密钥流预告片,并且仅使用一个低熵随机数来随机化会话。这些弱点使对手可以在无线访问汽车和钥匙后几秒钟内恢复密钥。如果只能与汽车通信,则对手只需不到六分钟的时间即可恢复密钥。我们测试的汽车使用标识符白名单。为了避免这种情况,对手首先需要通过其他方式获得有效的应答器ID,例如在受害者锁门时将其窃听。可以从100米的距离截获此UHF传输[18]。实际上,我们已经在要求的攻击时间内执行了所有攻击(来自第5节)。我们对20多种不同品牌和型号的车辆进行了实验,发现了一些实施方面的弱点。

按照负责任的披露原则,我们已在披露前六个月通知了制造商恩智浦。我们与恩智浦进行了建设性的合作,讨论了缓解措施并向他们提供了反馈,以帮助改善其产品的安全性。

10 致谢

作者要感谢Bart Jacobs在背景中的坚定支持。我们还要感谢E.Barendsen,L.van den Broek,J.de Bue,Y.van Dalen,E.Gouwens,R.Habraken,I.Haerkens,S.Hoppenbrouwers,K.Koster,S.Meeuwsen,J Reule,J。Reule,I。Roggema,L。Spix,C。Terheggen,M。Vaal,S。Vernooij,U。Zeitler,B。Zwanenburg,以及那些希望匿名的人(勇敢地)自愿为 我们的实验。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值