当前位置: 首页 > news >正文

鉴源实验室 | 汽车网络安全攻击实例解析(三)

作者 | 张璇 上海控安可信软件创新研究院工控网络安全组

来源 | 鉴源实验室

社群 | 添加微信号“TICPShanghai”加入“上海控安51fusa安全社区”

引言:随着现代汽车技术的迅速发展,车辆的进入和启动方式经历了显著的演变。传统的物理钥匙逐渐被无钥匙进入和启动系统(Passive Keyless Entry and Start,PKES)所取代,这一系统允许车主在保持车钥匙在口袋中的情况下,轻松地进入并启动车辆。PKES系统通过使用射频识别技术和先进的通信协议,为用户提供了极大的便利性,然而,随着PKES系统的普及,其安全性也逐渐受到关注,这不仅仅关系到财产安全,更涉及到驾驶者和乘客的生命安全。在这一背景下,对PKES系统的安全性进行深入的研究变得至关重要。

01

PKES系统安全研究

2018年,比利时鲁汶大学安全团队揭示了特斯拉PKES系统中的CVE-2018-16806漏洞,成功破解了DST40加密算法,仅用数秒就复制了特斯拉Model S钥匙,并最终成功盗走了车辆。

2019年,该团队在亚特兰大的Cryptographic Hardware and Embedded Systems conference(CHES)上宣布,在特斯拉修复了漏洞后,他们仍能够再次复制车钥匙。尽管这次破解工作需要更近的距离和更长的时间,但特斯拉Model S被盗事件引发了对Passive Keyless Entry系统安全性的广泛关注。

2020年,一名黑客成功为特斯拉汽车开发了一种新的密钥克隆“中继攻击”,并在特斯拉Model X电动汽车上进行了演示。特斯拉得知了这一新的攻击,并计划推出新的补丁。在北美,特斯拉汽车被盗相当罕见。但在欧洲,一些老练的窃贼通过“中继攻击”盗窃了不少特斯拉汽车,其中大多数都没有被找回。

2022年,安全研究人员通过中继攻击成功黑客攻击了特斯拉Model 3和Y,可以有效地解锁并启动这些车辆。

近年来,安全人员一直专注于特斯拉的PKES系统的安全研究,揭示了该系统存在许多安全漏洞[1,2,3,4]。

02

攻击案例分析

2.1 攻击案例介绍

2019年发生的特斯拉Model S被盗事件引发了对PKES系统安全性的广泛关注(图1)。在英国的博勒姆伍德地区,两名小偷在没有钥匙的情况下,使用中继攻击设备成功盗取了特斯拉Model S,整个过程仅用时30秒。盗窃者使用的中继攻击工具并不昂贵,且便于携带。值得注意的是,这一过程并未涉及破解钥匙与车辆认证算法等机制。中继设备的作用仅限于采集车钥匙发送的信号,而非篡改信号内容,也未涉及解密和破坏通信协议的过程。

图1 特斯拉被盗事件题

2.2 案例分析

2.2.1 研究对象

首次提出PKES的设想可追溯到[5]。在这项研究中,作者提出了一种系统,当携带钥匙的用户靠近车辆时,系统会自动解锁车辆,并在用户远离车辆时将其锁定。该系统之所以被称为“被动”,是因为它无需用户采取任何主动措施。钥匙与车辆之间的通信特点是通过磁耦合的射频信号完成的。在这一系统中,车辆通过判断钥匙是否在汽车的通信范围内来确定其是否在近距离内。

PKES汽车钥匙采用低频射频识别技术(LF RFID,Low-Frequency Radio-Frequency Identification)进行短距离通信(在主动模式下为1-2米,在被动模式下为几厘米),并使用全功能超高频(UHF,Ultra High Frequency)收发器进行较长距离通信(在10到100米的范围内)。LF信道用于检测钥匙是否在汽车内外的区域内。图2显示了必须检测以确保PKES系统安全和方便使用的汽车附近区域。这些区域包括:

1)与汽车外部较远距离(通常高达100米),只允许通过按下钥匙上的按钮来开启/关闭汽车。

2)在汽车外部,但距离车门把手约1-2米,允许通过使用车门把手来开启/关闭汽车。

3)在汽车内部,允许启动引擎。

图2 PKES系统LF覆盖范围

图3显示了正常模式下汽车开锁的两个示例实现。汽车通过LF信道定期发送信标,或者在操作车门把手时发送信标。这些信标可以是简短的唤醒消息,也可以是包含汽车标识的较长的挑战消息。当钥匙检测到LF信道上的信号时,它唤醒微控制器,解调信号。在计算出对挑战的响应后,钥匙通过UHF信道回复。该响应被汽车接收并验证。在有效响应的情况下,汽车解锁车门。随后,为了启动汽车引擎,钥匙必须位于汽车内(图2中的Inside区域)。在这个区域,钥匙接收到不同类型的消息,当回复这些消息时,将通知汽车正确的钥匙就在车内,汽车然后才被允许启动引擎。

