CANTrack:基于动态密钥的CAN总线安全方案

CANTrack: 使用直观加密算法增强汽车CAN总线安全性

摘要

本文描述了提出的CANTrack解决方案,并详细解释了其实现过程。CANTRACK是一种复杂的计算机辅助设计(CAD)工具,支持汽车网络系统的整个开发过程。CANTRACK不同于其他竞争性工具,不仅支持规划、开发、测试以及最终启动,还根据客户需求集成了CAN总线安全增强和工具定制的独特功能。控制器局域网(CAN)总线安全功能通过一种直观算法实现,该算法使用对称密钥加密8字节有效载荷数据,且密钥通过所有节点上的同步密钥生成器动态更改。该算法确保在任何时间实例上的加密消息均为唯一,从而避免重放攻击。该算法已在基于Vector CANoe的实验装置上进行了充分测试,并展示了两个用例的结果。

索引术语

计算机辅助设计, CAN, 汽车, 安全, 加密.

I. 引言

车辆网络的安全正成为一个重要问题[1]。在开发 CAN时,其设想是模拟一个设备在民主和可信环境中协作的理想社会。汽车系统[2]和CAN协议的设计初衷是应对故障设备,但对具有恶意的设备却可能造成严重破坏。由于众多系统都依赖于CAN,安全问题必须得到解决。

Koscher [3]以及后来Checkoway [4]发表的重要研究论文表明,车辆可能很容易成为恶意攻击者的目标。

然而,针对车内[1]或车外[5]通信总线安全的研究成果较少。这是因为车内通信所面临的约束和规范与其他已被广泛研究的协议有很大不同。大多数方法主张在不同的电子控制单元(ECU)或子网络之间使用安全网关,并依赖密码学的基本构建模块(加密、签名等)。然而,这些方法中没有一种是专门为保障CAN上的广播认证而设计的,而CAN至今仍是汽车行业中最为常见的通信总线。

车辆与周边基础设施之间的通信[5],越多,安全风险就越大。汽车总线中的任何非认证信息都会使整个汽车的安全面临风险和黑客攻击。

在这方面,迄今为止可找到的保障CAN安全的两项主要成果:一项基于著名的TESLA协议[6‐7] ,另一项则提出了一种紧密遵循CAN规范的新范式。Van Herrewege等人[8]从头设计了一种向后兼容的消息认证协议“CANAuth”,并明确指出CAN的限制“排除了迄今为止发布的所有认证协议”。我们同意这一结论,因为我们认为标准认证方法可能仅覆盖CAN的部分应用领域;因此,需要新的方法(即使是非标准的)。

在先前的研究中,类似特斯拉(TESLA)的协议[6‐7]在传感器网络中被证明非常有效,迄今为止仍是实现高效消息认证码(MAC)广播认证的最有效方案。然而,当应用于CAN总线时,该协议族存在一个对汽车领域至关重要的缺陷:延迟问题,而根据特斯拉协议的原理,这种延迟不可避免[8]。毫秒级或更低的延迟虽已被证实可实现,并能满足许多应用需求,但对于车内通信而言,此类延迟仍显得过大。目前尚无明显方法可进一步改善这些延迟[8]。当然,另一种选择是采用更高吞吐量、更强计算能力和更优电子元件(例如振荡器)的总线,但这将大幅增加组件成本,从而破坏CAN的成本效益优势。

哈泽姆等人 [9]提出并实现了一种轻量级消息源认证协议。根据作者的说法,只需在消息中附加一个接收器可验证的魔术数即可。该魔术数只能由发送器选择,并由接收器验证。生成此魔术数的过程基于TESLA协议中使用的单向哈希函数。发送器选择一个随机数,然后多次应用变换函数,结果以逆序使用。链中最后生成的值会首先传递给每个接收器。每个接收器可以通过对当前接收到的值应用变换函数,并与前一个值进行比较来验证消息。需要注意的是,CAN消息的有效载荷仅为8字节,因此不应增加太多开销。

