基于时序分析的CAN信号逆向

AI助手已提取文章相关产品:

一种增强的CAN数据载荷逆向工程方法

摘要

近年来,车辆中安装了大量电子元件,为驾驶员和乘客提供了更高的安全性和便利性。这些电子元件构建了一个车载网络,用于内部共享车辆的相关状态信息。随着现代车辆的计算机化程度不断提高,汽车网络安全威胁的潜在风险也随之增加,这一点已通过多次汽车黑客攻击演示得到明确证实。利用控制器局域网(CAN)——汽车行业车载网络通信事实上的标准协议,这些汽车黑客攻击演示通过注入关键的CAN报文来控制车辆功能。为了应对这一安全问题,汽车制造商转而对CAN数据库(即DBC格式文件)进行保密处理,其中指定了CAN数据载荷中的信号信息。然而,人们逐渐认识到,该策略并不能完全防止车辆网络遭受网络攻击。相反,由于研究人员可获取的信息有限,深入的汽车安全研究受到了严重阻碍。例如,汽车入侵检测系统(IDS)能够在发生车辆入侵时进行识别和报警,该技术是汽车网络安全研究的主要研究方向之一。对于分析CAN通信流量的汽车入侵检测系统而言,DBC格式文件中的信息能显著提高检测准确性。然而,迄今为止大多数IDS技术都是在缺乏保密的CAN数据库信息的情况下独立开发的,因此无法有效缓解威胁至令人满意的水平。本文提出了一种增强的方法,用于识别DBC格式文件中指定的CAN数据载荷内的信号边界。与基于总比特翻转率的现有方法不同,我们的方法分析的是位翻转时间序列而非总比特翻转率,从而能够更清晰地识别信号边界。本文使用一个公开可用的DBC格式文件OpenDBC作为参考,结果表明我们的方法优于现有方法。

索引词

汽车安全,CAN DBC格式文件,控制器局域网(CAN),逆向工程。

引言

汽车行业的自动驾驶功能和联网车辆正在为驾驶员和乘客提供更优质的行驶体验。为了实现这些出色的功能,车辆中安装了多个电子控制单元(ECUs),以构成车载网络。尽管计算机系统提升了安全性和便利性,但汽车网络安全威胁也在不断上升。近年来,许多研究揭示了汽车黑客攻击演示的相关发现,证实了这一点[1]–[5]。

控制器局域网(CAN)协议是车载网络通信的事实标准,大多数电子控制单元都连接于此,并共享有关车辆状态的关键信息。这些攻击演示通过向车载CAN网络注入有意义的CAN消息,实现了对某些车辆功能的电子劫持。随着车辆越来越多地通过复杂的外部网络(如互联网或蜂窝网络)实现连接,现实世界中的汽车黑客攻击尝试预计将持续增加。

为了防止攻击者找到控制关键命令的CAN报文,汽车制造商将CAN数据库(即DBC格式文件)中的信息保密。表面上看,这一政策似乎提供了严密防护,但由于CAN通信流量未加密,已证明可以推断出部分CAN数据库(DB)信息。这一漏洞的危险性进一步加剧:如今,任何人都可以通过互联网上的普及工具(如YouTube [6])轻松学习如何分析CAN通信流量。与防范网络攻击的初衷相反,该政策反而为安全研究人员设置了巨大障碍,导致他们只能基于不完整的信息开发后续的安全协议。受此直接影响的一个领域是汽车入侵检测系统(IDS)技术,这也是汽车安全研究中的一个重要方向。[7]–[14]。汽车入侵检测系统通过分析CAN通信流量来检测车载入侵行为,但遗憾的是,迄今为止所有此类技术都是仅基于公开信息开发的。因此,这些系统的安全性提升有限,无法完美检测针对车载CAN网络的复杂攻击。除汽车入侵检测系统外,模糊测试作为一种自动化软件测试技术,近年来也被应用于CAN总线 [15],[16]。模糊测试通过向目标系统输入无效或随机数据,在ECU软件中发现意外漏洞。然而,由于DBC格式文件中的信息未公开,目前尚无高效方式对电子控制单元实施模糊测试。此外,在缺乏DBC文件的情况下,进行暴力破解或随机搜索格式文件无法有效定位漏洞,因为可能的输入用例数量过于庞大。

