英语原文共 7 页,剩余内容已隐藏,支付完成后下载完整资料
CANAuth-一种简单后向兼容的CAN总线广播认证协议
摘要-控制器区域网络(CAN)总线协议[1]是1986年由Robert Bosch GmbH发明的总线协议,最初用于汽车。到目前为止,这种巴士可以在从轿车和卡车,通过闪电装置到工业织布机的各种设备中找到。由于它的性质,它是一个非常注重安全性的系统,即可靠性。不幸的是,没有内置的方法来实施安全性,例如加密或身份验证。
本文研究了在CAN总线上实现向后兼容的消息认证协议所涉及的问题。我们展示了这样的协议必须满足哪些限制,以及据我们所知,这为什么会消除到目前为止发布的所有身份验证协议。
此外,我们还提出了一种消息认证协议CANAuth,它满足所有规定的要求,并且不违反CAN总线的任何约束。
关键词-CAN总线、嵌入式网络、广播认证、对称密码学
- 导言
控制器区域网络(CAN)总线协议[1]是1986年由Robert Bosch GmbH发明的总线协议,最初用于汽车。
CAN总线节点全部连接到相同的共享总线线路。CAN总线被布线,使得0信号主导于隐性1信号。这些显性和隐性信号用于CSMA/CA方案。使用优先级解析的仲裁方案被用来决定允许哪个节点在总线上传输数据。节点的ID越低(因此在总线仲裁期间发送的0越占优势),其优先级就越高。采用该方案使CAN总线适合作为实时通信总线。
在传输期间,节点不断检查总线上的信号,并将其与其正在传输的信号进行比较。如果发生不匹配,则会引发错误,但在仲裁期间除外,在这种情况下,节点将停止传输。在每条消息之后,发送CRC,并且接收节点将在发生不匹配的情况下引发错误。为了防止损坏的节点不断干扰和使消息无效,将保留内部错误计数器,该计数器根据其值禁用节点引发错误的权利。这保证了CAN总线上的通信非常可靠,因为即使出现故障节点引发错误,消息最终也会成功传输。
在协议推出一年后,飞利浦推出了第一个CAN总线控制器,随着时间的推移,该协议在非汽车机械中得到了越来越多的使用。到目前为止,总线协议可以在广泛的设备中找到:从轿车和卡车,通过闪电设置到工业织布机,打印机,冰箱和火车。
由于CAN总线的性质,其设计非常注重安全性,即可靠性。不幸的是,没有内置的方法来实施安全性,例如加密或身份验证。这导致了许多可能的攻击,正如Koscher等人所证明的那样。[2]和Checkoway et al.。[3]。这类攻击的例子包括控制刹车、远程启动汽车和控制空调。
本文研究了在CAN总线上实现向后兼容消息认证协议的可能性。我们展示了这样的协议必须满足哪些限制,以及据我们所知,这为什么会消除到目前为止发布的所有身份验证协议。
在第二节中,我们非常简要地展示了已经在广播身份验证协议方面所做的一些工作。第三节详细概述了此类协议应满足的要求以及在CAN总线上使用时应遵守的限制。然后,在第四节中,我们提出了我们对这样一个认证协议的建议。第五节定义了一个对抗性模型,研究了协议的安全性质。最后,我们在第六节给出了我们的结论。
二、前期工作
在过去,关于如何在广播网络中实现身份认证,已经发布了不同的协议,其中一些协议甚至是针对轻量级嵌入式网络的。接下来的几段非常简明地概述了其中的一些协议。
特斯拉协议是一系列相关的轻量级认证协议,依靠延迟的密钥泄露来保证消息的真实性。最初的特斯拉协议是由Perrig等人发布的。2000年[4]、[5]。此协议旨在提供经过身份验证的广播功能。随后,Perrig et al.。提出了micro;Tesla[6],这是针对传感器网络的原始Tesla协议的修改,对计算和存储能力有严格的限制。
已经公布了在广播网络中使用的其他协议,例如由Gennaro和Rohatgi[7]以及Rohatgi的改进方案[8]。
遗憾的是,所有这些协议都有某些特性违反了第三节中设置的约束,例如要求挑战-响应通信、引入延迟(特斯拉和micro;特斯拉的主要问题)或需要传输大量数据(Gennaro和Rohatgi解决方案的主要问题),所有这些在CAN总线网络中都是不可接受的。
三、问题概况
在本节中,我们将说明CAN总线上向后兼容的轻量级消息身份验证协议的要求和约束。这应该清楚为什么到目前为止公布的协议都不能在CAN总线上使用。此外,我们还展示了如何使用我们提出的CANAuth协议来满足这些要求和约束。
- 身份验证协议要求
消息身份验证协议应提供的基本要求包括:
消息身份验证
消息的真实性应该是可以证明的。
只要保证消息是由可信节点发送的,消息的确切来源就不重要了。
抗重放攻击
重放先前发送的认证消息将导致那些消息被验证节点丢弃。
密钥组
应该可以使用相同的密钥对一组相关消息进行身份验证。
这减少了所需的密钥存储大小。
向后兼容性
采用认证协议的节点必须能够在不干扰任何不兼容节点的工作的情况下认证其消息。
应该可以将支持认证协议的多个节点连接到现有总线,而不必对现有节点进行任何重新配置。
- 由于CANBus的限制
虽然存在许多认证协议,但是CAN总线存在一些特殊的问题。由于我们希望使用向后兼容的身份验证协议,因此必须考虑以下限制:
硬实时
CAN总线系统通常用于应用硬实时约束的环境中,例如汽车。因此,消息传输和处理时间应该不会受到身份验证协议的显著影响身份验证协议。所有认证数据都需要随其消息一起发送,以免干扰系统的实时响应能力。
消息长度
CAN总线上的单个消息可以包含1到8字节的数据。认证协议所需的任何额外的认证数据都必须以某种方式与其所属的消息一起传输。
消息ID
CAN总线上的每种类型的消息都与某个ID相关联,例如ID 1=位置L1的温度,ID 2=位置L1的湿度,hellip;.ID由11位2组成,并且由于ID耦合到非常具体的消息内容的事实,大多数ID将已经在现有网络中被采用。这意味着不能到处添加具有某些新内容类型的额外ID。
单向通信
发送消息的CAN接口本身没有ID,所有通信都是广播的。因此,节点之间没有双向通信的概念,因为CAN接口没有ID。多个节点之间唯一可能的双向“通信”是通过错误标志。即使这样,发送节点也找不到哪个接收节点引发了错误。
第一个要求(消息身份验证)可以通过将消息验证码(MAC)附加到消息来满足。由于强实时性的限制,所采用的MAC算法要求速度较快。理想情况下,应该可以在接收到部分身份验证数据后立即开始处理以进行验证。满足这些要求的一种算法是HMAC[9]、[10],假设其中使用的散列函数是快速的。
然后,通过在MAC计算中加入一些计数器值,可以满足抗重放攻击的要求。但是,不应重复使用相同的计数器值,如果使用有限长度的计数器并发送大量经过身份验证的消息,则可能会导致问题。此外,在后续系统重新启动过程中必须保存的状态越少越好。解决此问题的一种方法是在系统启动期间建立会话密钥。然后可以使有限长度计数器对我们有利,因为它允许系统判断何时应该建立新的会话密钥。
由于消息ID和单向通信的限制,节点不能发送回消息来响应它们接收到的某些消息。这将需要创建大量的新ID,每个ID都具有特定的新内容类型,例如ID5=ID为1的节点NITO消息的响应。因此,如果n个节点希望能够响应m个不同的消息ID,则必须创建n·m个ID。考虑到大量不同的消息内容类型,这是不可能的,因为这将很快导致所有可用的11比特ID耗尽。此外,每次添加新节点时都需要重新配置总线上的现有节点。如果双向通信被证明是必要的,则需要设计(向后兼容)解决方案。
使用CAN协议提供的选项可以直接支持组密钥要求。通常,可以使用多个验收代码对CAN接口进行编程。这些代码告诉接口侦听ID与任何接受代码匹配的消息。还可以指定接受掩码,允许单个接受代码与多个ID匹配。通过将密钥链接到这些{接受码,接受掩码}集合,可以实现组密钥设置。我们定义了一组相关消息Gias,即ID与{接受码,接受掩码}i匹配的所有消息的集合。
最后一个要求,向后兼容性是最大的问题。首先,通过将身份验证数据与现有CAN消息连接来附加身份验证数据是不可能的,因为这将违反消息长度限制。身份验证数据也不能放入CAN消息中,因为这将减小本已非常有限的最大消息大小。第三种选择将是在多个消息上发送一个长数据分组。然而,这会降低系统的实时能力。
- 使用CAN 进行传输
所有这些的一种解决方案是通过带外通道发送身份验证数据。这可以通过CAN 协议[11]来实现。使用该协议,可以在CAN总线接口的采样点之间插入额外的位。这是如何工作的图形表示,如图1所示。
图1.CAN 协议可以在不中断常规CAN总线控制器工作的情况下将额外数据插入CAN位的时间范围
以这种方式传输的数据位数受到CAN 接口可达到的最大时钟速度的限制。Ziermann等人。报告称,在1 MHz的CAN网络上,使用运行速度为300 MHz的FPGA,每个CAN字节可以传输15个CAN 字节。在较低的CAN总线速度下,此数字线性增加,如下所示:
丢失一个CAN 数据位是因为需要在每次CAN 传输开始时发送一个起始位。因此,在100 kHz的CAN网络上,每个CAN位最多可以传输159个CAN 位。
由于无论消息的长度或CAN总线网络的总线速度如何,都应该可以验证消息,因此验证数据应限制为15字节。这允许在最坏的情况下发送所有必要的认证数据,即作为1 MHz CAN总线上的1字节CAN消息的一部分。由于认证数据长度的这一限制,不可能使用公钥(和基于身份的)密码术,因为与对称密码术相比,公钥密码术的密钥大小要求较大。
据我们所知,认证协议在CAN总线上必须遵守的限制和要求使得任何已发布的协议都无法使用。
- 多节点传输的问题
人们可以设计一种系统,其中多个节点在CAN 时间帧期间进行传输,这将允许双向通信。只要有一定数量的节点需要发送数据,这就违反了硬实时约束,因为这样做仍然需要多条消息。然而,在关键的建立过程中,这种违反约束的行为可能会被忽视。然而,在下一段中,我们将证明任何需要节点之间双向通信的协议都会对CAN总线施加速度限制。
CAN总线协议在传输期间使用载波侦听多路访问/冲突检测(CSMA/CA)协议,由此在其传输窗口的一个位内检测位冲突。假设每个CAN位想要用CAN 协议发送至少一个数据位。每个CAN 传输都以一个起始位开始,因此在CAN 时间帧期间必须有两个位传输。此时间帧最多占用CAN总线位传输时间帧的40%。因此,在这种情况下,CAN 协议需要以至少2*1/0.40=5倍于CAN协议的频率工作。
CAN总线标准保证对于最大30米的总线长度,CSMA/CA以及CAN总线协议可以在最大总线速度1 MHz下工作。但是,由于我们希望CSMA/CA在CAN 传输期间工作,而CAN 传输需要以至少5倍于CAN总线的频率工作,因此给定总线长度的最大CAN总线速度仅为200 kHz。
此外,按照此速率,在CAN字节传输期间发送的16个CAN 位中,只有8个CAN 位可用于数据,因为其他8个需要作为起始位。希望在CAN 传输窗口期间发送的数据位越多,如果希望遵守CAN 的最大速度1 MHz,则需要降低CAN总线速度。
当然,在我们的示例中可以将CAN 的速度提高到5 MHz,在这种情况下可以以1 MHz的速度运行。然而,如果是这样的话,最大总线长度也将减少,以允许在CAN 传输期间进行及时的冲突检测。
因此,如果需要借助CAN 进行双向通信,则需要降低最大总线长度或CAN总线速度。
四、CANAuth协议
在本节中,我们建议一个简单的身份验证协议CANAuth,它满足第三节中提出的所有要求,并且不违反任何约束。
- 数据传输和帧格式
如第三节所述,认证数据使用CAN [11]协议进行带外传输,这为我们提供了认证消息的最大长度为15字节。如图2所示,字节在字段中细分。
图2.CANAuth数据帧字段。数据帧由CAN消息的前15个CAN 字节(=120个CAN 位)组成。
前8位用作状态标志。目前,仅使用这些位中的前两位,其余六位可用于该协议的未来版本。剩余的112位用于传输密钥建立或签名数据。在以下小节中,将提供有关这两种可能性的更多信息。
- 密钥建立
这里描述的密钥建立协议要求在每个CANAuth节点上有一个或多个预共享的128位密钥可用。每组相关消息Gi应该获得在CAN总线设计3的开发期间分配的预共享密钥Kpi。我们假设密钥存储在一些防篡改的存储器中,除了节点本身之外,任何人都不能查询这些密钥。
负责发送消息G1的节点将为该组设置密钥。在多个节点发送消息Gi的情况下,利用该组的最低ID发送的节点建立的密钥优先。
为防止重放攻击,密钥建立分两个阶段进行。首先,适当的节点(根据上面定义的规则)在CAN总线上发送带有附图3所示形式的CAN 消息的消息。
图3.密钥建立第一部分期间的CANAuth数据帧字段
帧的第一位被设置为1,以表示正
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[237551],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。