图3 PKES系统两种实现方式

2.2.2 PKES中继攻击分析

在上述的PKES安全案例中,主要采用了中继攻击的手段,该方式广泛应用于通信系统的渗透攻击[6]。中继存在两种方式,一种是基于电缆的中继攻击,另一种是空中中继攻击。

1)电缆中继攻击

为了执行这种攻击,可以使用一种中继设备(如图4),该设备由两个环形天线连接在一起的电缆组成,该电缆在这两个天线之间中继LF信号。中间可以放置一个放大器以提高信号功率。当环形天线靠近车门把手时,它捕获汽车信标信号作为局部磁场。这个场激发了中继的第一个天线,它通过感应在天线的输出处产生了交替信号。然后,这个电信号通过同轴电缆传输,通过一个可选的放大器传达到第二个天线。是否需要放大器取决于诸多参数,如天线的质量,电缆的长度,原始信号的强度以及中继天线距离汽车天线的距离。当中继信号达到电缆的第二个天线时,它在天线中产生电流,进而在第二个天线的附近产生磁场。最后,这个磁场激发了钥匙的天线,后者解调了这个信号并从汽车中恢复了原始消息。汽车将从外部天线向钥匙发送开启命令,从内部天线发送启动命令。因此,攻击者首先需要将中继天线放置在车门把手前,以便钥匙发送开启信号。一旦车门解锁,攻击者将中继天线带入汽车内,并在踩刹车踏板或按下启动引擎按钮后,汽车将向钥匙发送启动消息。在这两种情况下,钥匙都会通过UHF回应。

图4 PKES系统两种实现方式

2)空中中继攻击

通过电缆进行中继可能会不方便或引起怀疑。例如,墙壁或门的存在可能会阻止它。因此,可以实现一个在空中进行的物理层中继攻击,通过专门构建的RF链路中继LF信号(如图5)。该链路由发射机和接收机两部分组成。发射机捕获LF信号并将其升频到2.5 GHz。获得的2.5 GHz信号然后被放大并通过空气传输。链路的接收器部分接收此信号并将其降频以获得原始的LF信号。然后再次放大此LF信号并发送到一个环形LF天线,该天线复制了汽车发射的信号。打开和启动汽车引擎的过程与上述讨论相同。

另外,由于模拟处理信号通常比数字处理更为迅速,使用模拟实现的中继攻击使攻击者能够在保持攻击的大小、功耗和价格非常低的同时,达到更大的传输/接收中继距离。

图5 通过升频和降频在空中中继LF(130KHz)信号的简化视图

2.2.3 攻击步骤分析

在上述的案例中,偷窃者通过中继攻击设备,在不拥有实际钥匙的情况下,成功实施了对特斯拉Model S的盗窃。攻击过程包括以下几个关键步骤:

1)寻找信号:小偷利用中继设备在目标房屋周围寻找和靠近特斯拉的钥匙信号。

2)信号放大:采用上述的方法,通过中继设备识别并放大车钥匙和特斯拉之间的通信信号。

3)误导特斯拉Model S:通过中继LF信号欺骗特斯拉,使其误以为钥匙就在附近,从而解锁车门、启动车辆。

整个攻击过程并不牵涉到破解钥匙与车辆认证算法等机制。中继设备的作用仅在于收集车钥匙发送的信号,而不是篡改信号内容,也没有解密或破坏通信协议。偷窃者使用的工具并不昂贵,同时发动这类攻击并不需要较高的专业知识。

03

总结

本文研究了汽车PKES系统的安全性,通过实际的案例,研究了PKES中继攻击的原理和方法。该方法不需要解码信号,也不需要修改信号内容,仅引入了模拟的RF组件的典型延迟,该攻击强调了物理层安全的重要性,与针对身份验证或消息机密性的安全协议的攻击相互独立,为加强和理解PKES系统安全性提供了新的视角。中继攻击只是PKES系统攻击方法中常用的一种,随着PKES系统在汽车领域的广泛应用,安全研究人员需要不断关注新的攻击方式和漏洞,并提出更多创新性的解决方案,以满足不断演变的安全挑战,以确保这一关键技术的可靠性和稳定性。

参考文献:

[1] S. Indesteege, N. Keller, O. Dunkelman, E. Biham, and B. Preneel. A practical attack on KeeLoq. In Proc. of the 27th Annual Eurocrypt Conference, pages 1–18, Berlin, Heidelberg, 2008. Springer-Verlag.

