现存的汽车 Controller Area Network( CAN)非常容易受到攻击。缺少对发送者的验证,意味着攻击者可以伪装成作为网络上的一个合法节点,进行发送和接收消息。这篇论文提出了一个可以使用 CAN识别合法和不合法消息的系统。此外,重防攻击可以阻塞注重安全的实时网络,这一系统还提供了防御重防攻击的功能。
关键词: Controller Area Network( CAN),汽车安全,安全机制,网络安全
在过去的20年里,Controller Area Network(CAN)以其在车载式通信中优越的鲁棒性,容错率和高效而出名。除了它的一些安全特征,CAN在设计时并没有考虑到安全性,因为汽车被假定处于一个孤立的系统中。然后,现今的车载网络正在受到威胁,因为攻击者试图盗取,篡改或伪造信息,这可能会使得汽车的购买者和他们所处的环境变得不安全。
我们提出了一个系统,使用这个系统,CAN可以检测外部威胁,并区分消息是来源于合法的ECUs(电子控制单元)还是未被授权的源。我们也能试图创造一个能够防御重放攻击的系统,以此降低实时网络资源的消耗。
CAN在现代汽车通信协议中被大量的使用。它在 1980年代中期由 BOSCH设计出来,并运行在广播网络中。某一节点创建的包会被发送给网络中所有的节点,接收节点自己决定是接收还是抛弃这个包。这一行为的原理是为了保持网络中信息的一致性( Texas Instrments-2008)。标准 CAN包的结构如图 1所示:
图 1 标准 CAN包( Texas Instrments-2008)
除了标准长度,还有一个拥有一个 29-bit的标志域的扩展版本,这个标志域使包中柷包含更多种类的优先顺序。
个体节点决定是否使用能够标志消息类型的标志符( CAN ID)来处理包。
几个潜在的漏洞存在于 CAN的实现中。接收节点决定是否根据 CAN ID来处理包,网络中其他的节点也可以这样做。因此,个体节点不能识别某一个包是不是专门发送给它的,也不知道这个包来自于哪个节点。这就导致另一种漏洞,也就是 CAN不能识别节点是否是合法的。 CAN没有任何的对节点授权的方式。因此,攻击者可以轻易地在中继节点上伪造消息。这些方面导致了 CAN不仅不安全,还不能对威胁进行识别。
攻击者如果要渗透汽车的网络有非常多的方法。最直接的就是通过 On-Board Diagnostics (OBD-II)端口。它提供了对 CAN总线的直接访问,并被用于对包进行诊断 (Checkoway-2011)。然而,如果攻击者连接到了这个端口,他们就会被当作这个网络中的一个节点。这使得他们可以收集和传输消息。一种替代方法是在端口上安装某些远程设备,远程对汽车进行攻击。
最近汽车生产的趋势转向了汽车的无线通信。像 GM’OnStar, Toyota’s SafetyConnect, 和 BMW’s BMW Assist (Checkoway-2011)这些系统让车辆能够通过宽带服务进行通信。这些系统提供了新的路径供攻击者与车辆进行交互。
我们研究的目的是针对 CAN安全机制的缺乏,生成一些功能性的解决方案。 CAN漏洞的关键点是协议不能识别消息的来源。
为了研究解决方案,我们提出了一个能够兼容现在 CAN模型的方法。我们设计了一种机制,使 CAN能识别 ECUs是本地车辆硬件的一部分(合法的 ECUs)还是外部攻击者的(恶意的 ECUs)。此外,我们打算创造一个系统,这个系统通过创建一个能够区分某一帧和下一帧,以此使 CAN能够防御重放攻击。
为了实现这一目标,我们创建了一个系统,通过在现有的 CAN帧后面添加一个域,使 CAN能够识别入侵者,并防御重放攻击。这一机制会在这一域中产生新的值。这些值中的其中一个就是根据帧中数据以及一个秘密值产生的 hash值。这个 hash值可以作为一个授权值,用来识别消息是来源于,在车辆生产过程中的哪些组件。另一个值作为一个时间戳,使系统能够识别重放攻击。
目前使用的 CAN帧不能兼容我们提出的额外的域。因此,我们决定使用新 CAN FD (CAN with Flexible Data-Rate)。这一协议对 CAN协议进行了一系列改进,包括更灵活的数据传输率和一个扩展数据域。鉴于传统的 CAN格式只允许 8字节的最大数据长度, CAN FD协议可以支持长达 64字节的消息 (Hartwich-2012)。此外, CAN FD协议有更灵活的数据传输率(从 CAN的 1 mbps到高达 15 mbps),这使得这个系统可以兼容增长的消息长度。
这一系统的核心概念就是使用一个小的加密哈希函数。加密哈希函数是一种单向散列的函数,因为它不能根据 hash值还原出原始的数据。此外,加密哈希函数还可以避免冲突,也就是说,两个不同的消息不可能产生相同的 hash值。
hash函数在消息的保护授权和发送者的验证方面都有应用。因为从 hash值还原出原文是非常困难的,用于产生 hash值的原文内容不会受到修改,因为随后它们就会被验证。
这一系统的第一步源于车辆的生产。在汽车的生产过程中,每辆车都会有一个指定的值。这个值是唯一的,并被用于车辆的识别(与车辆识别码( VIN)相似)。汽车中的每一个 ECU将会有一个 CAN标识号( CIN),这个 CIN会被硬编码进他们的系统中。这个值作为一个索引用于对 ECU进行访问。在维修的时候,通过从生产商那获取原始 CIN,这个 CIN可以被改变。
这一机制会产生一个被称之为 CAN消息认证器( CAN Message Authenticator (CMA))新的域,它包含 hash值和用于产生哈希值的时间信息。在一个合法的 ECU收到一个帧的时候, CMA将被用于验证消息的合法性。这一新的帧位于当前数据帧的末尾。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课