为了缓解这一问题,一些研究尝试重建DBC格式文件 [17]–[19]。这些尝试可分为侵入式和非侵入式两类方法。侵入方式涉及拆卸车辆以物理访问电子控制单元并分析其固件(即逆向工程)[19]。由于侵入方式可被任何预防措施(例如禁用调试端口)轻易阻止,因此非侵入方式在重建过程中可能更受青睐。因此,在本研究中,我们专注于一种非侵入方式,仅利用CAN流量轨迹来分析DBC格式文件[17],[18]。在我们的研究之前,马尔科维茨和伍尔[18]首次提出了一种方法,用于发现CAN报文数据载荷中传递的具有语义意义的信号。然而,该研究中的评估并不充分,因其基于模拟的CAN流量轨迹而非真实世界的轨迹。此后,马尔凯蒂和斯塔比里[17]表明,[18]方法在真实的CAN通信流量上无法正确工作,并提出了一种名为READ的新方法,该方法基于数据载荷中每个位位置的总比特翻转率。

在我们的调查过程中,我们也发现,尽管READ方法在分析真实世界CAN流量轨迹方面有所改进,但在识别信号边界方面仍存在局限性。READ[17]方法的准确性取决于CAN通信流量的测量方式,这意味着其在更广泛的应用中不具备实用性。本文中,我们总结了READ[17]的关键要素,并提供一个反例,以展示READ无法正确识别信号边界的情况。随后,我们提出了一种增强的方法来识别CAN数据载荷中的信号边界。我们的核心思想是为单个位位置创建位翻转率时间序列,并分析两个连续位位置之间的相关性。我们证明,在借助公共领域DBC格式文件OpenDBC作为信号边界参考的情况下,我们的方法在识别信号边界方面优于当前最先进的READ方法。我们贡献的详细讨论如下。

我们的贡献

利用来自实际车辆的数据集,我们展示了若干示例,以说明READ无法正确识别信号边界的情况。与READ不同,我们的方法分析的是位翻转率时间序列而非总比特翻转率,因此我们的方法能够正确识别出READ无法识别的信号边界。我们的方法使得从车辆中轻松测量数据集成为可能。分析总比特翻转率的方法会因数据集的测量方式不同而产生不同的结果。例如,某个功能仅在短时间内被激活,相应信号的总比特翻转率几乎为零,因此该信号将无法被READ识别。

相关工作

在本节中,我们介绍相关研究工作,以帮助更好地理解在关于CAN数据库信息有限的情况下,汽车网络安全研究是如何开展的。

对现代车辆的网络攻击是通过在CAN总线网络{v1}–{v2}中注入伪造和恶意消息来实施的。为了防止这些攻击,一些研究致力于通过应用加密协议[21],[22]来提高CAN总线通信的安全性。然而,这些方法需要修改现有的ECU软件,并且会对CAN通信产生负面影响,例如增加CAN总线负载或导致低响应时间。因此,汽车入侵检测系统迅速成为一种有前景的方法,填补了这一空白,因为这些框架不需要对现有车辆组件进行任何修改。汽车入侵检测系统的自适应特性使其能够轻松应用于实际车辆的CAN总线上,因此针对汽车入侵检测系统的方法已被广泛研究[7]–[14]。随后,[7],首次提出了车载入侵检测的概念,并展示了入侵检测模式的特征。由于CAN通信的正式规范属于保密的,[7]中提到的所有特征均为公开可访问的信息。因此,大多数现有研究无法完全分析CAN通信流量,因为无法完全获取完整的DBC格式文件信息。接下来,我们将描述研究人员如何仅利用这些有限信息开发相应方法。

最简单的方法是检查CAN总线上使用的合法CAN ID [8]。由于合法CAN ID的数量相对较少(通常少于100个),因此带有无效CAN ID的恶意CAN消息可以被轻松检测到。然而,这种方法也容易被规避,攻击者可通过使用有效CAN ID和伪造的数据载荷注入消息来绕过检测。

传输周期也是车载入侵检测技术中使用的一种特征。由于大多数CAN报文在CAN总线上是周期性传输的,恶意CAN消息的注入会明显增加传输频率 [9],[10]。但基于传输频率的方法无法检测到能够成功模仿原始消息频率的高级对手所进行的注入攻击。事实上,格林伯格 [23] 成功禁用了基于消息频率的预防措施,并成功发送了恶意CAN消息,导致车辆出现故障 [11]。此外,在实际应用中,CAN消息的传输周期并非恒定不变,从真实CAN通信流量中提取的周期性CAN传输频率常常表现出意外高的变异性,从而导致不可接受的错误率。

