鉴源实验室 | DoIP协议网络安全攻击
作者 | 付东杰 上海控安可信软件创新研究院工控网络安全组
来源 | 鉴源实验室
社群 | 添加微信号“TICPShanghai”加入“上海控安51fusa安全社区”
01
背 景
随着科技的迅猛发展,汽车行业正经历着前所未有的数字化变革。现代汽车中使用70多个电子控制单元(ECU),而且这个数字仍在上升[1]。在这场数字化革命中,诊断通信过程协议(Diagnostic communication over Internet Protocol,简称DoIP)崭露头角,成为汽车制造商和维修服务提供商之间进行远程诊断和维修的核心通信工具。DoIP协议的重要性在于它使汽车制造商能够通过互联网连接到汽车的电子控制单元(ECU),实时监测和远程维修车辆,为车主提供更加高效和方便的服务。然而,随着DoIP的普及,网络安全威胁也在日益增多。本文将探讨DoIP协议的基本原理,并研究可能的攻击方式,以及如何采取措施保护现代汽车免受潜在威胁。
02
DoIP协议
DoIP协议是一种关键的汽车诊断和通信协议,能够高效传输大量数据,提供快速响应,并支持远程诊断,其在ISO13400[2-5]标准中定义。这一标准不仅定义了DoIP协议本身,还涵盖了开放系统互连基本参考模型(OSI)的第一层到第四层,包括了Ethernet、IP及其他协议的使用细则。DoIP协议并不是一个完整的诊断协议,而是一种扩展传输协议。它负责诊断数据包的传输,而诊断服务仍由专门的诊断协议(如KWP2000协议和UDS协议)规定和说明。DoIP协议的存在为现代汽车系统的高级诊断和通信提供了强有力的支持,确保了兼容性和一致性,使其能够有效地在汽车领域中运行。

如下图2.2所示为DoIP系统车辆网络架构示意图,分为内部网络和外部网络。这两个部分之间通过两组线束进行信息交互。一组是用于数据传输的以太网线,另一组是用于激活诊断功能的激活线。一般来说,在工程师或者售后人员控制下的网络节点被称为外部测试设备(External Test Equipment),外部测试设备向车辆发送诊断请求,然后等待被诊断车辆的响应。但是在智能网联汽车丰富的使用场景中,诊断测试设备可能出现布置在车辆内部的情况,对车辆进行诊断,如OTA技术和远程诊断,在这些使用场景中,诊断测试设备会作为车辆节点或将此功能集成在其他节点中。ISO13400标准对DoIP系统中不同作用的节点进行了分类,这些分类包括:
1)DoIP实体(DoIP Entity):DoIP实体是实现DoIP协议的网络节点,例如DoIP节点或DoIP网关。
2)DoIP网关(DoIP Gateway):DoIP网关是一个网络节点,它实施DoIP协议,从而提供对其自身及其连接的车辆子网的ECU的访问。
3)DoIP节点(DoIP Node):DoIP节点是一个网络节点,该节点实施DoIP协议以提供对其自身的访问,但不将DoIP协议数据路由到车辆子网。
4)DoIP边缘节点(DoIP Edge Node):DoIP边缘节点是连接ISO 13400-3中定义的以太网激活线的节点。

DoIP(Diagnostic communication over Internet Protocol)协议崭露头角,作为一种以太网诊断软件架构的中间件,它不仅重新定义了车辆的诊断通信方式,还提供了一系列关键功能,以确保车辆系统的稳定性、安全性和可靠性:
1)车辆发现
车辆发现是DoIP协议的关键功能之一。它用于检测目标车辆中的ECU是否在线。诊断仪发送广播式的车辆发现报文,所有网络中的ECU都会响应并提供自身的身份信息。通过分析这些响应,诊断仪可以确定在线的ECU,并对其进行分类。
2)路由激活
DoIP协议中的“路由激活”与传统网关的“路由”不同,它指的是诊断仪与被诊断节点之间的报文传输。在与外部测试仪建立通信连接之后,必须发送路由激活请求。此请求需要DoIP节点验证,以确保合法性。这个过程还包括了DoIP节点对外部诊断仪的安全认证,其中ECU开发人员可以自定义安全认证算法,以阻止非法诊断仪对ECU的访问。
3)诊断仪在线监测
DoIP诊断要求预先建立与ECU的通信连接,即TCP socket。因为建立socket连接会占用内存资源,所以连接数量是有限的。因此,ECU在设计阶段会定义支持的并行连接的数量。如果并行连接达到上限,将无法建立新的诊断通信连接。为防止无效占用连接通道,设计了诊断仪在线监测机制。DoIP节点会定期向现有的连接通道发送在线监测请求,如果连接通道未收到诊断仪的响应,则将复位该连接,以待新的诊断仪接入。
4)节点信息
节点信息包含了节点的属性,例如支持的并行诊断仪连接数量、可接受的诊断报文长度以及当前节点的电源状态。这些信息在诊断通信前进行检查,以确保后续的诊断通信不受外部因素的干扰。
5)诊断通信
作为DoIP协议的核心功能,诊断通信负责诊断报文的传输。每个诊断报文包括:发送方的逻辑地址(SA)、接收方的逻辑地址(DA)以及诊断数据。在DoIP网络中,DA的作用类似于CAN总线网络中的CANID,用于寻址目标ECU以进行诊断,诊断过程如图2.3所示。

