高端汽车一般都装备了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:
为了证明攻击的可行性,研究人员进行了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攻击一共分为下面几个阶段:
受影响的车型
研究人员只在Tesla Model S上验证了攻击的可行性。而Tesla的PKES系统是从Pektron购买的。研究人员查询FCC的设备认证数据库发现,Pektron还为McLaren、Karma、Triumph提供无钥匙进入解决方案。因此,研究人员认为该攻击同样适用于其他车型和厂商。
临时解决方案
研究人员建议:
下一篇:千万不要低估SOAR