为了解决基于报文频率的车载入侵检测系统框架的局限性,研究人员通过分析行为特征来检测车辆入侵 [11]– [14]。首先,可根据电子控制单元(ECU)独特的行为特征对其进行准确识别。若某个发送者的CAN ID与已识别的ECU之间存在无效匹配,则被视为异常。穆尔瓦伊和格罗扎伊 [14]提出了一种方法,用于检测由ECU(即CAN控制器)生成的CAN消息的电气特性。然而,该方法无法应用于实际的CAN总线,因为作者未考虑多个ECU同时传输CAN消息的情况。在仲裁决策过程中,多个ECU会同时产生电信号,导致各自的独特特征相互混合。随后,Choi 等[12]提出了一种检测CAN消息电气特性以识别ECU的方法。与[14],相比,Choi 等[12]设计了一种考虑仲裁决策过程的方法,从而实现了对ECU的正确识别具有高精度的电子控制单元。然而,该方法需要使用扩展帧格式以启用额外的19位扩展标识符字段,而实际车辆中通常采用标准格式。这意味着他们的方法需要修改现有电子控制单元的固件,在实践中是不可行的。相比之下, Cho和Shin [11]提出了一种无需修改现有电子控制单元的方法。为了识别电子控制单元,作者利用了每个电子控制单元都具有唯一时钟偏移的特性,即使这些电子控制单元在相同周期内发送消息也是如此。不幸的是,正如[24],中所提出的,通过模拟电子控制单元时钟偏移可以规避该方法,其中已验证了时钟模拟的有效性。这表明攻击者可能注入恶意CAN消息而不被检测到。最近,Choi et al. [13]和Kneib et al.[25]分别提出了基于CAN报文电气特性的增强型车载入侵检测系统。然而,这些方法需要特殊设备来测量CAN消息的电信号。此外,嵌入式资源受限设备必须从大量数字化样本中提取特征,显著增加了计算开销。

尽管已开展了大量研究来开发车载入侵检测技术,但上述所有研究的共同主要缺点是,这些方法的设计仅基于可利用公开信息(如通用CAN流量追踪)分析的非常有限的特征。例如,消息到达时间戳是入侵检测系统框架中最常用的特征,但它仅能检测简单攻击。因此,大多数拥有此类有限信息的入侵检测系统框架很可能无法识别高级攻击,从而导致现有入侵检测系统框架错误率较高。显然,如果能够获取CAN报文的完整正式规范,包括数据载荷中的信号列表及所有信号边界(通常包含在DBC格式文件中),这一问题便可得到缓解。然而,目前只有汽车制造商才能访问这些信息。

除了车载入侵检测技术外,CAN消息的语义在利用CAN通信流量进行汽车取证方面也具有极高的应用价值,可用于重建碰撞前车辆的状态。通过分析事故发生时测量的CAN通信流量,可以轻松识别出根本原因,从驾驶员失误到车辆功能故障或网络攻击。为此,Nilsson和 Larson [26]首次提出了一套针对汽车车载网络中网络攻击的数字取证调查要求。此后,Mansor et al.[27]提出了一种可靠且安全的隐私保护机制,高效地构建了专门用于取证数据收集和存储的车载日志系统。这些在汽车取证领域的研究工作帮助其他研究人员更好地理解CAN消息的语义。从对现有研究的初步了解可知,如[2],[3]和[28]中所提出的,可以通过侵入式逆向工程和人工分析获得部分关于CAN消息的语义和语法信息。

本文提出了一种独特的算法,用于自动逆向解析在CAN消息中传输的信号及其边界,这将对汽车安全研究产生显著贡献。我们详细阐述了研究动机

示意图0

本研究以及现有方法[17],[18]在下一节中的局限性。

问题描述