DoIP协议的五大功能共同促成了基于车载以太网的高速诊断服务,其允许更高速率的数据传输,从而提高了车辆诊断的效率。如图2.4所示为一个完整的DoIP会话流程图,其中涉及四个关键端口号:UDP_DISCOVERY(13400)、UDP_TEST_EQUPMENT(49152-65535)、TCP_DATA(13400)和动态分配(49152-65535)。诊断会话的建立经过以下步骤:
1)物理连接:诊断仪与车辆建立物理连接。
2)IP地址配置:配置IP地址,以确保诊断仪和车辆都能够正确地通信。配置的方法有两种,DHCP和Auto-configuration。当DHCP配置未成功时,会触发Auto-configuration。在DHCP配置流程中,通常由外部诊断仪扮演DHCP Server角色。
3)车辆发现:车辆发现是通过UDP进行数据传输的关键步骤。DoIP实体主动发送三次Vehicle announcement message,以宣告其存在。若未收到DoIP实体发送的Vehicle announcement message,诊断仪将主动发送Vehicle identification request请求,DoIP实体接收后会发送Vehicle identification response响应。
4)TCP连接:车辆识别后,诊断仪会发起TCP同步,并与DoIP实体建立TCP连接。
5)路由激活:TCP连接建立后,诊断仪发送Routing activation request,DoIP实体接收并响应Routing activation response,从而建立DoIP逻辑连接。
6)诊断服务传输:接下来,可以进行诊断服务的传输。诊断仪发送Diagnostic message request,DoIP实体接收并响应Diagnostic message response。DoIP message ACK表示DoIP层级的确认报文(0x8002、0x8003等)。