建议的魔术数长度为2字节。该协议不需要对CAN网络进行任何硬件修改。此外,它不会给电子控制单元的嵌入式软件带来过多开销。而且,它倾向于避免对电子控制单元之间正在交换的现有CAN消息集进行任何修改。

Udea等人[10]提出了一种监控系统,该系统使用消息认证码(MAC),通常能有效防御欺骗攻击。所提出的安全监控系统的目标是防范欺骗攻击。具体而言,监控节点对每个电子控制单元进行认证,并验证分配给CAN消息的消息认证码。然而,在所提出的方法中,必须在监控节点上安装专用CAN控制器。该专用CAN控制器使用错误帧在实时基础上覆盖伪造消息。可以认为该安全监控系统的一个优势是,仅需在CAN总线上增加监控节点这一新硬件。对于其他电子控制单元,只需修改用于节点认证和密钥交换的软件即可。

本文中,我们提出的简单直观的算法基于使用动态密钥对CAN消息进行加密。该密钥作为总线上发送的消息计数器的函数生成;因此,在任意给定实例中,消息始终是唯一的。因此,使用此方法可确保任何没有加密密钥的接收器都无法识别和理解消息,同时该方法还具备防止重放攻击的能力[11]。

II. CANTRACK

CANTrack是一款基于Windows的高性能工具,支持汽车网络系统的整个开发过程,包括规划、开发、测试以及最终启动。我们的主要理念是在提供竞争对手产品大多数功能的同时,增加CAN总线安全功能,并使该工具具备根据客户需求进行定制的能力。

CANTrack旨在与不同的现有CAN硬件进行接口连接,并以用户友好的方式呈现总线消息,使用户能够自定义窗口的外观和感觉以及信号显示,同时还支持导入和设计用户自己的面板。CANTrack集成了当前行业迫切需要的CAN总线安全功能,用于车载安全以及车对车通信。此外,CANTrack提供灵活的许可选项,包括浮动许可证和独立许可证,并根据支持的功能提供软件基础版和专业版。同时,正在规划开发云服务模型,并将提供“按使用付费”选项。Error! Reference source not found.列出了 CANTrack支持的功能,包括总线分析和监控功能、刺激、仿真、建模功能、CAPL支持以及各种面板。图1描述了解决方案的架构。此外,图2‐6展示了CANTrack为用户提供的具有现代简洁外观的直观窗口示例,实现直接易用性和易于导航。

功能 当前支持版本
通用
总线类型 CAN
总线分析与监控
追踪窗口:详细、差异和统计视图 用于显示事件的时间流程 YES
数据窗口:总线信号的瞬时显示,环境和系统变量 YES
图形窗口: 信号响应的图形显示 YES
轨迹窗口中的分析滤波器:暂时降低显示的 data YES
离线模式:重放记录的测量值 No
数据导出:在其他程序中使用记录的数据 程序: .txt, .ascii,*.CSV YES
刺激、仿真和建模
交互式生成器 YES
回放:重放记录的测量值在 与运行中的仿真并行 No
定义/访问环境变量 YES
执行仿真模型 YES
CAPL
CAPL 编程/执行/调试 YES
用于总线访问的CAPL函数 No
导入CAPL代码 YES
面板
创建/执行显示面板 YES
创建/执行控制面板 YES
导入面板 YES
附加选项
支持的硬件设备 CANCaseXL VN16xx 系列

示意图0
示意图1
示意图2
示意图3
示意图4
示意图5

三、提出的安全算法

众所周知,任何不可信元素在总线上的物理存在都会导致有效载荷数据和消息ID被截获和解析。总线上发送的消息不包含有关消息源的任何信息,因此入侵者发送的消息不会被忽略,而会被视为来自可信节点。

因此,所需的方法是对消息进行加密,使其变得无法识别和不可理解,同时防止重放攻击。