为了解决车载CAN总线的安全相关问题,许多研究人员尝试通过分析CAN通信流量来开发安全方法[9],[11]– [13],[29]。然而,由于DBC格式文件的保密性质——这一长期由汽车制造商维护的标准——这些尝试未能产生全面的分析结果。在学术研究中,该政策给CAN总线的进一步研究带来了重大障碍。此外,旨在减少网络攻击的效果尚未实现。相反,一些汽车黑客攻击演示即便缺乏CAN通信流量的正式规范知识,也已证明是成功的。实际上,该政策仅仅阻碍了汽车安全研究的进步。

另一方面,模糊测试技术通过向目标系统提供无效或随机数据作为输入,最近已被应用于CAN总线[15],[16]。理论上,对CAN通信流量的模糊测试分析可作为一种自动化软件测试技术,用于发现ECU软件中的意外漏洞。然而,由于DBC格式文件中的信息未公开,目前尚无高效方法对电子控制单元执行模糊测试。尽管在缺乏DBC格式文件信息的情况下仍可进行暴力破解或随机搜索,但由于输入用例数量庞大,这种方法在查找漏洞时同样效率低下。

尽管存在这种有问题的保密政策,安全研究人员仍设法在缺乏精确信息的情况下开展了有限的研究,其中一些研究甚至尝试重建DBC格式文件[17]–[19]。如前所述,READ [17]是一种最先进的框架,可识别分配给CAN数据载荷的信号边界。然而,我们发现READ的准确性取决于CAN通信流量的测量方式,这意味着该方法无法在通用或广泛的应用场景中有效工作。我们对READ进行了总结,并提供了一个反例,展示了READ无法正确识别信号边界的情况。

如图1所示,READ计算特定CAN ID的数据载荷在每个位位置上的总比特翻转率。基于该总比特翻转率,READ扫描连续位的对

示意图1

图2显示了我们从实际车辆(2014款起亚索尔)的真实CAN总线测量得到的每一位的位翻转率。根据READ算法,信号及其边界应如红色图所示,但实际的信号及其边界如蓝色图所示。与[17]预期不同的是,校验和信号的位翻转率并未按照正态分布分布。此外,用于传感器值的单个信号可能被划分为两个不同的信号。

背景

在本节中,我们提供了一些背景信息,以帮助更清晰地理解我们的方法。

车辆内部控制器局域网

为了驾驶员的安全和便利,车辆的许多功能都实现了电子控制。现代车辆中安装了多个电子控制单元(ECU)来运行这些数字化功能。电子控制单元会周期性地测量车辆的状态,并根据这些测量值对某些功能进行控制。例如,发动机ECU配备有传感器,用于检测加速踏板是否被踩下。根据测量结果,该ECU可自行启动发动机,或向其他ECU发送消息以启动发动机。这种自动化控制过程使车辆能够更高效、更安全地运行,并且随着时间推移,相关技术正在不断发展。事实上,如今豪华车型通常安装有70个电子控制单元 [5]。一组电子控制单元构成车载网络,它们通过该网络进行通信,并可根据功能的相似性将车载网络划分为若干子网络。用于电子控制单元之间通信的

示意图2

在车载网络中,需要一种协议,例如LIN、控制器局域网或FlexRay。其中,CAN协议应用最为广泛,因为它能够在电子控制单元之间提供有界的传输延迟。相比之下,其他协议通常用于信息娱乐系统或非安全关键系统的电子控制单元。

CAN协议

在CAN标准中定义了两种不同的帧格式:标准帧格式(在CAN 2.0A和CAN 2.0B中描述)和扩展帧格式(仅在CAN 2.0B中描述)。标准帧格式支持11位标识符,而扩展帧格式支持29位标识符,该标识符由11位标识符和18位扩展标识符组成。通常情况下,车辆中的电子控制单元数量少于211,,它们使用标准帧格式进行通信。在车载CAN网络中,电子控制单元通过四种不同类型的帧共享数据:数据帧、远程帧、错误帧和过载帧。我们注意到,应区分CAN帧格式与CAN帧类型。电子控制单元传输的常见CAN报文为数据帧类型。如图3所示,一个CAN数据帧包含一些字段,例如标识符(ID)、数据长度码(DLC)、数据和循环冗余校验(CRC)。标识符字段指的是发送器的标识符,而不是接收器的标识符。该标识符代表其优先级以及特定功能,例如发动机温度和节气门开度角。通常假定电子控制单元不共享相同的标识符,并且也假定一个电子控制单元具有多个标识符。通常,汽车制造商会投入大量努力以确保哪些标识符对应哪些功能的信息保密。