03
DoIP攻击
DoIP协议为汽车行业带来了巨大的好处,但它也引入了潜在的风险,包括中间人攻击、拒绝服务攻击、数据篡改等威胁,这些威胁可能导致数据泄露、车辆失控和用户隐私侵犯等严重后果。
中间人攻击是一种网络攻击,攻击者通过拦截无线网络通信或入侵车辆网络的中间设备等方式来截获DoIP通信,截获通信后通过伪装成合法的通信方来欺骗车辆或设备,在伪造通信的过程中,攻击者可以查看、修改、插入数据。在攻击过程中,攻击者可以通过访问车辆传输的敏感信息,如车辆位置,车主信息,车辆性能等数据,从而导致用户的数据泄漏;攻击者可以通过伪造、修改诊断数据,导致错误的诊断结果,从而使维修人员采取不必要的维修操作;攻击者通过执行一些恶意的维修操作,如禁用车辆的部分功能或危害车辆的性能,从而威胁驾驶员的人身财产安全。中间人攻击是DoIP协议所面临的关键威胁之一,因此必须采取适当的安全措施,以防止这种类型的攻击并保护车辆数据和通信的安全。
针对中间人攻击可以采用以下防范措施:
1)数据加密:使用加密算法保护DoIP通信,以确保数据的机密性和完整性。
2)身份验证:双方的身份验证是防范中间人攻击的关键,使用数字证书和身份验证来保证通信方的合法性。
3)网络监控:实施网络监控和入侵检测系统,以及时检测可疑活动和中间人攻击的迹象。
拒绝服务攻击旨在使目标系统、网络或服务无法正常运作,从而导致服务不可用。在DoIP协议的应用场景中,攻击者通过DoIP通信流量防洪、恶意DoIP消息注入、阻塞DoIP会话等多种攻击手段来引发拒绝服务攻击,从而严重干扰DoIP通信和车辆维修等操作,从而导致车辆无法进行远程诊断或维修,严重的话会引发系统崩溃,从而对人身财产安全造成威胁。因此必须采取有效的防范措施,以确保系统的可用性和稳定性。
针对拒绝服务攻击可以采用以下防范措施:
1)流量过滤:使用流量过滤和防火墙技术,识别和过滤出现在DoIP通信中的恶意流量。
2)负载均衡:采用负载均衡技术,分散流量负载,减轻单一点的压力,提高系统的弹性。
3)引入反向代理服务器:作为DoIP通信的中间层,处理和缓解攻击。
4)容灾计划:建立容灾计划,以便在遭受拒绝服务攻击时迅速恢复服务。
数据篡改攻击则是通过试图在传输过程中修改、插入或删除数据,以操纵信息,导致错误的诊断结果或损害车辆的功能,在DoIP协议的应用场景中,攻击者通过中间人攻击、嗅探网络流量或其他方式实现拦截DoIP通信中的数据包,以获得访问数据的机会。一旦获得数据,攻击者会修改、插入或删除其中的信息, 然后重新传输已篡改的数据,使其看起来像是合法的数据,车辆制造商或维修服务提供商接收到篡改的数据后,可能依赖于这些数据来进行诊断和维修操作。由于数据已被篡改,可能会导致错误的诊断结果和错误的维修操作,影响车辆功能和安全性。
针对数据篡改攻击可以采用以下防范措施:
1)数据完整性验证:使用数据完整性检查技术,确保数据在传输过程中没有被篡改。
2)加密数据传输:采用强大的数据加密措施,以保护数据的机密性和完整性,使攻击者无法修改数据。
3)数字签名:使用数字签名验证数据的真实性,确保数据未经篡改。
4)访问控制:实施访问控制措施,限制对车辆数据的访问,并确保只有授权用户才能对数据进行修改。
参考文献:
[1] Staron M. Automotive software architectures[M]. Cham, Switzerland: Springer, 2021.
[2] ISO. 2011. ISO 13400–1:2011, Road Vehicles – Diagnostic Communication over Internet Protocol (DoIP): Part 1: General Information and Use Case Definition. https://www.iso.org/obp/ui/#iso:std:iso:13400:-1:en
[3] ISO. 2016. ISO 13400–3:2016, Road Vehicles – Diagnostic Communication over Internet Protocol (DoIP): Part 3: Wired Vehicle Interface Based On IEEE 802.3. https://www.iso.org/obp/ui/#iso:std:iso:13400:-3:ed-2:v1:en
[4] ISO. 2016. ISO 13400–4:2016, Road Vehicles – Diagnostic Communication over Internet Protocol (DoIP): Part 4: Ethernet-Based High-Speed Data Link Connector. https://www.iso.org/obp/ui/#iso:std:iso:13400:-4:ed-1:v1:en
[5] ISO. 2019. ISO 13400–2:2019, Road Vehicles – Diagnostic Communication over Internet Protocol (DoIP): Part 2: Transport Protocol and Network Layer Services. https://www.iso.org/obp/ui/#iso:std:iso:13400:-2:ed-2:v1:en
相关文章:

鉴源实验室 | DoIP协议网络安全攻击
作者 | 付东杰 上海控安可信软件创新研究院工控网络安全组 来源 | 鉴源实验室 社群 | 添加微信号“TICPShanghai”加入“上海控安51fusa安全社区” 01 背 景 随着科技的迅猛发展,汽车行业正经历着前所未有的数字化变革。现代汽车中使用70多个电子控制单元&#x…...

腾讯云服务器新用户购买优惠多少钱?腾讯云新用户购买优惠
对于新用户来说,腾讯云服务器更是提供了一系列的优惠活动,让你在购买时享受到更多的优惠。那么,腾讯云服务器新用户购买优惠多少钱呢?接下来,让我们一起来了解一下。 腾讯云双十一领9999代金券 https://1111.mian100.…...

超全整理,Pytest自动化测试框架-多进程(pytest-xdist)运行总结...
目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 平常我们功能测试…...

jbase实现通用码表
没有通用码表的体系是不完美的,当年我用C#能实现的通用码表,现在在java一样的实现了,通用码表对提高开发效率和降低开发成本的作用巨大,开发可以专注写业务,而不必被太多的维护界面束缚。进而体现在产品竞争力上面&…...

工业镜头中的远心镜头与普通镜头的光路
普通镜头: 主光线与镜头光轴有角度,工件上下移动时,像的大小有变化。 FOV>镜头前端直径。 物方远心镜头: 物方主光线平行于光轴,物距发生改变时,像高不会发生改变,测得的物体尺寸大…...

【Qt之QWizardPage】使用
介绍 QWizardPage类是向导页面的基类。 QWizard表示一个向导。每个页面都是一个QWizardPage。当创建自己的向导时,可以直接使用QWizardPage,也可以子类化它以获得更多控制。 页面具有以下属性,由QWizard呈现:a title,…...