然而,所提出的算法必须考虑以下一些限制:
- 我们正在使用硬件API在总线上发送物理消息;因此无法编辑CAN消息帧。
- 有效载荷数据无法扩展以包含更多数据字节。
- 消息ID用于设置总线上消息的优先级,例如 ID为“0”的消息具有最高优先级;因此我们无法更改或加密它们。

因此,基于上述限制,以下是实现方法的步骤:
- 8字节有效载荷数据将使用对称密钥进行加密。
- 加密消息在任何时间实例都应是唯一的,以避免重放攻击。

因此,每个节点上都使用了同步密钥生成器。密钥必须动态更改,且不能在总线上传输共享,这可以通过两个步骤实现:
- 为每个ID的每条传入加密消息添加一个计数器,从而在发生回放攻击时忽略旧的已发送消息。
- 在密钥生成中使用时间戳(前提是所有节点的时间戳保持一致)。

CANTRACK的当前实现基于以下几点:
- 消息的加密是可选的,用户可以选择处理加密消息或非加密消息。
- 该实现基于动态密钥对消息进行加密,密钥是根据总线上发送的消息计数器生成的函数,因此消息在任何时刻都是唯一的。
- 目前为了验证该想法,生成的动态密钥与消息的有效载荷数据进行异或运算,未来可以使用更复杂的算法基于生成的动态密钥对消息进行加密。

IV. 测试算法

此处采用的测试方法基于使用第三方应用程序“Vector CANoe”[12] ,该程序与CAN总线交互并读取消息。我们的解决方案CANTRACK用于在连接到一个CAN通道的硬件上发送加密消息,而Vector CANoe则用于在另一个通道上接收这些加密消息,如图8所示。以此证明数据随时间持续变化,且实际有效载荷对任何入侵者均不透明。

测试平台设置如下:
1. 将CAN网络的一个通道连接到CANTRACK。
2. 将Vector CANoe连接到另一个通道。
3. 将两个通道连接在一起(从CANTRACK发送并在Vector CANoe上接收)。

已开发多个测试用例以验证该算法的功能。以下是一些示例:
1. 用例#1 :在 CANTRACK中从通道1开始发送消息,并在通道2上接收。通道1发送的消息在通道2上正确接收,且有效载荷数据按预期解密并显示为已传输。
2. 用例#2 :从CANTRACK的通道1开始发送消息,并在Vector CANoe的通道2上接收。在通道1上发送的消息被接收为通道2上的随机可变数据,且有效载荷数据在CANoe中未被解密,如图8所示。

示意图6
示意图7
示意图8

V. 结论

所开发的解决方案CANTrack得到了详尽描述。CANTRACK是一种先进的计算机辅助设计(CAD)工具,支持汽车网络系统的整个开发过程。CANTRACK通过引入CAN总线安全增强这一独特功能,区别于其他竞争性工具;该功能采用一种直观算法,使用对称密钥对8字节有效载荷数据进行加密,并通过在所有节点间同步的密钥生成器动态更改该对称密钥。该算法确保在任何时间实例下生成的加密消息均为唯一,从而防止重放攻击。该算法已在基于Vector CANoe的实验装置上进行了充分测试,并展示了两个用例的结果。测试已成功完成,消息对任何第三方应用或电子控制单元均无法识别和理解,同时通过可变的加密密钥有效阻止了重放攻击。

VI. 未来工作

未来工作中将考虑对CANTRACK进行多项改进。以下是一些改进方案:
- 在向网络添加新节点时增加握手程序。
- 处理同步节点的脱同步问题。
- 提高用于加密的密钥生成函数的复杂性。
- 提高使用生成密钥进行加密的复杂性。
- 实现利用时间戳生成密钥(在节点时间同步的情况下),并将结果与消息计数器方法进行比较。
- 在CAN消息的编码和解码以及密钥生成中使用智能算法 [13‐16]。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值