数据载荷字段结构

CAN数据载荷至少包含一个信号。信号是由电子控制单元(ECU)传输的一条信息,例如车速。信号的长度和数量随CAN ID而变化,并在对应车辆的DBC格式文件中指定。在没有DBC格式文件的情况下,我们设计的方法通过分析CAN通信流量来识别CAN数据载荷中的信号数量及其长度。此外,信号不仅包含信息,还包含其他类型的信息[17],[18],,如下所示。

物理值 是一种信号,其值表示车辆的特定物理状态,例如车轮速度或方向盘转角。电子控制单元配备有多个传感器,用于测量车辆状态,并根据测量值对车辆功能进行电控。因此,大量用于物理值的信号通过车载CAN网络传输。

计数器 是一种信号,其值相对于前一条消息的计数器总是递增一。计数器能够实现对发送特定CAN ID的CAN报文的电子控制单元进行活性验证。此外,接收电子控制单元能够

示意图3

识别已接收的CAN报文的重传。

校验和 是包含数据载荷校验结果的信号。通常,校验和用于检测传输错误。尽管循环冗余校验(CRC)字段在CAN数据帧中已标准化,但一些制造商仍在其车辆的CAN数据载荷中设计了额外的校验和字段,以提供更可靠的CAN通信。

未使用/常量 是指不发生变化的信号。根据DBC格式文件规范[30],,信号的最大值和最小值可以相同,这意味着该信号为常量。此外,数据载荷中的某些位可能被指定为未使用字段。由于我们的方法最初是基于位翻转率来识别信号的,因此无法区分这两种情况。我们将这两种不同类型视为相同。

图4给出了一个示例,展示了多种不同类型的信号,如物理值、计数器、校验和、未使用位和常量位。白色区域表示在DBC格式文件中未定义的未使用位。

我们的方法

我们的方法识别数据载荷中的信号边界,该数据载荷最多具有64位长度。当比特翻转率的趋势发生显著变化时,即可识别出信号边界。与现有方法READ [17],(使用总比特翻转率)不同,我们的方法通过将总CAN流量划分为多个固定大小子集来分析比特翻转率的时间序列。为了更清楚地说明如何识别信号边界,我们将本方法分为以下三个步骤进行阐述。

总比特翻转率

对于给定的CAN流量轨迹,我们的方法提取一个子集S ID ,对应于CAN ID。从一条CAN流量轨迹中得到的子集数量等于该CAN流量轨迹中不同CAN ID的数量。与READ不同,我们的方法仅利用总位翻转率来找到可进行进一步分析的位置。如第III节所述,总位翻转率在识别信号边界方面是不足的。

对于我们方法中的特定子集,第 i个数据载荷表示为Mi 。每个位位置的位翻转是从

算法1: 总位翻转率。

1: 过程 总位翻转率T:CAN通信流量
2: SID ←针对特定CAN ID的T的一个子集
3:对于 i ← 1到|SID| 执行
4:第Mi ∈ SID ← i个数据载荷
5: BFi ← Mi−1 ⊕ Mi
6: / BFi中的第 ki ∈{0, 1} k位 /
7: T otalBFk ← T otalBFk+ ki
8: T otalBFR ← T otalBF/ |SID|
9:返回 T otalBFR

两条连续的CAN消息。如果Mi−1中的第 k‐位为零(一),且 Mi中的第 k‐位为一(零),则第 k‐位的位翻转次数递增一。从Mi和 Mi−1计算出的每个位位置上的位翻转集合记为 BFi。BFi的 ki表示 Mi的第 k‐位是否从Mi−1发生位翻转。BFi按如下方式获得。对于 i ≥ 1, Mi ∈ SID,

BFi= Mi−1 ⊕ Mi, (1) 其中 M0= 0和 1 ≤ i ≤ |SID|。需要注意的是,每个 CAN报文在子集中具有相同的长度(即DLC),以确保按位操作的正确性。因此,第 k位上的总位翻转数T otalBFk以及第 k位上的总比特翻转率T otalBFRk可如下获得。

T otalBFk= |SID| ∑ i=1 ki (2)
T otalBFRk= T otalBFk / |SID| , (3)