[2] C. Paar, T. Eisenbarth, M. Kasper, T. Kasper, and A. Moradi. KeeLoq and side-channel analysis-evolution of an attack. Fault Diagnosis and Tolerance in Cryptography, Workshop on, 0:65–69, 2009.

[3] N. T. Courtois, G. V. Bard, and D. Wagner. Algebraic and slide attacks on KeeLoq. In Fast Software Encryption: 15th International Workshop, FSE 2008, Lausanne, Switzerland,

February 10-13, 2008, Revised Selected Papers, pages 97–115, Berlin, Heidelberg, 2008. Springer-Verlag.

[4] S. C. Bono, M. Green, A. Stubblefield, A. Juels, A. D. Rubin, and M. Szydlo. Security analysis of a cryptographically enabled RFID device. In Proc. of the 14th USENIX Security Symposium, Berkeley, USA, 2005. USENIX Association.

[5]T. Waraksa, K. Fraley, R. Kiefer, D. Douglas, and L. Gilbert. Passive keyless entry system. US patent 4942393, 1990.

[6] G. P. Hancke, K. Mayes, and K. Markantonakis. Confidence in smart token proximity: Relay attacks revisited. Computers & Security, 28(7):615–627, 2009.

相关文章:

鉴源实验室 | 汽车网络安全攻击实例解析(三)

作者 | 张璇 上海控安可信软件创新研究院工控网络安全组 来源 | 鉴源实验室 社群 | 添加微信号“TICPShanghai”加入“上海控安51fusa安全社区” 引言:随着现代汽车技术的迅速发展,车辆的进入和启动方式经历了显著的演变。传统的物理钥匙逐渐被无钥匙进…...

php 中生成订单号