自动化测试,5个技巧轻松搞定
想要在质量保证团队中赢得核心?当你组建你的网络应用时要记住这些技巧,可以变得更容易分析并快速创建更多准确可重复的自动化测试。 1.歧义是敌人 尽可能使你的代码具体化。当然,你已经遵循了W3C标准,对吗?以下有三件…...
EasyWeChat调用企业微信接口获取客户群数据
use EasyWeChat\Factory; use fast\Http;$config [corp_id > Config::get(site.corp_id),agent_id > Config::get(site.agend_id), // 如果有 agend_id 则填写secret > Config::get(site.agent_secret),// 指定 API 调用返回结果的类型:array(default)…...

sql 左联 右联
...
k8s中的端口hostPort、port、nodePort、targetPort
hostPort:apiVersion: v1 kind: Pod metadata:name: tomcat spec:containers:- name: tomcatimage: tomcat:8.5ports:- hostPort: 8081containerPort: 8080protocol: TCPhostPort 类似docker -p 参数做的端口映射,将容器内端口映射到宿主机上(hostPort), 在k8s中&am…...

自动发微博脚本工具,可批量定时发送,按键精灵完全开源版
就跟标题上面讲的,软件是我之前开发好的,所有功能都能用,是按键精灵的脚本,只是单设备操作,也可以在模拟器下面操作,UI代码方面都设计的很完整,我这边就干脆分享出来给大家用,不用繁…...

2023版Idea创建JavaWeb时,右键new没有Servlet快捷键选项
问题:右键时,没有创建servlet的快捷键,如下图: 解决方法: 1.打开idea,点击File>settings(设置),进入settings页面,如下 从上图中的Files选项中没看到有servlet选项,…...

数据结构(c语言版本) 二叉树的遍历
要求 实现二叉树的创建,并输入二叉树数据 然后先序遍历输出二叉树、中序遍历输出二叉树、后序输出二叉树 输出二叉树的深度、二叉树的叶子结点 例如二叉树为: 该二叉树的先序遍历结果为: A B D C E F 该二叉树的中序遍历结果为:…...

Django 配置 Email Admin 详细指南
概要 Django 是一个高级的 Python Web 框架,它鼓励快速开发和清洁、实用的设计。当你正在开发一个 Django 项目时,监控网站的运行情况是非常必要的。Django 提供了一个功能强大的 admin 界面,但同时也可以通过配置 email admin 来获取网站的…...

Apache阿帕奇安装配置
目录 一、下载程序 1. 点击Download 2. 点击Files for Microsoft Windows 3. 点击Apache Lounge 4. 点击httpd-2.4.54-win64-VSI6.zip 5. 下载压缩包 6.解压到文件夹里 二、配置环境变量 1. 右键我的电脑 - 属性 2. 高级系统设置 3. 点击环境变量 4. 点击系统变…...

时间序列预测实战(十六)PyTorch实现GRU-FCN模型长期预测并可视化结果
往期回顾:时间序列预测专栏——包含上百种时间序列模型带你从入门到精通时间序列预测 一、本文介绍 本文讲解的实战内容是GRU-FCN(门控循环单元-全卷积网络),这是一种结合了GRU(用于处理时间序列数据)和FCN(全卷积网络…...

如何提升软件测试效率?本文为你揭示秘密
在软件开发中,测试是至关重要的一个环节。它能帮助我们发现并修复问题,从而确保我们提供的软件具有高质量。然而,测试过程往往费时费力。那么,有没有方法可以提升我们的软件测试效率呢?答案是肯定的。下面,…...
参数估计和非参数估计
一、参数估计 参数估计是统计学中的一个重要概念,它涉及到使用样本数据来估计总体参数的过程。在统计学中,总体是指研究对象的整体集合,而样本是从总体中抽取的部分元素。 参数估计有两种主要方法:点估计和区间估计。 点估计&am…...

Apache Airflow (八) :DAG任务依赖设置
🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹…...
使用 com.jacob.activeX 库实现 Word 到 PDF
使用 com.jacob.activeX 库实现 Word 到 PDF 的转换涉及到使用 Java 和 Microsoft Office 的 COM 自动化。JACOB(Java COM Bridge)库提供了一个桥接器,允许 Java 代码通过 COM(组件对象模型)与 Windows 应用程序&#…...

TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
解锁数据库简洁之道:FastAPI与SQLModel实战指南
在构建现代Web应用程序时,与数据库的交互无疑是核心环节。虽然传统的数据库操作方式(如直接编写SQL语句与psycopg2交互)赋予了我们精细的控制权,但在面对日益复杂的业务逻辑和快速迭代的需求时,这种方式的开发效率和可…...

ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...
是否存在路径(FIFOBB算法)
题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...

分布式增量爬虫实现方案
之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面,避免重复抓取,以节省资源和时间。 在分布式环境下,增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路:将增量判…...

Docker 本地安装 mysql 数据库
Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker ;并安装。 基础操作不再赘述。 打开 macOS 终端,开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...

云原生安全实战:API网关Kong的鉴权与限流详解
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关(API Gateway) API网关是微服务架构中的核心组件,负责统一管理所有API的流量入口。它像一座…...