其中ki ∈{0, 1}是 BFi的第 i位值。我们方法第一步的伪代码见算法1。

校验和/计数器信号识别

在控制器局域网数据载荷中,校验和与计数器都具有明显模式,可轻松识别信号边界。由于校验和是一种用于检测传输错误的信号,对于相同的数据载荷,其值应始终相同。我们的方法利用键值数据结构(也称为映射、字典或哈希)来判断数据载荷中是否使用了校验和。

计数器用于在发送器和接收器(或多个接收器)之间同步传输。通常,计数器信号始终递增一。因此,识别计数器信号较为容易。一旦信号未按递增一的规律变化,我们的方法将拒绝该信号边界作为计数器信号。此外,我们的方法会寻找位翻转率为一的位位置。一般情况下,位翻转率为一表示计数器的最低有效位(LSB)。校验和与计数器信号边界的伪代码见算法2。

物理值信号边界分析

与现有方法粗略确定物理值信号边界[17],[18],不同,我们的方法进行了额外的分析以识别精确的信号边界。我们的方法利用了比特翻转率的时间序列以及总比特翻转率。因为位翻转率会受到影响

示意图4

算法2: 校验和/计数器信号边界。

1: 过程校验和SID:控制器局域网通信流量的一个子集,T otalBFR: 总比特翻转率
2: csFrom ←find(T otalBFR> threscs)
3: csT o ← csFrom
4:当 (T rue) 时执行 5:对所有Mi ∈ SID执行
6: / 提取键和值 / 7: key ←获取键(Mi, csT o, csFrom)
8: val ←获取值(Mi, csT o, csFrom)
9:如果 hashT able[key]== null 那么
10: hashT able[key] ← val
11:否则如果 hashT able[key]!= val 那么
12: 如果 csT o< csFrom
13: / 校验和信号的边界 /
14: csT o ← csT o+ 1 15: 返回 [csT o csFrom] 16: else
17: 返回 null / 无校验和 /
18: csT o ← csT o−1 19:

20: 过程 计数器T otalBFR:总位翻转率
21: ctFrom ←find(T otalBFR== 1)
22:如果 ctFrom== null
23:返回 null / 无计数器 /
24: ctT o ← ctFrom 25:当(T rue)
26:如果 T otalBFR ctT o−1 ∗ 2== T otalBFRctT othen
27: ctT o ← ctT o−1 28: else
29: / 计数器信号的边界 /
30:返回 [ctT o ctFrom]

由于车辆的物理移动,它们不是恒定的。例如,当车辆加速时,相应的物理值会受到物理移动的影响。我们的核心思想是观察两个连续位的位翻转率是否呈现出相似的趋势。我们的方法还通过滑动窗口将子集 S ID进一步划分为多个子子集。我们用BFRk 表示第 k位位置上的位翻转率。图5展示了通过滑动窗口方式获得的总比特翻转率S ID 以及第 k位上的比特翻转率的时间序列示例。

我们精确识别信号边界的主要思路是分析位翻转率时间之间的相关性

算法3:物理值信号边界。

1: 过程PHYSICAL_VALUESID:一个子集 CAN通信流量,[csT o csFrom]:校验和信号 范围,[ctT o ctFrom]:计数器信号范围
2: setOfSig ← list()
3: setOfSig.add([csT o csFrom],[ctT o ctFrom])
4:< BFR1,…, BF RDLC> ← GetTimeSeries(SID)
5:对于 i ← 1到 DLC −1 执行
6: corr(i) ← GetCorrelations(BFRi, BF Ri+1)
7: sigT o ← 1 8: sigFrom ← sigT o
9:当 sigFrom< DLC 时执行
10:如果 sigFrom+ 1== csT o 那么
11: / 物理信号边界 /
12: setOfSig.add([sigT o sigFrom])
13: sigT o ← csFrom+ 1 14: sigFrom ← sigT o
15:如果 sigFrom+ 1== ctT o 那么
16: / 物理信号边界 / 17: setOfSig.add([sigT o sigFrom])
18: sigT o ← ctFrom+ 1 19: sigFrom ← sigT o
20:如果 corr(sigFrom)< threscorr 那么
21: / 物理信号边界 / 22: setOfSig.add([sigT o sigFrom])
23: sigT o ← sigFrom+ 1 24: sigFrom ← sigT o 25: else
26: sigFrom ← sigFrom+ 1 27:返回 setOfSig

