现存的汽车Controller Area Network(CAN)非常容易受到攻击。缺少对发送者的验证,意味着攻击者可以伪装成作为网络上的一个合法节点,进行发送和接收消息。这篇论文提出了一个可以使用CAN识别合法和不合法消息的系统。此外,重防攻击可以阻塞注重安全的实时网络,这一系统还提供了防御重防攻击的功能。
关键词:Controller Area Network(CAN),汽车安全,安全机制,网络安全
1. 介绍
在过去的20年里,Controller Area Network(CAN)以其在车载式通信中优越的鲁棒性,容错率和高效而出名。除了它的一些安全特征,CAN在设计时并没有考虑到安全性,因为汽车被假定处于一个孤立的系统中。然后,现今的车载网络正在受到威胁,因为攻击者试图盗取,篡改或伪造信息,这可能会使得汽车的购买者和他们所处的环境变得不安全。
我们提出了一个系统,使用这个系统,CAN可以检测外部威胁,并区分消息是来源于合法的ECUs(电子控制单元)还是未被授权的源。我们也能试图创造一个能够防御重放攻击的系统,以此降低实时网络资源的消耗。
2. 背景
2.1 CAN行为
CAN在现代汽车通信协议中被大量的使用。它在1980年代中期由BOSCH设计出来,并运行在广播网络中。某一节点创建的包会被发送给网络中所有的节点,接收节点自己决定是接收还是抛弃这个包。这一行为的原理是为了保持网络中信息的一致性(Texas Instrments-2008)。标准CAN包的结构如图1所示:
图1标准CAN包(Texas Instrments-2008)
除了标准长度,还有一个拥有一个29-bit的标志域的扩展版本,这个标志域使包中柷包含更多种类的优先顺序。
个体节点决定是否使用能够标志消息类型的标志符(CAN ID)来处理包。
2.2 CAN漏洞
几个潜在的漏洞存在于CAN的实现中。接收节点决定是否根据CAN ID来处理包,网络中其他的节点也可以这样做。因此,个体节点不能识别某一个包是不是专门发送给它的,也不知道这个包来自于哪个节点。这就导致另一种漏洞,也就是CAN不能识别节点是否是合法的。CAN没有任何的对节点授权的方式。因此,攻击者可以轻易地在中继节点上伪造消息。这些方面导致了CAN不仅不安全,还不能对威胁进行识别。
2.3 CAN攻击概况
攻击者如果要渗透汽车的网络有非常多的方法。最直接的就是通过On-Board Diagnostics (OBD-II)端口。它提供了对CAN总线的直接访问,并被用于对包进行诊断(Checkoway-2011)。然而,如果攻击者连接到了这个端口,他们就会被当作这个网络中的一个节点。这使得他们可以收集和传输消息。一种替代方法是在端口上安装某些远程设备,远程对汽车进行攻击。
最近汽车生产的趋势转向了汽车的无线通信。像GM’OnStar, Toyota’s SafetyConnect, 和BMW’s BMW Assist (Checkoway-2011)这些系统让车辆能够通过宽带服务进行通信。这些系统提供了新的路径供攻击者与车辆进行交互。
3. 目标
我们研究的目的是针对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),这使得这个系统可以兼容增长的消息长度。
4.系统描述
这一系统的核心概念就是使用一个小的加密哈希函数。加密哈希函数是一种单向散列的函数,因为它不能根据hash值还原出原始的数据。此外,加密哈希函数还可以避免冲突,也就是说,两个不同的消息不可能产生相同的hash值。
hash函数在消息的保护授权和发送者的验证方面都有应用。因为从hash值还原出原文是非常困难的,用于产生hash值的原文内容不会受到修改,因为随后它们就会被验证。
4.1 CAN标识号
这一系统的第一步源于车辆的生产。在汽车的生产过程中,每辆车都会有一个指定的值。这个值是唯一的,并被用于车辆的识别(与车辆识别码(VIN)相似)。汽车中的每一个ECU将会有一个CAN标识号(CIN),这个CIN会被硬编码进他们的系统中。这个值作为一个索引用于对ECU进行访问。在维修的时候,通过从生产商那获取原始CIN,这个CIN可以被改变。
4.2 受保护的帧的结构
这一机制会产生一个被称之为CAN消息认证器(CAN Message Authenticator (CMA))新的域,它包含hash值和用于产生哈希值的时间信息。在一个合法的ECU收到一个帧的时候,CMA将被用于验证消息的合法性。这一新的帧位于当前数据帧的末尾。
4.3 准备消息帧
在车辆运行的时候,ECU在发送消息的时候会执行一个hash算法。我们设计了两种不同的方法来获取这一hash值,如图2所示,随着最后一帧被发送,这一hash值会被包含在新域中。
使用通用时钟
第一个版本的运行是基于这一假设,CAN系统访问了通用时钟,这一通用时钟可以被系统中的所有元素监控。这一时钟机制本身就像一个单调递增的计数值一样简单,并且可以被所有ECU访问。起始消息( initial message (IM))会和时间值(timing value (TV))以及CIN连接(II)在一起,然后被传给hash函数(H),这一hash函数会根据这三个元素生成一个值。然后将这一值与TV连接产生CMA。通过在消息发送时将当前时间包含进去,接收ECU能够访问CIN的前提下,能够重新产生hash值(验证授权)。加密哈希函数中的可以避免冲突,保证只有拥有CIN访问权的ECU能够产生这一哈希值。
图2 哈希模型
使用hash分割
第二个版本假设在没有通用时钟的前提下,每个ECU维持一个计数值(counter value (CV)),用于hash块的选择。消息和CIN首先被连接(II)到一块,并产生一个hash值(H)。然后将产生的hash值划分为更小的部分,根据CV选中这块小块中的一个。接着将简化的哈值和计数值连接到一起产生CMA。这个方法让我们能使用更小的值进行授权,提高空间利用率。
这两种方法中,帧都被广播到网络中的每个ECU中。为了避免不必要的hash值检查,ECU会首先检查CAN ID来决定这个消息是否与自己相关。如果一个ECU能够处理帧,它会首先从受保护的域中提取身份验证信息。通过使用消息,时间值,和车辆生产时硬编码进去的CIN,消息能够被验证。如果hash值匹配上了,消息就被认为是合法的,并处理消息。如果没匹配上,就抛弃这个消息。
5. 系统的优点
正如前面所提及的,目前的CAN系统没有提供机制来保障通信的安全。在分析完CAN的弱点后,我们总结认为系统最基本的弱点是不能识别入侵者。新系统提供的保护是最重要的目的,但不是这个系统唯一的优点。
5.1 防御入侵
在这个系统中,通过单向hash函数和每辆车唯一的CIN的使用,CAN可以识别入侵者。为了使消息被接收,传过去的hash值必须和接收时验证的hash值相同。因为hash函数强大的雪崩效应,在没有CIN的前提下,难以通过计算产生这个hash值。此外,CIN不能被轻易地从产生的hash值中提取出来。这使得恶意ECU难以伪装成一个合法ECU。
5.2 防御重放攻击
在两个版本的hash函数中,发送的单个帧包含一个值代表那个帧的时间戳。这个值也被包含在hash值中,也就意味着,帧的身份验证直接依赖于这个值。除此之外,这个值也可以被临时的保留起来,用于验证对应ID下一个到达的包。如果多次收到相同的哈希值,也就表示相同的时间值被多次的发送,也就表示这有可能是一个重放攻击。
6. 局限/要求
尽管这一方法能够实现使得不安全的CAN协议变得安全,但它也不是没有局限。为了使这一方案可行,需要在当前的系统中添加额外的部分。当然,它的使用也会给这个系统施加一些限制,可能使其难以在实时系统中应用。使系统使用的第一个附加要求是CIN。当前车辆的生产过程中没有添加这一个值。因为太多的安全机制都要使用到这个值,需要保证它的唯一性。这一值的唯一性也需要由生产商来保证。除了CIN的产生之外,ECU也需要在没有额外的资源的前提下执行hash函数。
也许最本质的额外要求是两个版本中的hash函数都需要的时间戳的值。版本1中的hash函数要求ECU能够访问一些通用时间结构。目前CAN中没有通用的同步时钟值。因此,要采用版本1需要把这个硬件添加进车辆中。此外,当前时间也需要能被所有ECU在任意时间访问。依靠实现这一任务的方法,因为额外的通信量,网络总线的负担也许会过重。
如果采用版本2,ECU会需要有一个方法来维持计算值,同时也要保证与之相关的最近的hash值能被收到(比较到来的帧以识别重放攻击)。这一附加功能也会进一步加重当前有限的ECU硬件的资源负担,致使这一方法不可行。
7. 总结
考虑到将CAN作为注重安全的实时系统来使用,利用CAN的漏洞来入侵和攻击是不可接受的。我们论文中提出的这个系统是专为改善这一不安全的系统的安全性而设计的。这一方法使CAN能够区分帧是来自于自己的系统中还是入侵者。它也包含时间方面的机制使它能防御重放攻击。
我们相信这个系统将会是当前的CAN模型之外一个可行方案。它使得系统可以识别威胁,消息是来自内部还是外部,防御攻击。我们希望这样一个系统会在将来的车辆中实现,以使漏洞最终被修补。
致谢
这篇论文是在Grant No. DUE-1241675下国家自然科学基金的一部分。
参考文献
略(译者注:请参看原论文)
原文链接:http://ewic.bcs.org/upload/pdf/ewic_icscsr2015_paper15.pdf
本文由 看雪翻译小组 梦野间 翻译