字母日期。。。。。。。 function setOrderNo($year 2011) {$yCode array(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z);$orderSn $yCode[intval(date(Y)) - $year] . strtoupper(dechex(date(m))) . date(d) . substr(time(), -5) . s…...

Jmeter工具+ant+jenkins实现持续集成

jmeterantjenkins持续集成 一、下载并配置jmeter 首先下载jmeter工具,并配置好环境变量;参考: jmeter默认保存的是.jtl格式的文件,要设置一下bin/jmeter.properties,文件内容,保存jmeter.save.saveservice.output_f…...

基于SSM的经典电影推荐网站设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…...

JavaScript中使用JSON的基本操作示例

简介 JSON(JavaScript Object Notation)是一种数据交换格式,也是JavaScript中处理数据的常见方式之一。JSON是一种轻量级的数据交换格式,易于阅读和编写,同时也易于解析和生成。在JavaScript中,可以使用内…...

上拉、下拉电阻的作用

上拉、下拉电阻的作用 (1)一般作为单键触发使用,如果芯片本身没有内接电阻,为了使单键维持在不被触发的状态或触发后回到原状态,必须在芯片外部接一个电阻,即保持芯片引脚高电平(或低电平)输入,这样单击按键…...

docker部署elasticsearch+kibana+head

前言 最近,项目需要使用elasticsearch,所以就想快速安装一个使用,最开始是docker安装了7.10.1版本。 后面计划使用Java开发,发现有 RestHighLevelClient 和 Elasticsearch Java API Client两种客户端连接方式。 然后网上查阅了一…...

Linux:vim的简单使用

个人主页 : 个人主页 个人专栏 : 《数据结构》 《C语言》《C》《Linux》 文章目录 前言一、vim的基本概念二、vim的基本操作三、vim正常模式命令集四、vim底行模式命令集五、.xxx.swp的解决总结 前言 本文是对Linux中vim使用的总结 一、vim的基本概念 …...

Python---文件和文件夹操作

os模块 在Python中文件和文件夹的操作要借助os模块里面的相关功能,具体步骤如下: 第一步:导入os模块 import os 第二步:调用os模块中的相关方法 os.函数名() 与文件操作相关方法 编号函数功能1os.rename(目标文件名称&…...

electron-vue运用及案例代码

前言 Electron是一个使用JavaScript, HTML和CSS构建跨平台桌面应用程序的开源库。它允许开发者使用纯web技术创建原生应用程序,这使得web开发者能够利用他们已经掌握的web技术来构建桌面应用。 以下是一个简单的Electron应用程序的代码示例: // 引入Electron的主模块 co…...

视频字幕处理+AI绘画,Runway 全功能超详细使用教程(4)

runway的视频字幕处理、AI绘图功能介绍,感觉完全就是为了做电影而布局,一整套功能都上线了!想系统学习的必收藏! 在深度研究Runway各个功能后,无论是AI视频生成及后期处理技术,还是AI图像生成技术&#xff…...

令人疑惑的Promise相关问题

令人疑惑的Promise相关问题 问题1 const promise new Promise((resolve, reject) > {reject(Error(Error occurred)); });promise.catch(error > console.log(error.message)); promise.catch(error > console.log(error.message));输出: Error occurr…...

Spring 多数据源搭建

目录 前言 正文 1.Druid 介绍和使用 2.其他多数据源解决方案 总结 前言 对于复杂的业务和项目,可能在一个单体项目中存在需要连接多个数据库的情况。这时,就会使用到多数据源,实际中遇到的可能性比较大。 正文 如果一个项目中需要连…...

【二分查找】LeetCode1970:你能穿过矩阵的最后一天

本文涉及的基础知识点 二分查找算法合集 作者推荐 动态规划LeetCode2552:优化了6版的1324模式 题目 给你一个下标从 1 开始的二进制矩阵,其中 0 表示陆地,1 表示水域。同时给你 row 和 col 分别表示矩阵中行和列的数目。 一开始在第 0 …...

利用python连接MySQL数据库并执行相关sql操作

一、新建MySQL数据库 1.启动MySQL服务 打开phpstudy,开启MySQL服务。如果开启失败的话,可以打开任务管理器,把正在运行的mysqld服务的进程进行关闭,再次打开MySQL服务即可启动。 2.新建MySQL数据库 选择数据库,点击…...

jenkins配置

branch: "dev" 切换分支 $WORKSPACE: /var/lib/jenkins/workspace/jenkins任务名 dest_passwd服务器密码 变量 sudo sshpass -p $dest_passwd ssh root192.168.211.319 -tt rm -rf /data/patent/*:删除文件/data/patent/* sudo sshpa…...

LeNet对MNIST 数据集中的图像进行分类--keras实现

我们将训练一个卷积神经网络来对 MNIST 数据库中的图像进行分类,可以与前面所提到的CNN实现对比CNN对 MNIST 数据库中的图像进行分类-CSDN博客 加载 MNIST 数据库 MNIST 是机器学习领域最著名的数据集之一。 它有 70,000 张手写数字图像 - 下载非常简单 - 图像尺…...

Django的回顾的第4天

1.模型层 1.1简介 你可能已经注意到我们在例子视图中返回文本的方式有点特别。 也就是说&#xff0c;HTML被直接硬编码在 Python代码之中。 def current_datetime(request):now datetime.datetime.now()html "<html><body>It is now %s.</body><…...

点云从入门到精通技术详解100篇-基于三维点云的工件曲面轮廓检测与机器人打磨轨迹规划(中)

目录 2.2.2 散乱点云滤波去噪 2.2.3 海量点云数据压缩 2.3 点云采集与预处理实验...

Mapper文件夹在resource目录下但是网页报错找不到productMapper.xml文件的解决

报错如下&#xff1a; 我的Mapper文件夹在resourse目录下但是网页报错找不到productMapper.xml。 结构如下&#xff1a;代码如下&#xff1a;<mappers><mapper resource"com/dhu/mapper/productMapper.xml" /> </mappers> 这段代码是在mybatis-co…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启&#xff0c;数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后&#xff0c;存在与用户组权限相关的问题。具体表现为&#xff0c;Oracle 实例的运行用户&#xff08;oracle&#xff09;和集…...

大话软工笔记—需求分析概述

需求分析&#xff0c;就是要对需求调研收集到的资料信息逐个地进行拆分、研究&#xff0c;从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要&#xff0c;后续设计的依据主要来自于需求分析的成果&#xff0c;包括: 项目的目的…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节&#xff0c;供应链协同管理在供应链上下游企业之间建立紧密的合作关系&#xff0c;通过信息共享、资源整合、业务协同等方式&#xff0c;实现供应链的全面管理和优化&#xff0c;提高供应链的效率和透明度&#xff0c;降低供应链的成…...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系&#xff0c;主要是分成几个表&#xff0c;用户表我们是记录用户的基础信息&#xff0c;包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题&#xff0c;不同的角色&#xf…...

【Oracle】分区表

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

有限自动机到正规文法转换器v1.0

1 项目简介 这是一个功能强大的有限自动机&#xff08;Finite Automaton, FA&#xff09;到正规文法&#xff08;Regular Grammar&#xff09;转换器&#xff0c;它配备了一个直观且完整的图形用户界面&#xff0c;使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...

代码随想录刷题day30

1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币&#xff0c;另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额&#xff0c;返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...

vulnyx Blogger writeup

信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面&#xff0c;gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress&#xff0c;说明目标所使用的cms是wordpress&#xff0c;访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...

Qemu arm操作系统开发环境

使用qemu虚拟arm硬件比较合适。 步骤如下&#xff1a; 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载&#xff0c;下载地址&#xff1a;https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...

关于uniapp展示PDF的解决方案

在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项&#xff1a; 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库&#xff1a; npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...