两个连续比特的序列。如果两个连续位被分配给相同的物理值,则它们各自的位翻转率时间序列将呈现相似的趋势。也就是说,当一个位翻转率增加(或减少)时,另一个位翻转率也会随之增加(或减少)。然而,有一个条件是:即使较低有效位发生变化,较高有效位有时也不会改变。例如,某个特定信号重复进行加一和减一操作。在这种情况下,最低有效位(LSB)的位翻转率会很高,而最高有效位(MSB)则保持不变。我们的方法仅分析对应于 MSB位翻转率发生变化时的部分时间序列的相关性。我们方法最后一步的伪代码如算法3所示。

示意图5

评估

数据集描述

作为我们方法评估的参考,我们使用了公开可用的 OpenDBC [19]。如前所述,研究人员很难获得由汽车制造商保密的真实DBC格式文件。OpenDBC可以作为解决此问题的替代方案之一。此外,READ [17]也使用了 OpenDBC进行评估。我们采用了现代起亚通用规格。为了获取相应的数据集,我们从三辆均属于现代起亚汽车集团的车辆——起亚K5、现代伊兰特和捷尼赛思EQ900中测量了CAN消息。为了观察这些车辆中可能存在的长期变化,CAN消息的测量持续了1小时。

校验和信号识别

我们的方法通过使用哈希表来检查校验和是否满足条件,从而识别校验和信号。由于校验和通常用于检测传输错误,因此对于相同的载荷,其值必须始终保持一致。我们的方法搜索位翻转率超过0.3的点,并扩展其候选边界,直到满足校验和条件为止。当该条件无法再满足时,我们的方法将拒绝该校验和信号边界。在寻找高效校验和信号的过程中,我们还发现了一个有趣的特性:在我们的数据集中,校验和信号通常紧接在计数器信号之后,或位于载荷末尾。为了节省执行时间,我们在我们的方法识别校验和时增加了这一附加条件。表I显示了评估中使用的CAN ID列表及其校验和信号边界。我们的方法正确识别出与 OpenDBC中指定的相同边界。

相比之下,与我们方法不同的是,READ旨在基于总比特翻转率来识别校验和信号。READ方法无法正确识别校验和信号的原因在于,校验和信号的总比特翻转率并不总是以0.5的比率分布。根据这一结果,我们得出结论:我们的方法通常能够识别CAN消息中的校验和信号。

计数器信号识别

计数器信号具有一种明显模式,从中可以轻松识别边界。由于计数器信号递增一,其最低有效位总是从零(一)变为一(零)。此外,与前一个值之间的差值并且当前值始终为一。为了识别计数器信号,我们的方法会搜索总位翻转率为一的位置。从该位置开始,我们的方法扩展边界,直到满足计数器信号条件。READ和我们的方法在我们的数据集中均能完美识别计数器信号。表II显示了实验车辆中使用的CAN ID列表以及计数器信号的边界。图7显示了来自起亚K5的0x251、来自捷尼赛思EQ900的0x220以及来自现代伊兰特的0x387这三个CAN ID的总位翻转率示例。通过这些总位翻转率,可以大致看出计数器和校验和信号所在的位置。

物理值信号识别

通过分析每个位位置处的比特翻转率时间序列,我们的方法识别出用于表示物理值的信号边界。由于READ方法基于总比特翻转率来识别信号边界,因此其准确性会受到数据集采集时刻车辆状态的影响。即使两个不同的数据集来自同一车辆,它们的采集条件不同也会导致结果不同。如果一个数据集是在车辆怠速远多于行驶时测量的,而另一个数据集是在车辆运动远多于怠速时测量的,则 READ方法对这两个数据集将产生不同的结果。因此,为了让READ能够正确识别信号边界,车辆在测量期间应均衡地运行各项功能。这就是为什么在他们的评估中,大量CAN通信流量被用来操作车辆的所有功能。我们认为,如果两个连续位被分配给表示同一物理值的信号,则它们之间的比特翻转率趋势应遵循相同的趋势。

示意图6

图8显示了某一位位置的比特翻转率时间序列(左)以及两个连续位的相关性(右)。从图中可以看出,由于数据集采集期间车辆处于运动和怠速状态,意味着相应的功能被启动,因此比特翻转率随时间变化。需要注意的是,我们的方法在采集数据集时不需要均等地操作车辆中的每一个功能。图中可见,低位的比特翻转率仅增加,而高位的比特翻转率并未增加。相反,如果两个位被分配用于表示相同的物理值,则高位的比特翻转率增加而低位的比特翻转率不增加的情况较为罕见。尽管这是自然属性,但实际上会降低比特翻转率之间的相关性,这与我们假设的比特翻转率会同时增加的情况相反。

下降幅度也同步减小。因此,我们仅在高位的位翻转率增加的集合上计算相关性,图中以红色标示。根据该结果,我们的方法能够识别出两个不同信号之间的边界。例如,我们的方法基于两个连续位之间的相关性来识别信号边界。对于起亚K5 2017的CAN ID 0x251的第48位和第49位,其比特翻转率的时间序列均为零,因此,我们的方法判定第48位为一个信号的结束,第49位为另一个信号的开始。此外,图9展示了一个示例用于可视化比较READ方法和我们方法与OpenDBC参考的结果。显然,我们的方法识别出的信号边界比READ更多,因为即使两个连续位的总位翻转率相似,我们的方法仍会基于相关性设置边界。我们实现了READ算法以与我们的方法进行比较。READ和我们的方法均未产生与OpenDBC完全相同的结果,这很可能是因为我们使用了现代和起亚车辆的通用DBC格式文件,但数据集来自特定车辆,即起亚K5 2017和捷尼赛思EQ900。2018年以及现代伊兰特2020,尽管它们均来自现代起亚汽车集团。似乎本研究所使用的车辆并未包含所有的功能。此外,READ方法未能识别任何常量或未使用字段,尽管这些字段可以在DBC格式文件中定义。表III显示了 READ方法和我们的方法所识别出的信号数量。可以看出,我们的方法比READ方法识别出了更多的信号数量。因此,我们得出结论:在信号边界识别方面,我们的方法优于现有技术。

表I 识别出的校验和信号结果
∗表示我们确定OpenDBC是错误的参考,因为DLC的信息与车辆的信息不同。

表II 识别出的计数器信号结果
∗表示我们确定OpenDBC是错误的参考,因为DLC的信息与车辆的信息不同。

表III 所有已识别信号的数量
∗表示我们确定OpenDBC是错误的参考,因为DLC的信息与车辆的信息不同。

讨论

DBC格式文件信息有限正如本文开头所述,汽车制造商对实际车辆的DBC格式文件保密。因此,我们未能验证我们方法的结果。尽管在我们的评估中使用了OpenDBC 中的规格作为参考,但我们使用的车辆与OpenDBC中的 DBC格式文件并不完全匹配。我们预计,若能获取更精确的信息,我们的方法将表现出更好的性能。

多种类型的车辆。我们已在从单个车辆收集的数据集上评估了我们的方法。通常认为同一汽车制造商生产的两种不同车型和类型的DBC格式文件是兼容的。某些未使用或常量字段可能会被同一汽车制造商在其他车型中分配给特定功能。我们预计,我们的方法在使用来自多种类型的车辆的数据集时将表现出更好的性能。

未记录信号。即使OpenDBC中的规格与车辆制造商使用的规格完全匹配,仍可能存在未记录信号。由于DBC格式文件通常由制造商内部的多个部门创建,因此某些信号可能在DBC规范中没有适当文档记录的情况下被使用。由于这一问题,对信号边界识别方法(包括我们提出的方法)进行正确评估变得困难。然而,预计我们的方法更有可能识别出未记录信号。

结论

本文提出了一种能够识别数据载荷中信号边界的方法。与使用总位翻转率的最先进的READ不同,我们的方法分析了每个位位置上比特翻转率的时间序列。基于两个连续位之间时间序列的相关性,确定信号边界。近年来,诸如互联网和蜂窝网络等多种电子元件已能够轻松连接到车辆。因此,汽车安全领域的研究在学术界变得日益重要。然而,由于汽车制造商掌握着DBC格式文件的信息,大多数相关研究无法充分产生全面的结果。鉴于此,我们期望我们的方法即使在没有DBC格式文件辅助的情况下,也能极大地促进未来在汽车安全领域的研究。

您可能感兴趣的与本文相关内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值