一种管理控制器局域网中模块间安全通信的系统及方法与流程

文档序号:20275181发布日期:2020-04-03 19:33阅读:180来源:国知局
一种管理控制器局域网中模块间安全通信的系统及方法与流程

发明领域

本发明涉及一种安全管理控制器局域网(can)中模块间通信的系统和方法。具体地,系统采用分级密钥生成方法,其允许can中的模块使用单个祖先密钥和相关的标识符来生成控制器局域网中的can标识符的子孙密钥。之后,can广播与接收模块使用这些密钥来验证发布的消息。

现有技术概述

在我们的日常生活中,车辆已经成为基本日用品,为通勤者带来极大的舒适、便利及自主体验。如今,现代车辆的设计与构造旨在自动、安全、高效及环保。为此,现代的车辆通常包括多达60余个电子控制单元(ecu),其中每个ecu都控制一辆车辆的具体子系统。例如,这些ecu可包含控制所述发动机子系统、传输子系统、安全气囊子系统、巡航控制子系统、再充电系统子系统等的ecu。借此,每个ecu控制并接收来自车辆中大量执行器或传感器的反馈。不管ecu类型如何,这些ecus通常都需要彼此通信来分享产生于不同传感器的信息和/或来控制多种执行器。

在车载通信网络中最常用的物理和单独数据链路层协议是控制器局域网(can)标准,其利用串行总线将车辆中所有的ecu连在一起。在can标准中,用串行总线代替所有点到点布线,随后将can特定硬件增添到每个ecu上,因此ecu会具备在can网络上发布和订阅帧的必要协议。通常,can网络是一个高级的串行总线系统,其有效支持分布式控制系统。通常,一车载网络会包括若干can总线。借此,每个总线用于执行一特定功能或用于特定能力。在每个can总线内,会有多个通过can总线连通地连接的ecu。

尽管在车辆中的ecu间通信中使用can标准极大的提高并扩展了车辆的功能,但也使得车辆容易收到网络攻击。对车载通信网络的攻击,如欺骗车辆的can总线数据消息特别隐蔽,因为这些攻击可以导致车辆驾驶员失去对车辆的控制。

实际上,本领域的技术人员已经证明了车载网络很容易受到攻击。例如,已证明,车辆的车载信息服务系统可能会被恶意入侵并被恶意方远程接管。发生这种情况是因为can标准不包括广播源验证手段。因此,这使得恶意消息容易被恶意攻击者或被入侵的ecu在can网络上广播,结果,这些消息被所有其他ecu接受,就好像它们是合法的一样。

为了解决上面提到的问题,本领域的技术人员已提出了很多与can总线标准兼容的验证协议。在提出的方法中,使用基于散列的消息验证协议验证can总线上发布的消息。对于此方法,在消息发布之前,广播ecu首先从静态预共享密钥中获取会话密钥,然后使用该会话密钥以及通过带外can发送的计数器值和随机数来验证在can上发布的消息。

本途径和其他现有can验证方法的劣势在于这些方法使用了非常规的密码原语,例如消息验证代码(mac)混合。此外,检查使用非常规密码原语的安全性并不容易和/或这些方法涉及复杂的计数器重新同步算法。再者,这些方法也没有指定可以如何执行计数器同步以解决出现无法验证消息的问题。除此之外,车载通信通常对时间很敏感。因此,在ecu在can网络发布或广播消息之前,ecu不可能有充足的时间和通用会话密钥协商。

基于上述原因,本领域的技术人员正在不断努力提出一种系统和方法来实现车载通信的安全消息验证,该系统和方法提供了源验证、消息完整性和防止回放攻击。



技术实现要素:

本发明实施例提出用于管理控制器局域网(can)中的模块间的安全通信的系统和方法,且下文根据本发明实施例阐述这些系统和方法。

根据本发明的系统和方法的实施例提出的第一改进是:大大减少了can网络中的模块需要维护的认证密钥的数量。此外,可以根据分配至模块的功能性,将密钥选择性地将发布至can网络中的模块,以便保持模块间的职责分离。

根据本发明的系统和方法的实施例提出的第二改进是:利用国际标准化密码基元进行can网络中的模块之间的消息认证。此外,所提出的模块间消息认证包括新鲜度再同步机制,用以解决认证失败的可能性。

根据下列方式进行的本发明的实施例提供了上述改进。

本发明的第一方面公开了一种管理控制器局域网(can)中的模块间的安全通信的系统,所述系统包括:密钥管理模块,用于:根据can标识的功能性,将所述can的can标识组织成子集,其中每一子集排列为具有根节点的树状结构,所述根节点可表示所述子集的功能;将所述can标识的子集排列至具有根节点nr的树状结构中,其中所述子集的根节点排列为根节点nr的子孙节点;以及从所述根节点nr的子节点开始,设置所述根节点nr的密钥,并计算所述树状结构中的每一层级中的每一节点的密钥,其中使用父节点的密钥和识别所述子节点的标识符计算所述树状结构中的子节点的密钥。所述系统还包括与所述密钥管理模块通信连接的广播模块,用于:生成在所述can上待传输的帧,从而所述帧与从所述can标识选择的can标识idc1相关联;使用与所述can标识idc1节点的祖先节点相关联的祖先密钥k1以及与所述can标识idc1节点相关联的根节点路径标识计算can标识密钥kc1,其中从密钥管理模块中检索所述祖先密钥k1,并且所述节点路径标识包括分配至所述can标识idc1节点的值;获取方案参数p且根据所述方案参数p、所述密钥kc1、所述can标识idc1和所述待传输的帧计算验证参数vd,其中方案参数p包括所述方案唯一的变量;以及广播包括与所述can标识idc1相关联的所述帧和所述can上的所述验证参数vd的信息,使得所述can上具有包括所述can标识idc1的滤波器的接收器模块接收所述广播的信息,并且使用所述接收到的验证参数vd来校验所接收到的帧。

根据本公开的第一方面的实施例,所述计算所述树状结构中的每一层级中的每一节点的密钥包括:密钥管理模块,用于:对于所述树状结构中的每一子节点,使用密钥生成函数(kgf())、所述子节点kp的父节点的密钥和识别所述子节点idc的标识计算所述树状结构中的所述子节点的密钥kc,所述密钥kc定义为kc=kgf(kp,idc)。

根据本公开的第一方面的实施例,所述使用与can标识idc1节点的祖先节点相关联的祖先密钥k1和与can标识idc1节点相关联的根节点路径标识计算can标识密钥kc1包括:广播模块,用于:使用密钥生成函数(kgf())、can标识idc1和祖先密钥k1计算所述can标识密钥kc1,当祖先密钥k1与和can标识idc1相关联的节点的父节点相关联时以及当与can标识idc1节点相关联的根节点路径标识包括can标识idc1时,所述密钥kc1定义为kc1=kgf(k1,idc1)。

根据本公开的第一方面的实施例,在所述密钥管理模块设置所述根节点nr的密钥之前,所述密钥管理模块用于:在所述根节点nr和所述子集的一者的根节点之间选择性地插入至少一个中间节点,使得所述中间节点表示所述子集中的一者的所述根节点的祖先节点。

根据本公开的第一方面的实施例,所述方案参数p包括本地时间t,所述广播信息还包括所述方案参数p,从而所述广播模块用于:使用所述本地时间t计算所述验证参数vd,所述验证参数vd定义为vd=mac(kc1,t||idc1||‘frame’),其中mac()是消息认证码函数,且‘frame’是在所述can上待传输的帧。

根据本公开的第一方面的实施例,所述接收器模块验证所接收的帧包括所述接收器模块用于:获取can标识密钥kc1和接收器本地时间tr;根据所接收的本地时间t和所获取的接收器本地时间tr,对所接收的帧的有效性进行第一校验检查;当所述第一校验检查校验所接收的帧时,通过比较所接收的验证参数vd与接收器验证参数vrd对所接收的帧的有效性进行第二校验检查,其中接收器验证参数vrd定义为vd=mac(kc1,ctc1||idc1||‘frame’),其中mac()是消息认证码函数,且‘frame’是在所述can上待传输的帧;以及当所述第二校验检查校验所接收的帧时,处理所述所接收的帧。

根据本公开的第一方面的实施例,所述系统还包括网关模块,用于:获取网关本地时间tg;使用所述can上的所有模块传输和接收的所述网关本地时间tg生成通用帧,使得当每个模块接收到所述通用帧时,每个模块都用于:校验所接收的通用帧;以及当对所接收的通用帧进行校验时,使用所述网关本地时间tg同步所述模块的本地时间。

根据本公开的第一方面的实施例,所述方案参数p包括与所述can标识idc1相关联的计数器ctc1,从而所述广播模块用于:将所述计数器ctc1递增一,使用所述计数器ctc1计算所述验证参数vd,所述验证参数vd定义为vd=mac(kc1,ctc1||idc1||‘frame’),其中mac()是消息认证码函数,且‘frame’是在所述can上待传输的帧。

根据本公开的第一方面的实施例,所述接收器模块验证所接收的帧包括所述接收器模块用于:获取所述can标识密钥kc1和与所述can标识idc1相关联的接收器计数器ct’c1;通过比较所接收的验证参数vd与接收器验证参数vrd对所接收的帧的有效性进行校验检查,其中接收器验证参数vrd定义为vrd=mac(kc1,(ct’c1+1)||idc1||‘frame’),其中mac()是消息认证码函数,且‘frame’是在can上待传输的帧;以及当所述校验检查校验所接收的帧时,将所述计数器ct’c1递增一且处理所接收的帧,其中网关模块用于同步位于所述广播模块的所述计数器ctc1和位于所述接收器模块的所述计数器ct’c1。

根据本公开的第一方面的实施例,网关模块用于同步位于所述广播模块的计数器和位于所述接收器模块的接收器计数器,包括:获取与所述can标识idc1相关联的所述计数器ctc1;使用所述计数器ctc1和所述can标识idc1生成计数器帧;在所述can上广播所述计数器帧,使得当所述can上具有计数器的每个模块接收所述计数器帧时,每个模块用于:使用所接收的计数器帧同步所述模块中的计数器。

根据本公开的第一方面的实施例,所述方案参数p包括临时值n,从而所述广播模块用于:使用所述临时值n计算所述验证参数vd,所述验证参数vd定义为vd=mac(kc1,n||idc1||‘frame’),其中mac()是消息认证码函数,且‘frame’是在所述can上待传输的帧。

根据本公开的第一方面的实施例,所述接收器模块验证所接收的帧包括所述接收器模块用于:获取can标识密钥kc1和接收器临时值n’;通过比较所接收的验证参数vd与接收器验证参数vrd对所接收的帧的有效性进行校验检查,接收器验证参数vrd=mac(kc1,n’||idc1||‘frame’),其中mac()是消息认证码函数,且‘frame’是在所述can上待传输的帧;以及当所述校验检查校验所接收的帧时,处理所接收的帧,其中网关模块用于同步位于所述广播模块的所述临时值n和位于所述接收器模块的所述临时值n’。

根据本公开的第一方面的实施例,所述网关模块用于通过以下操作在所述广播模块和所述接收器模块处周期性地广播临时值:生成所述临时值n;以及使用所述临时值n生成临时帧;在所述can上广播所述临时帧,使得当can上的每个模块接收所述临时帧时,每个模块用于:使用所接收的临时帧在所述模块中接收和存储所述临时值。

根据本公开的第一方面的实施例,所述方案参数p包括本地时间t和与所述can标识idc1相关联的计数器ctc1,所述广播信息还包括所述方案参数p,从而所述广播模块用于:将所述计数器ctc1递增一,且使用所述本地时间t和所述计数器ctc1计算所述验证参数vd,所述验证参数vd定义为vd=mac(kc1,t||ctc1||idc1||‘frame’),其中mac()是消息认证码函数,且‘frame’是在所述can上待传输的帧。

根据本公开的第一方面的实施例,所述接收器模块验证所接收的帧包括所述接收器模块用于:获取所述can标识密钥kc1、接收器本地时间tr和与所述can标识idc1相关联的接收器计数器ct’c1;根据所接收的本地时间t和所获取的接收器本地时间tr对所述所接收的帧的有效性进行第一校验检查;当所述第一校验检查校验所接收的帧时,通过比较所接收的验证参数vd与接收器验证参数vrd,对所接收的帧的有效性进行第二校验检查,接收器验证参数vrd定义为vrd=mac(kc1,t||(ct’c1+1)||idc1||‘frame’),其中mac()是消息认证码函数,且‘frame’是在can上待传输的所述帧;以及当所述第二校验检查校验所接收的帧时,将所述计数器ct’c1递增一且处理所接收的帧,其中网关模块用于同步位于所述广播模块处的所述计数器ctc1与位于所述接收器模块处的所述计数器ct’c1。

根据本公开的第一方面的实施例,所述网关模块还用于:获取网关本地时间tg;使用所述can上所有模块传输和接收的所述网关本地时间tg生成通用帧,使得当每个模块接收到所述通用帧时,每个模块用于:校验所接收的通用帧;当对所接收的通用帧进行校验时,使用所述网关本地时间tg同步所述模块的本地时间;以及重置模块中的计数器。

根据本公开的第一方面的实施例,所述网关模块用于通过以下操作同步位于所述广播模块和位于所述接收器模块的所述计数器:获取与所述can标识idc1相关联的所述计数器ctc1;使用所述计数器ctc1和所述can标识idc1生成计数器帧;以及在所述can上广播所述计数器帧,使得当所述can上具有计数器的每个模块接收到所述计数器帧时,每个模块用于:使用所接收的计数器帧同步所述模块中的计数器。

根据本公开的第一方面的实施例,所述参数p包括临时值n和与所述can标识idc1相关联的计数器ctc1,且所述广播模块用于:将所述计数器ctc1递增一,且使用所述临时值n和所述计数器ctc1来计算所述验证参数vd,所述验证参数vd定义为vd=mac(kc1,n||ctc1||idc1||‘frame’),其中mac()是消息认证码函数,且‘frame’是在所述can上待传输的帧。

根据本公开的第一方面的实施例,所述接收器模块验证所接收的帧包括所述接收器模块用于:获取所述can标识密钥kc1、接收器临时值n’和与所述can标识idc1相关联的接收器计数器ct’c1;通过比较所述所接收的验证参数vd与接收器验证参数vrd对所述所接收的帧的有效性进行校验检查,接收器验证参数vrd定义为vrd=mac(kc1,n’||(ct’c1+1)||idc1||‘frame’),其中mac()是消息认证码函数,且‘frame’是在can上待传输的帧;以及当所述校验检查校验所接收的帧时,将所述计数器ct’c1递增一且处理所述所接收的帧,其中网关模块用于广播位于所述广播模块的所述临时值n和位于所述接收器模块的所述临时值n’,并且同步位于所述广播模块的计数器ctc1和位于所述接收器模块的所述计数器ct’c1。

根据本公开的第一方面的实施例,所述网关模块用于通过以下操作同步位于所述广播模块和位于所述接收器模块的所述计数器:获取与所述can标识idc1相关联的所述计数器ctc1;使用所述计数器ctc1和所述can标识idc1生成计数器帧;以及在所述can上广播所述计数器帧,使得当所述can上具有计数器的每个模块接收到所述计数器帧时,每个模块用于:使用所接收的计数器帧同步所述模块中的计数器。

根据本公开的第一方面的实施例,网关模块通过以下操作在所述广播模块和所述接收器模块处周期性地广播临时值:生成所述临时值n;以及使用所述临时值n生成临时帧;在所述can上广播所述临时帧,使得当can上的每个模块接收所述临时帧时,每个模块用于:使用所接收的临时帧在所述模块中接收和存储所述临时值。

根据本公开的第一方面的实施例,所述获取can标识密钥kc1包括:所述接收器模块用于:检索通过密钥管理模块预加载到所述接收器模块中的can标识密钥kc1。

根据本公开的第一方面的实施例,所述获取can标识密钥kc1包括:所述接收器模块用于:使用所述can标识idc1和祖先节点的密钥计算所述can标识密钥kc1,其中祖先节点的密钥通过所述密钥管理模块预加载到所述接收器模块中。

第二方面,本发明公开了一种设置在车辆中的密钥管理模块,所述密钥管理模块用于生成用于can(can)网络中的控制器局域网标识的分级树状结构。所述密钥管理模块包括:处理器;以及所述处理器可读取的非瞬时性介质。所述非瞬时性介质存储指令,所述指令在由所述处理器执行时,使得所述处理器执行以下操作:根据can标识的功能性,将所述can的can标识组织成子集,其中每一子集排列为具有根节点的树状结构,所述根节点可以表示所述子集的功能;将所述can标识的子集排列至具有根节点nr的树状结构中,其中所述子集的根节点排列为根节点nr的子孙节点;以及从所述根节点nr的子节点开始,设置所述根节点nr的密钥,并计算所述树状结构中每一层级中的每一节点的密钥,其中使用父节点的密钥和识别所述子节点的标识符计算所述树状结构中子节点的密钥。

第二方面,本发明公开了一种设置在车辆中的密钥管理模块,所述密钥管理模块用于生成用于can(can)网络中的控制器局域网标识的分级树状结构。所述密钥管理模块包括:处理器;以及所述处理器可读取的非瞬时性介质。所述非瞬时性介质存储指令,所述指令在由所述处理器执行时,使得所述处理器执行以下操作:根据can标识的功能性,将所述can的can标识组织成子集,其中每一子集排列为具有根节点的树状结构,所述根节点可以表示所述子集的功能;将所述can标识的子集排列至具有根节点nr的树状结构中,其中所述子集的根节点排列为根节点nr的子孙节点;以及从所述根节点nr的子节点开始,设置所述根节点nr的密钥,并计算所述树状结构中每一层级中的每一节点的密钥,其中使用父节点的密钥和识别所述子节点的标识符计算所述树状结构中子节点的密钥。

根据本公开的第二方面的实施例,用于指示所述处理器计算所述树状结构中每一层级中的每一节点的密钥的指令包括:用于所述树状结构中的每个子节点以及用于指示所述处理器进行以下操作的指令:使用密钥生成函数(kgf())、所述子节点kp的父节点的密钥和识别所述子节点idc的标识符计算所述树状结构中的所述子节点的密钥kc,所述密钥kc定义为kc=kgf(kp,idc)。

根据本公开的第二方面的实施例,在所述指令指示所述处理器设置所述根节点nr的密钥之前,所述密钥管理模块用于:在所述根节点nr和所述子集的一者的根节点之间选择性地插入至少一个中间节点,使得所述中间节点表示所述子集中的一者的所述根节点的祖先节点。

第三方面,本发明公开了一种设置在车辆中用于向控制器局域网(can)中的模块广播安全通信的广播模块。所述广播模块包括:处理器;以及所述处理器可读取的非瞬时性介质。所述非瞬时性介质存储指令,所述指令在由所述处理器执行时,使得所述处理器执行以下操作:生成在所述can上待传输的帧,从而所述帧与从can标识中选择的can标识idc1相关联;使用与can标识idc1节点的祖先节点相关联的祖先密钥k1和与所述can标识idc1节点相关联的根节点路径标识符计算can标识密钥kc1,其中从密钥管理模块检索所述祖先密钥k1且所述根节点路径标识符包括分配至所述can标识idc1节点的值;获取方案参数p且根据所述方案参数p、所述密钥kc1、所述can标识idc1和所述待传输的帧计算验证参数vd,其中,所述方案参数p包括所述方案唯一的变量;以及广播包括与所述can标识idc1相关联的帧和所述can上的验证参数vd的信息,使得所述can上具有包括所述can标识idc1的滤波器的接收器模块接收所述广播的信息,并使用所接收到的验证参数vd校验所接收到的帧。

根据本公开的第三方面的实施例,所述用于指示所述处理器使用与can标识idc1节点的祖先节点相关联的祖先密钥k1和与所述can标识idc1节点相关联的根节点路径标识符计算can标识密钥kc1的指令包括:用于指示所述处理器进行以下操作的指令:使用密钥生成函数(kgf())、所述can标识idc1以及所述祖先密钥k1计算所述can标识密钥kc1,其中,当所述祖先密钥k1与和所述can标识idc1相关联的节点的父节点相关联时以及当与所述can标识idc1节点相关联的所述根节点路径标识符包括所述can标识idc1时,所述密钥kc1定义为kc1=kgf(k1,idc1)。

可选地,所述方案参数p包括本地时间t,广播信息还包括所述方案参数p,从而所述广播模块包括:用于指示所述处理器进行以下操作的指令:使用所述本地时间t计算所述验证参数vd,所述验证参数vd定义为vd=mac(kc1,t||idc1||‘frame’),其中mac()是消息认证码函数,且‘frame’是在所述can上待传输的帧。

可选地,公开了一种设置在车辆中的接收器模块,所述接收器模块用于在控制器局域网(can)中接收广播信息,所述广播信息包括与can标识idc1相关联的帧、本地时间t和验证参数vd,从而所述验证参数vd定义为vd=mac(kc1,t||idc1||‘frame’),其中mac()是消息认证码函数,kc1是can标识密钥kc1,‘frame’是在所述can上广播的帧。所述接收器模块包括:处理器;以及所述处理器可读取的非瞬时性介质。所述非瞬时性介质存储指令,所述指令在由所述处理器执行时,使得所述处理器执行以下操作:获取所述can标识密钥kc1和接收器本地时间tr;根据所接收的本地时间t和所获取的接收器本地时间tr,对所接收的帧的有效性进行第一校验检查;当所述第一校验检查校验所接收的帧时,通过比较所接收的验证参数vd与接收器验证参数vrd对所接收的帧的有效性进行第二校验检查,所述接收器验证参数vrd定义为vrd=mac(kc1,t||idc1||‘frame’),其中mac()是消息认证码函数,且‘frame’是在所述can上待传输的帧;以及当所述第二校验检查校验所接收的帧时,处理所接收的帧。

可选地,公开了一种设置在车辆中的网关模块,所述网关模块用于同步控制器局域网(can)中模块的本地时间。所述网关模块包括:处理器;以及所述处理器可读取的非瞬时性介质。所述非瞬时性介质存储指令,所述指令在由所述处理器执行时,使得所述处理器执行以下操作:获取网关本地时间tg;使用所述can上所有模块传输和接收的所述网关本地时间tg生成通用帧,使得当每个模块接收到所述通用帧时,每个模块都用于:校验所接收的通用帧;以及当对所接收的通用帧进行校验时,使用所述网关本地时间tg同步所述模块的本地时间。

可选地,所述方案参数p包括与所述can标识idc1相关联的计数器ctc1,从而所述广播模块包括:用于指示所述处理器进行以下操作的指令:将所述计数器ctc1递增一,使用所述计数器ctc1计算所述验证参数vd,所述验证参数vd定义为vd=mac(kc1,ctc1||idc1||‘frame’),其中mac()是消息认证码函数,‘frame’是在所述can上待传输的帧。

可选地,公开了一种设置在车辆中的接收器模块,所述接收器模块用于在控制器局域网(can)中接收广播信息,其中,所述广播信息包括与can标识idc1相关联的帧,以及验证参数vd,从而所述验证参数vd定义为vd=mac(kc1,ctc1||idc1||‘frame’),其中mac()是消息认证码函数,kc1是can标识密钥kc1,ctc1是广播模块设置的计数器ctc1,且‘frame’是在所述can上待传输的帧。所述接收器模块包括:处理器;以及所述处理器可读取的非瞬时性介质。所述非瞬时性介质存储指令,所述指令在由所述处理器执行时,使得所述处理器执行以下操作:获取所述can标识密钥kc1和与所述can标识idc1相关联的接收器计数器ct’c1;通过比较所接收的验证参数vd与接收器验证参数vrd对所接收的帧的有效性进行校验检查,所述接收器验证参数vrd定义为vrd=mac(kc1,(ct’c1+1)||idc1||‘frame’),其中mac()是消息认证码函数,且‘frame’是在所述can上待传输的帧;以及当所述校验检查校验所接收的帧时,将所述计数器ct’c1递增一并且处理所接收的帧,其中,网关模块用于同步所述广播模块处的计数器ctc1和所述接收器模块处的计数器ct’c1。

可选地,公开了一种设置在车辆中的网关模块,所述网关模块用于同步控制器局域网(can)中模块的计数器。所述网关模块包括:处理器;以及所述处理器可读取的非瞬时性介质。所述非瞬时性介质存储指令,所述指令在由所述处理器执行时,使得所述处理器执行以下操作:获取与所述can标识idc1相关联的所述计数器ctc1;使用所述计数器ctc1和所述can标识idc1生成计数器帧;在所述can上广播所述计数器帧,使得当所述can上具有计数器的每个模块接收所述计数器帧时,每个模块用于:使用所接收的计数器帧同步所述模块中的计数器。

可选地,所述方案参数p包括临时值n,从而所述广播模块包括:用于指示所述处理器进行以下操作的指令:使用所述临时值n计算所述验证参数vd,所述验证参数vd定义为vd=mac(kc1,n||idc1||‘frame’),其中mac()是消息认证码函数,且‘frame’是在所述can上待传输的帧。

可选地,公开了一种设置在车辆中的接收器模块,所述接收器模块用于在控制器局域网(can)中接收广播信息,其中,所述广播信息包括与can标识idc1相关联的帧,以及验证参数vd,从而将所述验证参数vd定义为vd=mac(kc1,n||idc1||‘frame’),其中mac()是消息认证码函数,kc1是can标识密钥kc1,n是广播模块设置的临时值,且‘frame’是在所述can上待传输的帧。所述接收器模块包括:处理器;以及所述处理器可读取的非瞬时性介质。所述非瞬时性介质存储指令,所述指令在由所述处理器执行时,使得所述处理器执行以下操作:获取所述can标识密钥kc1和接收器临时值n’;通过比较所接收的验证参数vd与接收器验证参数vrd,对所接收的帧的有效性进行校验检查,所述接收器验证参数vrd定义为vrd=mac(kc1,n’||idc1||‘frame’),其中mac()是消息认证码函数,且‘frame’是在所述can上待传输的帧;以及当所述校验检查校验所接收的帧时,处理所接收的帧,其中,网关模块用于同步所述广播模块处的临时值n和所述接收器模块处的临时值n’。

可选地,公开了一种设置在车辆中的网关模块,所述网关模块用于同步控制器局域网(can)中模块的临时值。所述网关模块包括:处理器;以及所述处理器可读取的非瞬时性介质。所述非瞬时性介质存储指令,所述指令在由所述处理器执行时,使得所述处理器执行以下操作:生成所述临时值n;使用所述临时值n生成临时帧;在所述can上广播所述临时帧,使得当所述can上的每个模块接收所述临时帧时,每个模块用于:使用所接收的临时帧在所述模块中接收和存储所述临时值。

可选地,所述方案参数p包括本地时间t和与can标识idc1相关联的计数器ctc1,所述广播信息还包括所述方案参数p,从而所述广播模块包括:用于指示所述处理器进行以下操作的指令:将所述计数器ctc1递增一,且使用所述本地时间t和所述计数器ctc1计算所述验证参数vd,所述验证参数vd定义为vd=mac(kc1,t||ctc1||idc1||‘frame’),其中mac()是消息认证码函数,且‘frame’是在所述can上待传输的帧。

可选地,公开了一种设置在车辆中的接收器模块,所述接收器模块用于在控制器局域网(can)中接收广播信息,所述广播信息包括与can标识idc1相关联的帧、本地时间t,以及验证参数vd,从而所述验证参数vd定义为vd=mac(kc1,t||ctc1||idc1||‘frame’),其中mac()是消息认证码函数,kc1是can标识密钥kc1,ctc1是广播模块设置的计数器ctc1,且‘frame’是在所述can上待传输的帧。所述接收器模块包括:处理器;以及所述处理器可读取的非瞬时性介质。所述非瞬时性介质存储指令,所述指令在由所述处理器执行时,使得所述处理器执行以下操作:获取所述can标识密钥kc1、接收器本地时间tr和与所述can标识idc1相关联的接收器计数器ct’c1;根据所接收的本地时间t和所获取的接收器本地时间tr对所接收的帧的有效性进行第一校验检查;当所述第一校验检查校验所接收的帧时,通过比较所接收的验证参数vd与接收器验证参数vrd,对所接收的帧的有效性进行第二校验检查,所述接收器验证参数vrd定义为vrd=mac(kc1,t||(ct’c1+1)||idc1||‘frame’),其中mac()是消息认证码函数,且‘frame’是在所述can上待传输的帧;以及当所述第二校验检查校验所接收的帧时,将所述计数器ct’c1递增一,并对所接收的帧进行处理,其中,网关模块用于将所述广播模块处的计数器ctc1和所述接收器模块处的计数器ct’c1进行同步。

可选地,所述方案参数p包括临时值n以及与所述can标识idc1相关联的计数器ctc1,从而所述广播模块包括:用于指示所述处理器进行以下操作的指令:将所述计数器ctc1递增一,使用所述临时值n和所述计数器ctc1计算所述验证参数vd,所述验证参数vd定义为vd=mac(kc1,n||ctc1||idc1||‘frame’),其中mac()是消息认证码函数,且‘frame’是在所述can上待传输的帧。

可选地,公开了一种设置在车辆中的接收器模块,所述接收器模块用于在控制器局域网(can)中接收广播信息,所述广播信息包括与can标识idc1相关联的帧,以及验证参数vd,从而所述验证参数vd定义为vd=mac(kc1,n||ctc1||idc1||‘frame’),其中mac()是消息认证码函数,n是广播模块设置的临时值,ctc1是所述广播模块设置的计数器ctc1,且‘frame’是在所述can上待传输的帧。所述接收器模块包括:处理器;以及所述处理器可读取的非瞬时性介质。所述非瞬时性介质存储指令,所述指令在由所述处理器执行时,使得所述处理器执行以下操作:获取所述can标识密钥kc1、接收器临时值n’和与所述can标识idc1相关联的接收器计数器ct’c1;通过比较所接收的验证参数vd与接收器验证参数vrd,对所接收的帧的有效性进行校验检查,所述接收器验证参数vrd定义为vrd=mac(kc1,n’||(ct’c1+1)||idc1||‘frame’),其中mac()是消息认证码函数,且‘frame’是在所述can上待传输的帧;以及当所述校验检查校验所接收的帧时,将所述计数器ct’c1递增一且处理所接收的帧,其中,网关模块用于广播位于所述广播模块的所述临时值n和位于所述接收器模块的所述临时值n’,并且同步位于所述广播模块的所述计数器ctc1和位于所述接收器模块的所述计数器ct’c1。

第四方面,本发明公开了一种用于生成用于can(can)网络中的控制器局域网身份的分级树状结构的方法。所述方法使用设置在车辆中的密钥管理模块,包括:根据can标识的功能性,将所述can的can标识组织成子集,其中每一子集排列为具有根节点的树状结构,所述根节点可以表示所述子集的功能;将所述can标识的子集排列至具有根节点nr的树状结构中,其中所述子集的根节点排列为根节点nr的子孙节点;以及从所述根节点nr的子节点开始,设置所述根节点nr的密钥,并计算所述树状结构中每一层级中的每一节点的密钥,其中使用父节点的密钥和识别所述子节点的标识符计算所述树状结构中子节点的密钥。

根据本公开的第四方面的实施例,所述计算所述树状结构中每一层级中的每一节点的密钥包括:对于所述树状结构中的每一子节点,使用密钥生成函数(kgf())、所述子节点kp的父节点的密钥和识别所述子节点idc的标识符计算所述树状结构中的所述子节点的密钥kc,所述密钥kc定义为kc=kgf(kp,idc)。

根据本公开的第四方面的实施例,在设置所述根节点nr的密钥之前,所述方法包括以下步骤:在所述根节点nr和所述子集的一者的根节点之间选择性地插入至少一个中间节点,使得所述中间节点表示所述子集中的一者的所述根节点的祖先节点。

第五方面,本发明公开了一种使用设置在车辆中的广播模块向控制器局域网(can)中的模块广播安全通信的方法,包括:生成在所述can上待传输的帧,从而所述帧与从can标识中选择的can标识idc1相关联;使用与can标识idc1节点的祖先节点相关联的祖先密钥k1和与所述can标识idc1节点相关联的根节点路径标识符计算can标识密钥kc1,其中从密钥管理模块检索所述祖先密钥k1且所述根节点路径标识符包括分配至所述can标识idc1节点的值;获取方案参数p且根据所述方案参数p、所述密钥kc1、所述can标识idc1和所述待传输的帧计算验证参数vd,其中,所述方案参数p包括所述方案唯一的变量;以及广播包括与所述can标识idc1相关联的帧和所述can上的验证参数vd的信息,使得所述can上具有包括所述can标识idc1的滤波器的接收器模块接收所述广播的信息,并使用所接收到的验证参数vd校验所接收到的帧。

根据本公开的第五方面的实施例,所述使用与can标识idc1节点的祖先节点相关联的祖先密钥k1和与所述can标识idc1节点相关联的根节点路径标识符计算can标识密钥kc1包括:使用密钥生成函数(kgf())、所述can标识idc1以及所述祖先密钥k1计算所述can标识密钥kc1,其中,当所述祖先密钥k1与和所述can标识idc1相关联的节点的父节点相关联时以及当与所述can标识idc1节点相关联的所述根节点路径标识符包括所述can标识idc1时,所述密钥kc1定义为kc1=kgf(k1,idc1)。

可选地,所述方案参数p包括本地时间t,广播信息还包括所述方案参数p,从而所述方法包括以下步骤:使用所述本地时间t计算所述验证参数vd,所述验证参数vd定义为vd=mac(kc1,t||idc1||‘frame’),其中mac()是消息认证码函数,且‘frame’是在所述can上待传输的帧。

可选地,公开了一种用于在控制器局域网(can)中接收广播信息的方法,所述广播信息包括与can标识idc1相关联的帧、本地时间t和验证参数vd,从而所述验证参数vd定义为vd=mac(kc1,t||idc1||‘frame’),其中mac()是消息认证码函数,kc1是can标识密钥kc1,‘frame’是在所述can上广播的帧。所述方法使用设置在车辆中的接收器模块,包括:获取所述can标识密钥kc1和接收器本地时间tr;根据所接收的本地时间t和所获取的接收器本地时间tr,对所接收的帧的有效性进行第一校验检查;当所述第一校验检查校验所接收的帧时,通过比较所接收的验证参数vd与接收器验证参数vrd对所接收的帧的有效性进行第二校验检查,所述接收器验证参数vrd定义为vrd=mac(kc1,t||idc1||‘frame’),其中mac()是消息认证码函数,且‘frame’是在所述can上待传输的帧;以及当所述第二校验检查校验所接收的帧时,处理所接收的帧。

可选地,公开了一种用于同步控制器局域网(can)中模块的本地时间的方法。所述方法使用设置在车辆中的网关模块,包括:获取网关本地时间tg;使用所述can上所有模块传输和接收的所述网关本地时间tg生成通用帧,使得当每个模块接收到所述通用帧时,每个模块都用于:验证所接收的通用帧;以及当对所接收的通用帧进行校验时,使用所述网关本地时间tg同步所述模块的本地时间。

可选地,所述方案参数p包括与所述can标识idc1相关联的计数器ctc1,从而所述方法包括以下步骤:将所述计数器ctc1递增一,使用所述计数器ctc1计算所述验证参数vd,所述验证参数vd定义为vd=mac(kc1,ctc1||idc1||‘frame’),其中mac()是消息认证码函数,‘frame’是在所述can上待传输的帧。

可选地,公开了一种用于在控制器局域网(can)中接收广播信息的方法,其中,所述广播信息包括与can标识idc1相关联的帧,以及验证参数vd,从而所述验证参数vd定义为vd=mac(kc1,ctc1||idc1||‘frame’),其中mac()是消息认证码函数,kc1是can标识密钥kc1,ctc1是广播模块设置的计数器ctc1,且‘frame’是在所述can上待传输的帧。所述方法使用设置在车辆中的接收器模块,包括:获取所述can标识密钥kc1和与所述can标识idc1相关联的接收器计数器ct’c1;通过比较所接收的验证参数vd与接收器验证参数vrd对所接收的帧的有效性进行校验检查,所述接收器验证参数vrd定义为vrd=mac(kc1,(ct’c1+1)||idc1||‘frame’),其中mac()是消息认证码函数,且‘frame’是在所述can上待传输的帧;以及当所述校验检查校验所接收的帧时,将所述计数器ct’c1递增一并且处理所接收的帧,其中,网关模块用于同步所述广播模块处的计数器ctc1和所述接收器模块处的计数器ct’c1。

可选地,公开了一种用于同步控制器局域网(can)中模块的计数器的方法。所述方法使用设置在车辆中的网关模块,包括:获取与所述can标识idc1相关联的所述计数器ctc1;使用所述计数器ctc1和所述can标识idc1生成计数器帧;在所述can上广播所述计数器帧,使得当所述can上具有计数器的每个模块接收所述计数器帧时,每个模块用于:使用所接收的计数器帧同步所述模块中的计数器。

可选地,所述方案参数p包括临时值n,从而所述方法包括以下步骤:使用所述临时值n计算所述验证参数vd,所述验证参数vd定义为vd=mac(kc1,n||idc1||‘frame’),其中mac()是消息认证码函数,且‘frame’是在所述can上待传输的帧。

可选地,公开了一种用于在控制器局域网(can)中接收广播信息的方法,所述广播信息包括与can标识idc1相关联的帧,以及验证参数vd,从而所述验证参数vd定义为vd=mac(kc1,n||idc1||‘frame’),其中mac()是消息认证码函数,kc1是can标识密钥kc1,n是广播模块设置的临时值,且‘frame’是在所述can上待传输的帧。所述方法使用设置在车辆中的接收器模块,包括:获取所述can标识密钥kc1和接收器临时值n’;通过比较所接收的验证参数vd与接收器验证参数vrd,对所接收的帧的有效性进行校验检查,所述接收器验证参数vrd定义为vrd=mac(kc1,n’||idc1||‘frame’),其中mac()是消息认证码函数,且‘frame’是在所述can上待传输的帧;以及当所述校验检查校验所接收的帧时,处理所接收的帧,其中,网关模块用于同步所述广播模块处的临时值n和所述接收器模块处的临时值n’。

可选地,公开了一种用于同步控制器局域网(can)中模块的临时值的方法。所述方法使用设置在车辆中的网关模块,包括:生成所述临时值n;使用所述临时值n生成临时帧;在所述can上广播所述临时帧,使得当所述can上的每个模块接收所述临时帧时,每个模块用于:使用所接收的临时帧在所述模块中接收和存储所述临时值。

可选地,所述方案参数p包括本地时间t和与can标识idc1相关联的计数器ctc1,所述广播信息还包括所述方案参数p,从而所述方法包括以下步骤:将所述计数器ctc1递增一,且使用所述本地时间t和所述计数器ctc1计算所述验证参数vd,所述验证参数vd定义为vd=mac(kc1,t||ctc1||idc1||‘frame’),其中mac()是消息认证码函数,且‘frame’是在所述can上待传输的帧。

可选地,公开了一种用于在控制器局域网(can)中接收广播信息的方法,所述广播信息包括与can标识idc1相关联的帧、本地时间t,以及验证参数vd,从而所述验证参数vd定义为vd=mac(kc1,t||ctc1||idc1||‘frame’),其中mac()是消息认证码函数,kc1是can标识密钥kc1,ctc1是广播模块设置的计数器ctc1,且‘frame’是在所述can上待传输的帧。所述方法使用设置在车辆中的接收器模块,包括:获取所述can标识密钥kc1、接收器本地时间tr和与所述can标识idc1相关联的接收器计数器ct’c1;根据所接收的本地时间t和所获取的接收器本地时间tr对所接收的帧的有效性进行第一校验检查;当所述第一校验检查校验所接收的帧时,通过比较所接收的验证参数vd与接收器验证参数vrd,对所接收的帧的有效性进行第二校验检查,所述接收器验证参数vrd定义为vrd=mac(kc1,t||(ct’c1+1)||idc1||‘frame’),其中mac()是消息认证码函数,且‘frame’是在所述can上待传输的帧;以及当所述第二校验检查校验所接收的帧时,将所述计数器ct’c1递增一,并对所接收的帧进行处理,其中,网关模块用于将所述广播模块处的计数器ctc1和所述接收器模块处的计数器ct’c1进行同步。

可选地,所述方案参数p包括临时值n以及与所述can标识idc1相关联的计数器ctc1,从而所述方法包括以下步骤:将所述计数器ctc1递增一,使用所述临时值n和所述计数器ctc1计算所述验证参数vd,所述验证参数vd定义为vd=mac(kc1,n||ctc1||idc1||‘frame’),其中mac()是消息认证码函数,且‘frame’是在所述can上待传输的帧。

可选地,公开了一种用于在控制器局域网(can)中接收广播信息的方法,所述广播信息包括与can标识idc1相关联的帧,以及验证参数vd,从而将所述验证参数vd定义为vd=mac(kc1,n||ctc1||idc1||‘frame’),其中mac()是消息认证码函数,n是广播模块设置的临时值,ctc1是所述广播模块设置的计数器ctc1,且‘frame’是在所述can上待传输的帧。所述方法使用设置在车辆中的接收器模块,包括:获取所述can标识密钥kc1、接收器临时值n’和与所述can标识idc1相关联的接收器计数器ct’c1;通过比较所接收的验证参数vd与接收器验证参数vrd,对所接收的帧的有效性进行校验检查,所述接收器验证参数vrd定义为vrd=mac(kc1,n’||(ct’c1+1)||idc1||‘frame’),其中mac()是消息认证码函数,且‘frame’是在所述can上待传输的帧;以及当所述校验检查校验所接收的帧时,将所述计数器ct’c1递增一且处理所接收的帧,其中,网关模块用于广播位于所述广播模块的所述临时值n和位于所述接收器模块的所述临时值n’,并且同步位于所述广播模块的所述计数器ctc1和位于所述接收器模块的所述计数器ct’c1。

附图说明

以下详细描述中描述了本发明的优点和特征,并且本发明的优点和特征在以下图式中示出:

图1为控制器局域网(can)中的模块和设备的代表框图;

图2为本发明实施例提供的执行实施例的电子设备或模块的组件的代表框图;

图3为本发明实施例提供的包含在车载系统内的模块的代表框图,借此这些模块根据其功能性分组;

图4为本发明实施例提供的树状结构的框图,借此can标识的子集已根据其功能性在该树状结构中分组;

图5为本发明实施例提供的树状结构的框图,借此can标识的子集已根据其功能性在该树状结构中分组,且中间节点已插入子集的根与树状结构的根节点之间;以及

图6为本发明实施例提供的在can网络中验证在can网络上发布及接收的消息的过程的流程图。

具体实施方式

本发明涉及一种安全管理控制器局域网(can)中模块间通信的系统和方法。具体地,系统采用分级密钥生成方法来生成can网络中所有can标识的密钥。之后,can网络中的任何模块可以利用单个祖先密钥以及相关标识符来生成can网络中的can标识的子孙密钥。can广播和接收器模块接着使用针对can标识产生的密钥以产生验证参数,之后can广播和接收器模块利用所述验证参数来执行对公布的消息的验证。

本领域的技术人员将认识到,在整个说明书中,本说明书中的许多功能单元已经被标记为模块。本领域的技术人员也将认识到,模块可实施为电路、逻辑芯片或任何种类的离散组件。此外,本领域的技术人员还将认识到可在软件中实施模块,而许多处理器可随后实施该软件。在本发明的实施例中,模块也可包括计算机指令或可执行代码,其可指示计算机处理器基于所接收的指令执行一系列事件。将模块的实施方案的选择作为本领域的技术人员的设计选择,且不以任何方式限制本发明的范围。

图1示出了在can网络中管理模块间安全通信的系统100。图1所示的系统100包括模块105、106和107、设备115、116和117、网关模块130和can总线110。此外,虽然图1仅示出三个模块、一个网关模块和三个设备,但是本领域的技术人员将认识到,在不脱离本发明的情况下,任何数量的模块、设备和网关可应用于系统100。在本发明的实施例中,模块105至107可包括设备,例如但不限于用于控制现代车辆中的各种子系统的电子控制单元(ecu)。

can总线110可包括一根用于将can网络中的所有节点连接在一起的双线总线。本领域的技术人员将认识到,can网络中的节点可以指任何简单的i/o设备,例如,设备115、116或117,或具有can接口的嵌入式计算机,例如,模块105、106或107。此外,can网络上的节点也可以指网关模块,其允许外部计算机之间经由通用串行总线(usb)或通往can网络中的设备和/或模块的以太网端口进行通信。

在本发明的实施例中,装置115至117可包括i/o设备,例如传感器,例如速度、光、停车、温度传感器等,或用于控制汽车中的液压或机械机构,例如,电力窗口、转向、座椅执行器等)的执行器。

模块105至107中的每一个都配备有处理器(cpu)和can专用硬件,使得每一个模块将具有用于公布帧/或订阅can网络上的帧的必要协议。注意到由can网络中的模块传输的数据单元被定义为帧,且在can帧中的两个重要字段是帧的‘标识’字段和‘数据’字段是有用的。设置了帧的can标识或canid的can帧的标识符字段用于在数据字段包含帧的实际负载的同时,定义帧的消息类型。举例来说,帧的canid可指示车辆参数,例如‘驾驶速度’、‘燃料压力’、‘发动机旋转速度’等。

还应注意,can帧不指定其接收方的标识,也不指定其发送方的标识。相反,can通信采用发布-订阅消息传递模式,借此发布的消息是基于消息的标识符特征化的。这意味着只有拥有合适的、具有消息标识符的过滤器的用户才能够订阅消息,因此,能够接收并读取消息。由于这种消息传递模式,消息的发布者并不知道接收其发布的消息的用户。

因此,can网络上的模块可能接收的帧的类型由模块的过滤器确定。图1最好地描述了该发布-订阅消息传递模式。如果假定模块105用于广播具有can标识‘b’的帧,这意味着只有模块107能够接收具有can标识‘b’的帧,因为模块107具有can标识‘b’的过滤器。因为模块106具有can标识‘a’的过滤器,模块106将过滤出所有不含有can标识‘a’的帧,其中can标识‘a’包含模块105传输的帧。

can网络中的另一节点是包括通过can总线110连接到can网络的计算机服务器的网关模块130。具体地,根据本发明的实施例,网关模块130通常在车辆内且用于管理和/或生成can网络中的节点的密钥。下面将更详细地描述网关模块的具体工作。

图2为本发明实施例提供的电子设备200的组件的代表框图,该电子设备200是在模块105至107内,用于实现实施例。这些组件也可以在网关模块130中。本领域的技术人员将认识到,每个模块或控制器内的每一电子设备的确切配置可以不同,电子装置200的确切配置可变化,且图2的布局和配置仅供参考。

在本发明的实施例中,装置200包括控制器201,可选地,也包括用户接口202。如果提供了用户接口202,那么用户接口202经布置以确保用户与电子装置200之间的手动交互,且出于此目的,用户接口202包括用户输入指令以控制电子装置200这一行为所需的输入/输出组件。本领域的技术人员将认识到,用户接口202的组件在各实施例中可能不同,但通常包含显示器240、键盘235和触控板236中的一者或多者。

控制器201经由总线215与用户接口202进行数据通信且包含存储器220、安装在电路板上的中央处理器(cpu)205,其中所述中央处理器处理用于执行本实施例的方法的指令和数据,操作系统206、用于与用户接口202通信的输入/输出(i/o)接口230,和在此实施例中,呈网卡250的形式的通信接口。网卡250可以,例如,用于经由有线或无线网络将数据从电子设备200发送到其它处理设备或经由有线或无线网络接收数据。可由网卡250使用的无线网络包含但不限于无线保真(wi-fi)、蓝牙、近场通信(nfc)、蜂窝式网络、卫星网络、电信网络、广域网(wan)等。

存储器220和操作系统206经由总线210与cpu205进行数据通信。存储器组件包含易失性和非易失性存储器以及不止一个每种类型的存储器,包含随机存取存储器(ram)220、只读存储器(rom)225和大容量存储设备245,大容量存储设备包括一个或多个固态驱动器(ssd)。存储器220也包含用于安全地存储例如根密钥和/或私用密钥等私用密码密钥的安全存储装置246。应注意,安全存储装置246内的内容仅可由装置200的超用户或管理员访问,且不可由装置200的任何简单用户访问。本领域的技术人员将认识到,上文所描述的存储器组件包括非瞬时性计算机可读介质,且应被视为包括除瞬时性传播信号以外的所有计算机可读介质。通常,指令作为程序代码存储在存储器组件中,但也可以是固线的。存储器220可包含内核和/或编程模块,例如可存储在易失性或非易失性存储器中的软件应用。

应注意,名词“cpu”一般用于指代可处理此类指令的任何设备或组件,可包含:微处理器、微控制器、可编程逻辑设备或其它计算设备。也就是说,cpu205可由任何合适的逻辑电路提供,用于接收输入、根据存储于存储器中的指令处理输入并产生输出(例如,到存储器组件或在显示器240上)。在本实施例中,cpu205可为具有存储器可寻址空间的单核或多核处理器。例如,cpu205可为多核,例如包括8核cpu。

图3为本发明实施例提供的模块的示例,其中模块包含于利用can网络互相通信的车载系统。尽管图3仅示出了电子控制单元(ecu),但本领域的技术人员将认识到车载系统300也可包含各种类型的i/o设备,且可使用其它类型的模块代替ecu,只要设备和模块具有在can网络上通信的所需协议即可。

在本发明的实施例中,ecu1可表示传输控制ecu,ecu2可表示动力总成控制ecu,并且ecu3可表示发动机控制ecu。因为所有这些ecu都与车辆的动力相关,所以这些类型的ecu可由网关305在与车辆的动力相关的子组中分组在一起。类似地,在本发明的实施例中,ecu4可以表示转向控制ecu,ecu5可以表示安全气囊控制ecu,并且ecu6可以表示制动系统控制ecu。因为所有这些ecu都与车辆的底盘控制相关,所以这些类型的ecu可由网关305一起分在一个与车辆底盘相关的子组里。对于最后一组ecu,ecu7可表示座椅控制ecu,ecu8可表示门控制ecu,且ecu9可表示加热、通风和空气调节系统ecu。因为所有这些ecu都与车辆的主体相关,所以这些类型的ecu可由网关305一起分在一个与车辆主体相关的子组里。综上所述,本领域的技术人员将认识到,车载系统300可包括其它模块/ecu,且这些模块可基于系统中的模块各自的功能性以各种组合进行分组。

车载系统300也包含网关305,其用于通过总线310控制和管理多个ecu(例如ecu1到ecu9)。网关305通过管理车载系统300的can网络中的每个节点的鉴权密钥的产生和分布来实现此目的。因此,网关305通常包括只有车辆信任的用户或由车辆的所有者指定的管理员可以访问的安全服务器。

具体地,网关305以以下方式生成can网络中的所有can-id的鉴权密钥。例如基于can-id的功能性,网关305首先将can网络中的所有can-id组织到各种子集中。举例来说,与自动启动/停止功能,例如,速度传感器、转向角度、发动机速度和发动机风扇速度,相关的can-id将全部一起分组到第一子集中,与停车辅助功能,例如,停车传感器和侧门镜电机,相关的can-id将全部一起分组到第二子集中,且与制动功能,例如,道路速度传感器、安全带传感器和倾斜传感器,相关的can-id传感器将全部一起分组到第三子集中。之后网关305将每个子集布置为树状结构,借此每一树状结构都具有表示子集中的can-id的功能的根节点。图4示出了示范性树状结构。

参考图4且基于以上实例,第一子集可由包括树节点420、422、424、426和428(即,表示can-id的一个根节点和四个节点)的树状结构表示。因为节点420是此树状结构(即,第一子集)的根节点,节点420表示自动开始/停止功能,其为第一子集的功能。对于其余节点422、424、426和428,这些节点中的每一者之后可用于表示来自第一子集的can-id。举例来说,节点422可表示can-id‘速度传感器’,节点424可表示can-id‘转向角’,节点426可表示can-id‘发动机速度’,以及节点428可表示can-id‘发动机风扇速度’。

类似地,如果第二和第三子集将被转换成两者各自对应的树状结构,这将导致第二子集由包括树节点430、432和434的树状结构表示,而第三子集由包括树节点410、412、414和416的树状结构表示。由于节点430为其树状结构(即,第二子集)的根节点,因此节点430表示停车辅助功能,其为第二子集的功能。其余节点432和434之后用于表示第二子集中各自的can-id。类似地,如果节点410是其树状结构(即,第三子集)的根节点,节点410表示制动功能,其为第三子集的功能。剩余节点412、414和416之后用于表示第三子集中的各自的can-id。

网关305随后将这些子集布置成单个统一树状结构400,借此与每个can-id子集相关联的根节点将直接连接到根节点405。节点这样连接使得这些子集的根节点和其各自的can-id被当作根节点405的子孙节点。一般来说,子孙节点是指驻留在树状结构400较低层的节点,例如,子节点、孙子节点等。在此配置中,节点410、420和430被视为根节点405的子节点,节点412、414和416被视为节点410的子节点,节点422、424、426和428被视为节点420的子节点,并且节点432和434被视为节点430的子节点。相反地,与这些叶节点相比,当根节点405驻留在树状结构400的较高层时,根节点405可被视为叶节点412-416、422-428、432和434的祖先节点。

一旦已经产生树状结构400,网关305随后为根节点405设置一个根密钥nr。然后网关305从根节点405的子节点开始为树状结构400中的每个节点计算密钥,其中树状结构中子节点的密钥是通过使用父节点的密钥和标识子节点的标识符计算的。例如,当网关305为节点410计算密钥时,网关305将利用节点410的父节点的密钥,即根密钥nr,和针对节点410的所述标识符。

在本发明的实施例中,与can-id相关联的节点的标识符是can-id自身,而每一个子集的根节点的标识符(即,节点410、420、430)可包括可用于标识每一子子集的根节点的根节点路径的字母数字标识符或任何其它类型或形式的字母数字标识符。根节点路径的字母数字标识符指的是当从根405追踪路径时已经分配给特定节点的值。举例来说,对于子集根节点410,具有值‘0’的根节点路径字母数字标识符可被分配给该节点,而不同的具有值‘1’的根节点路径字母数字标识符可被分配给子集根节点420,另一个具有值‘3’的根节点路径字母数字标识符可被分配给子集根节点430。

返回到以上实例,这意味着当网关305为节点410计算密钥时,网关305将利用节点410的父节点的密钥,即根密钥nr,和针对节点410的所述标识符来计算节点410的密钥k410,其中针对节点410的所述标识符是值‘0’(假设这个子集的根节点包括根节点路径字母数字标识符值‘0’)。

在本发明的实施例中,可使用以下等式计算树状结构400中每一节点的密钥:

keynode=kgf(kparent,alphanumericidentifier)

其中keynode表示节点的密钥,kgf被定义为密钥生成函数,kparent被定义为属于节点的父节点的密钥,且字母数字标识符被定义为用于标识节点的字母数字标识符。在本发明的实施例中,密钥产生函数可包括密钥导出函数h()。

因此,根据以上实施例,针对节点410的密钥k410可定义为k410=h(nr,0)。类似地,如果以上等式适用于为节点412(其与can-id相关联)获得密钥,可获得节点412的密钥k412:k412=h(k410,can-id412),其中can-id412指的是与此节点相关的can-id,例如倾斜传感器。

因此,可以说当网关305具备根密钥nr与节点412的祖先节点的标识符时,网关305能够为节点412计算密钥k412。应注意,若给定节点的密钥,没有其它节点(除了网关305)能够计算其父节点的密钥。

在本发明的另一个实施例中,一旦已经使用子集和子集的根节点生成树状结构400,网关305将随后选择性地在整个树的根节点与子集的一些根节点之间插入中间节点,使得这些中间节点驻留在整个树状结构的根节点与子集的根节点之间。这表示树状结构的更一般情况,且图5中说明了此实施例。

图5所示的树状结构与图4所示的树状结构相似,只是增加了中间节点552和554换句话说,树状结构500的叶节点表示can网络的can-id,而节点510、520、530和540表示其每个各自子集的根节点。

一旦已经生成并选择性地用中间节点填充树状结构500,网关305随后为根节点505设置根密钥nr。之后,网关305将从根节点505的子节点开始为树状结构500中的每个节点计算密钥,其中树状结构中的子节点的密钥是通过使用父节点的密钥和标识子节点的标识符计算的。例如,当网关305为中间节点552计算密钥时,网关305将利用节点552的父节点的密钥,即根密钥nr,和针对节点552的所述标识符来计算密钥k552。

在本发明的实施例中,中间节点(即,节点552、554)的标识符可包括可用于标识每一中间节点的根节点路径的字母数字标识符或任何其它类型或形式的字母数字标识符。根节点路径的字母数字标识符指的是当从根505追踪路径时已经分配给特定节点的值。举例来说,对于子集根节点510,具有值‘0’的根节点路径字母数字标识符可被分配给该节点,而不同的具有值‘1’的根节点路径字母数字标识符可被分配给中间节点552此外,具有值‘0’的根节点路径字母数字标识符可被分配给子集根节点520,不同的具有值‘1’的根节点路径字母数字标识符可被分配给中间节点554,等等。

返回到以上实例,对于本发明的实施例而言,这意味着当网关305为中间节点552计算密钥时,网关305将利用节点552的父节点的密钥,即根密钥nr,和针对节点552的所述标识符来计算节点552的密钥k552,其中针对节点552的所述标识符是值‘1’(假设中间节点包括根节点路径字母数字标识符值‘1’)

因此,基于上述实施例描述的等式,针对节点552的密钥k552可被定义为k552=h(nr,1)。类似地,如果应用以上等式来获得子集根节点520的密钥(假设此节点包括根节点路径字母数字标识符值‘0’),可获得节点520的密钥k520:k520=h(k552,0)。

类似地,当网关305具有根密钥nr和节点544的祖先节点的标识符(即,节点540、554、552的标识符)时,网关305能够为节点554计算密钥k544。

一旦网关305已经计算出树状结构中所有节点的密钥,网关305将密钥选择性地分配到can网络中的模块。在本发明的实施例中,网关305将基于can网络中的模块的功能性分配密钥。这样可确保每个模块都不会被授予权限访问与该模块的功能性无关的祖先密钥。

总而言之,can网络中可能有数百can-id,因为每一个can-id标识一个由系统的单元或设备执行的特定功能。因此,如果can网络中的每个模块为can网络中的每个可能的can-id存储鉴权密钥,这意味着需要每个模块都安全地存储和检索各自can-id的鉴权密钥。通过实施由网关305生成的树状结构,这意味着can网络中的每个模块只需要存储所选择的几个祖先密钥、授权的canid和对应的根节点路径的字母数字标识符。

图6为本发明实施例提供的在can网络中验证在can网络上发布及接收的消息的过程600的流程图。图6示出了用于广播can帧的模块605和具有合适过滤器以接收广播帧的模块610。图6还示出了用于生成分级树状结构的网关615,所述分级树状结构含有can网络上针对can-id的所有密钥。假设在过程600开始之前,合适的密钥已被网关615分配到模块605和610。这些密钥将由网关615基于授权给每一相关模块的接入功能性或等级而分配。举例来说,如果模块605具有较高的功能性级别或如果此模块已经被授予了广播与can网络中大部分can-id相关的帧的权利,这意味着能够为相关can-id生成相关子孙密钥的祖先密钥会被分配给模块605。

使用本地时间t的消息验证

过程600以模块605生成将要在can网络上广播的帧开始,借此帧与can-id‘idi’相关联。这意味着帧中的标识字段包括标识符‘idi’。之后,模块605检索与can-id‘idi’相关联的密钥kidi。这在步骤620处发生。

在本发明的实施例中,提供给模块605的密钥kidi可为can-id‘idi’的实际密钥。在此实施例中,模块605随后继续步骤622。

在本发明的另一个实施例中,提供给模块605的密钥可以是can-id‘idi’的祖先密钥kparent。举例来说,参考上文所论述的树状结构,密钥kparent可与节点相关联,其中该节点是节点can-id‘idi’的父节点。在此情况下,这意味着为了获得节点can-id‘idi’的密钥,模块605需要利用密钥‘kparent’以及节点can-id‘idi’的标识符,来计算此节点的密钥。

又例如,提供给模块605的密钥可与节点相关联,该节点为节点can-idno‘idi’的祖父节点,即kgrandparent。在此情况下,这意味着为了获得节点can-id‘idi’的密钥,模块605首先必须使用密钥‘kgrandparent’和can-id‘idi’的父节点的标识符,来计算can-id‘idi’的父节点的密钥‘kparent’。之后,模块605需要使用密钥‘kparent’和节点can-id‘idi’的标识符来计算can-id‘idi’节点的密钥kid。

本领域的技术人员将认识到,这两个实例并不以任何方式限制本发明,且模块605可能具有位于分级树状结构任一层的祖先密钥。

一旦已经为can-id‘idi’计算或检索出合适密钥,模块605随后继续步骤622。

随后,在步骤622,模块605继续获取本地时间t。模块605随后根据检索到的密钥kidi、本地时间t、can-id的标识符‘idi’及将要在can网络上广播的帧计算验证参数vd。具体地,验证参数vd被定义为vd=mac(kidi,t||idi||frame),其中mac是指消息认证码函数,idi是can-id的标识符。

模块605随后会在步骤625向can网络广播所述验证参数vd、所述本地时间t及所述帧。总的来说,当can网络上的一个模块广播了一个帧,只有can网络上拥有合适的过滤器的模块才能收该帧。

假设模块610具备针对can-id‘idi’的过滤器,这意味着模块610将能够接收到模块605广播的帧。

同时,模块610也将接收到模块605广播的所述验证参数vd及所述本地时间t。

在步骤626,模块610随后会得到自身的本地时间t’。模块610随后计算其得到的本地时间t’与接收到的时间t之间的差,即|t’-t|。若所述差超出预定时间窗,模块610随后会丢弃接收到的包含所述帧的信息。所述预定时间窗的长度留作本领域的技术人员的一个设计选项。

相反,若t’与t之间的差在所述时间窗内,模块610随后继续检索与can-id‘idi’相关联的密钥kidi。这在步骤628处发生。在本发明的实施例中,提供给模块610的密钥kidi可以是所述can-id‘idi’的实际密钥。在此实施例中,模块610会在步骤630继续计算自身的验证参数vd’。在本发明的另一个实施例中,提供给模块610的所述密钥kidi反而可以是can-id‘idi’的祖先密钥。在此实施例中,会要求模块610为can-id‘idi’计算密钥,且该要求可通过上述步骤实现。

一旦为can-id‘idi’计算或检索出合适密钥kidi,模块610随后继续步骤630。

在步骤630,模块610随后根据所述检索到的密钥kidi、所述接收到的时间t、所述接收到的帧及在所述can网络上接收到的所述can-id帧的标识符‘idi’计算自身的验证参数vd’。具体地,验证参数vd’被定义为vd’=mac(kidi,t||idi||frame),其中mac是指消息认证码函数,idi是can-id针对所述接收到的帧的标识符。模块610随后将计算得到的验证参数vd’和接收到的验证参数vd进行比较。如果两者不匹配,则可能会按照现有的can错误解决方法处理所述接收到的帧。否则,若两种验证参数匹配,即vd’=vd,则模块610随后会继续如常处理所述帧。

在本发明实施例中,时常同步模块605和610上的本地时间至关重要。网关615同步了这些模块中的本地时间。为此,为所述时间同步的过程定义了专用can-id。凭借此过程,只有网关615被授予广播拥有此专用can-id标识符的帧的权限。至于can网络上的模块,应理解这些模块都会拥有一个适用于此同步过程的过滤器。因此,这些模块可以从网关615接收到广播时间同步帧。

在本发明的实施例中,所述时间同步过程可以按照以下方式进行。首先,网关615会在步骤650得到自身的本地时间t。在步骤655,网关615随后构建帧,其中本地时间t为所述帧的负载,所述帧的标识符是为此目的指定的专用can-id。

网关615随后在can网络上广播所述帧。因为模块610拥有一个针对为时间同步指定的can-id的过滤器,模块610在步骤660接收所述帧。模块610随后通过在帧上进行循环冗余检查(crc)来检查所述接收到的帧的有效性。若接收到的帧有效,模块610随后使用帧中包含的负载,同步模块610的本地时间。步骤660也发生于模块605,因此模块605能将其本地时间同步到网关615的本地时间。本领域的技术人员将认识到,can网络上任何数量的模块都可以执行步骤660,以分别同步所述模块的本地时间和网关615的本地时间,而不脱离本发明。时间同步帧的错误解决将会严格遵循现有can错误解决规范。采用此方法的原因是:网关615是被授权广播时间同步帧的唯一实体,因此网关615能及时检测对时间同步帧做的任何更改。若网关615检测到该更改,网关615随后可遵循现有can规范发起错误解决机制。

使用计数器ct的消息验证

在本发明另一个实施例中,类似地,过程600从模块605生成与can-id‘idi’相关联的帧开始。模块605随后检索与can-id‘idi’相关联的密钥kidi。这在步骤620处发生。

在本发明的实施例中,提供给模块605的密钥kidi可以是can-id‘idi’的实际密钥。在此实施例中,模块605随后继续步骤622。在本发明的另一个实施例中,提供给模块605的所述密钥kidi反而可以是can-id‘idi’的祖先密钥。在此实施例中,会要求模块605为can-id‘idi’计算密钥,该要求可通过上述步骤实现。

一旦为can-id‘idi’计算或检索出合适密钥,模块605随后继续步骤622。

在步骤622,模块605随后继续读取与can-id‘idi’相关联的当前计数器ctidi。模块605随后增加计数器ctidi=ctidi+1,根据检索到的密钥kidi、计数器ctidi、can-id的标识符‘idi’及将要在can网络上广播的帧计算验证参数vd。具体地,验证参数vd被定义为vd=mac(kidi,ctidi||idi||frame),其中mac是指消息认证码函数,idi是can-id的标识符。

模块605随后会在步骤625向所述can网络广播所述验证参数vd及所述帧。总的来说,当can网络上的一个模块广播了一个帧,只有所述can网络上拥有合适的过滤器的模块才能接收所述帧。

假设模块610具备针对can-id‘idi’的过滤器,这意味着模块610能够接收到模块605广播的帧。

同时,模块610也会接收验证参数vd。

在步骤626,模块610随后会得到自身的与can-id‘idi’相关联的当前计数器ct’idi。模块610随后继续检索与can-id‘idi’相关联的密钥kidi。这在步骤628处发生。在本发明的实施例中,提供给模块610的密钥kidi可以是所述can-id‘idi’的实际密钥。在此实施例中,模块610会在步骤630继续计算自身的验证参数vd’。在本发明的另一个实施例中,提供给模块610的所述密钥kidi反而可以是can-id‘idi’的祖先密钥。在此实施例中,会要求模块610为can-id‘idi’计算密钥,该要求可通过上述步骤实现。

一旦为can-id‘idi’计算或检索出合适密钥,模块610随后继续步骤630。

在步骤630,模块610随后根据所述检索到的密钥kidi、所述当前计数器ct’idi、所述接收到的帧及在所述can网络上接收到的所述can-id帧的标识符‘idi’计算自身的验证参数vd’。具体地,验证参数vd’被定义为vd’=mac(kidi,(ct’idi+1)||idi||frame),其中mac是指消息认证码函数,idi是can-id针对所述接收到的帧的标识符。模块610随后将计算得到的验证参数vd’和接收到的验证参数vd进行比较。如果两者不匹配,则可能会按照现有的can错误解决方法处理所述接收到的帧。相反,若两种验证参数相匹配,即vd’=vd,则模块610随后会将其计数器加1,即ct’idi=ct’idi+1,并继续如常处理所述帧。

在本发明实施例中,当需要时,如万一can帧验证失效,同步模块605和610上的计数器至关重要。网关615同步了这些模块中的计数器。为此,为所述计数器同步的过程定义了专用的can-id。凭借此过程,只有网关615被授予了广播拥有此专用can-id标识符的帧的权限。至于can网络上的模块,应理解这些模块都会拥有一个适用于此同步过程的过滤器。因此,这些模块可以从网关615接收到广播帧。

在本发明的实施例中,所述计数器同步的过程可以按照以下方式进行。首先,网关615会在步骤650得到与特定can-id,如can-id‘idi’,相关联的自身的计数器ctidi。在步骤655,网关615使计数器按照ctidi=ctidi+1增加,然后根据所述增加的计数器ctidi和can-id‘idi’构建帧,即idi||ctidi为所述帧的负载,所述帧的标识符是为此目的指定的专用的can-id。

网关615随后在can网络上广播所述帧。因为模块610拥有一个针对为计数器同步指定的can-id的过滤器,模块610在步骤660接收所述帧。模块610随后通过在帧上进行循环冗余检查(crc)及通过判断接收到的计数器ctidi是否大于现有计数器ct’idi检查所述接收到的帧的有效性。若接收到的帧有效,模块610随后使用帧中包含的负载同步模块610的本地计数器。步骤660也发生在模块605,因此模块605能将其本地计数器同步到网关615的本地计数器。本领域的技术人员将认识到,can网络上任何数量的模块都可以执行步骤660,以分别同步所述模块的本地计数器和网关615的本地计数器,而不脱离本发明。计数器同步帧的错误解决将会严格遵循现有的can错误解决规范。采用此方法的原因是:网关615是被授权广播计数器同步帧的唯一实体,因此网关615能及时检测对计数器同步帧做的任何更改。若网关615检测到该更改,网关615随后可遵循现有的can规范发起错误解决机制。

使用随机临时数n的消息验证

在本发明的另一个实施例中,类似地,过程600从模块605生成与can-id‘idi’相关联的帧开始。模块605随后检索与can-id‘idi’相关联的密钥kidi。这在步骤620发生。

在本发明的实施例中,提供给模块605的密钥kidi可以是can-id‘idi’的实际密钥。在此实施例中,模块605随后继续步骤622。在本发明的另一个实施例中,提供给模块605的所述密钥kidi反而可以是can-id‘idi’的祖先密钥。在此实施例中,会要求模块605为can-id‘idi’计算密钥,此要求可通过上述步骤实现

一旦为can-id‘idi’计算或检索出合适密钥,模块605随后继续步骤622。

在步骤622,模块605随后继续读取当前临时数n。模块605随后根据检索到的密钥kidi、临时数n、can-id的标识符‘idi’及将要在can网络上广播的帧计算验证参数vd。具体地,验证参数vd被定义为vd=mac(kidi,n||idi||frame),其中mac是指消息认证码函数,idi是can-id的标识符。

模块605随后会在步骤625向所述can网络广播所述验证参数vd及所述帧。总的来说,当can网络上的一个模块广播了一个帧,只有所述can网络上拥有合适的过滤器的模块才能接收所述帧。

假设模块610具备针对can-id‘idi’的过滤器,这意味着模块610将能够接收到模块605广播的帧。

同时,模块610也会接收验证参数vd。

在步骤626,模块610随后会得到自身的临时数n’。模块610随后继续检索与can-id‘idi’相关联的密钥kidi。这在步骤628处发生。在本发明的实施例中,提供给模块610的密钥kidi可以是所述can-id‘idi’的实际密钥。在此实施例中,模块610会在步骤630继续计算自身的验证参数vd’。在本发明的另一个实施例中,提供给模块610的所述密钥kidi反而可以是can-id‘idi’的祖先密钥。在此实施例中,会要求模块610为can-id‘idi’计算密钥,此要求可通过上述步骤实现。

一旦为can-id‘idi’计算或检索出的合适密钥kidi,模块610随后继续步骤630。

在步骤630,模块610随后根据所述检索到的密钥kidi、所述临时数n’、所述接收到的帧及在所述can网络上接收到的所述can-id帧的标识符‘idi’计算自身的验证参数vd’。具体地,验证参数vd’被定义为vd’=mac(kidi,n’||idi||frame),其中mac是指消息认证码函数,idi是can-id针对所述接收到的帧的标识符。模块610随后将计算得到的验证参数vd’和接收到的验证参数vd进行比较。如果两者不匹配,则可能会按照现有的can错误解决方法处理所述接收到的帧。相反,若两种验证参数相匹配,即vd’=vd,则模块610随后会继续如常处理所述帧。

在本发明实施例中,对网关615来说,定期广播临时数至关重要。因此模块605和610得到用于can消息验证的临时数。只有网关615完成了广播随机数。为此,为随机数的广播过程定义了专用can-id。凭借此过程,只有网关615被授予了广播拥有此专用can-id标识符的帧的权限。至于can网络上的模块,应理解这些模块都会拥有一个适用于此广播过程的过滤器。因此,这些模块可以从网关615接收到广播帧。

在本发明的实施例中,所述临时数的广播过程可以按照以下方式进行。首先,网关615会在步骤650生成自身的随机临时数n。在步骤655,网关615随后构建帧,临时数n为帧的负载,所述帧的标识符是为此目的指定的专用的can-id。

网关615随后在can网络上广播所述帧。因为模块610拥有一个针对为临时数同步指定的can-id的过滤器,模块610在步骤660接收所述帧。模块610随后通过在帧上进行循环冗余检查(crc)来检查所述接收到的帧的有效性。若接收到的帧有效,模块610随后使用帧中包含的负载同步模块610的本地临时数。步骤660也发生于模块605,因此模块605能将其本地临时数同步到网关615的本地临时数。本领域的技术人员将认识到,can网络上任何数量的模块都可以执行步骤660,以分别同步所述模块的本地临时数和网关615的本地临时数,而不脱离本发明。临时数广播帧的错误解决将会严格遵循现有的can错误解决规范。采用此方法的原因是:网关615是被授权广播临时数同步帧的唯一实体,因此网关615能及时检测对临时数同步帧做的任何更改。若网关615检测到该更改,网关615随后可遵循现有的can规范发起错误解决机制。

使用本地时间t和计数器ct的消息验证

在本发明的另一个实施例中,类似地,过程600从模块605生成与can-id‘idi’相关联的帧开始。模块605随后检索出与can-id‘idi’相关联的密钥kidi。这在步骤620处发生。

在本发明的实施例中,提供给模块605的密钥kidi可以是can-id‘idi’的实际密钥。在此实施例中,模块605随后继续步骤622。在本发明的另一个实施例中,提供给模块605的密钥反而可以是can-id‘idi’的祖先密钥。在此类实施例中,会要求模块605为can-id‘idi’计算密钥,此要求可通过上述步骤实现

一旦为can-id‘idi’计算或检索出合适密钥,模块605随后继续步骤622。

在步骤622,模块605随后继续读取与can-id‘idi’相关联的当前计数器ctidi,并获得本地时间t。模块605随后使计数器按照ctidi=ctidi+1增加,根据检索到的密钥kidi、计数器ctidi、本地时间t、can-id的标识符‘idi’及将要在can网络上广播的帧计算验证参数vd。具体地,验证参数vd被定义为vd=mac(kidi,t||ctidi||idi||frame),其中mac是指消息认证码函数,idi是can-id的标识符。

模块605随后会在步骤625向所述can网络广播所述验证参数vd、所述本地时间t及所述帧。总的来说,当can网络上的一个模块广播了一个帧,只有所述can网络上拥有合适的过滤器的模块才能接收所述帧。

假设模块610具备针对can-id‘idi’的过滤器,这意味着模块610将能够接收到模块605广播的帧。

同时,模块610也会接收验证参数vd。

在步骤626,模块610随后会得到自身的与can-id‘idi’相关联的当前计数器ct’idi,及自身的本地时间t’。模块610随后计算其得到的本地时间t’与接收到的时间t之间的差,即|t’-t|。若所述差超出预定时间窗,模块610随后会丢弃接收到的包含所述帧的信息。所述预定时间窗的长度留作本领域的技术人员的一个设计选项。

模块610随后继续检索与can-id‘idi’相关联的密钥kidi。这在步骤628处发生。在本发明的实施例中,提供给模块610的密钥kidi可以是所述can-id‘idi’的实际密钥。在此实施例中,模块610会在步骤630继续计算自身的验证参数vd’。在本发明的另一个实施例中,提供给模块610的所述密钥反而可以是所述can-id‘idi’的祖先密钥。在此实施例中,会要求模块610为can-id‘idi’计算密钥,此要求可通过上述步骤实现

一旦can-id‘idi’计算或检索出合适密钥kidi,模块610随后继续步骤630。

在步骤630,模块610随后根据所述检索到的密钥kidi、所述当前计数器ct’idi、所述接收到的本地时间t、所述接收到的帧及在所述can网络上接收到的所述can-id帧的标识符‘idi’计算自身的验证参数vd’。具体地,验证参数vd’被定义为vd’=mac(kidi,t||(ct’idi+1)||idi||frame),其中mac是指消息认证码函数,idi是can-id针对所述接收到的帧的标识符。模块610随后将计算得到的验证参数vd’和接收到的验证参数vd进行比较。如果两者不匹配,可能会按照现有的can错误解决方法处理所述接收到的帧。相反,若两种验证参数相匹配,即vd’=vd,则模块610随后会增加其计数器ct’idi=ct’idi+1,并继续如常处理所述帧。

在本发明实施例中,当需要时,如万一can帧验证失效,同步模块605和610上的计数器至关重要。通过上述的计数器同步过程,网关615同步了这些模块中的计数器。

类似地,在本发明实施例中,同步模块605和610上的本地时间至关重要。通过上述本地时间的同步过程,网关615同步了这些模块中的本地时间。

应注意在此实施例中,时戳与时间同步可以是粗粒度的,而对于每个时间窗,计数器可重置到0。

使用随机临时数n和计数器ct的消息验证

在本发明的另一个实施例中,类似地,过程600从模块605生成与can-id‘idi’相关联的帧开始。模块605随后检索出与can-id‘idi’相关联的密钥kidi。这在步骤620处发生。

在本发明的实施例中,提供给模块605的密钥kidi可以是can-id‘idi’的实际密钥。在此实施例中,模块605随后会继续步骤622。在本发明的另一个实施例中,提供给模块605的所述密钥反而可以是can-id‘idi’的祖先密钥(即kparent或kgrandparent)。在此实施例中,会要求模块605为can-id‘idi’计算密钥,此要求可通过上述步骤实现。

一旦为can-id‘idi’计算或检索出合适密钥,模块605随后继续步骤622。

在步骤622,模块605随后继续读取与can-id‘idi’相关联的当前计数器ctidi并检索模块605的临时数n。模块605随后增加计数器ctidi=ctidi+1,根据检索到的密钥kidi、计数器ctidi、临时数n、can-id的标识符‘idi’及将要在can网络上广播的帧计算验证参数vd。具体地,验证参数vd被定义为vd=mac(kidi,n||ctidi||idi||frame),其中mac是指消息认证码函数,idi是can-id的标识符。

模块605随后会在步骤625向所述can网络广播所述验证参数vd及所述帧。总的来说,当can网络上的一个模块广播了一个帧,只有can网络上拥有合适的过滤器的模块才能接收所述帧。

假设模块610具备针对can-id‘idi’的过滤器,这意味着模块610能够接收到模块605广播的帧。

同时,模块610也会接收验证参数vd。

在步骤626,模块610随后会得到自身的与can-id‘idi’相关联的当前计数器ct’idi和自身的临时数n’。模块610随后继续检索与can-id‘idi’相关联的密钥kidi。这在步骤628处发生。在本发明的实施例中,提供给模块610的密钥kidi可以是所述can-id‘idi’的实际密钥。在此实施例中,模块610会在步骤630继续计算自身的验证参数vd’。在本发明的另一个实施例中,提供给模块610的所述密钥反而可以是can-id‘idi’的祖先密钥。在此实施例中,会要求模块610为can-id‘idi’计算密钥,此要求可通过上述步骤实现。

一旦为can-id‘idi’计算或检索出合适密钥kid,模块610随后继续步骤630。

在步骤630,模块610随后根据所述检索到的密钥kidi、所述当前计数器ct’idi、所述临时数n’、所述接收到的帧及在所述can网络上接收到的所述can-id帧的标识符‘idi’计算自身的验证参数vd’。具体地,验证参数vd’被定义为vd’=mac(kidi,n’||ct’idi+1||idi||frame),其中mac是指消息认证码函数,idi是can-id针对所述接收到的帧的标识符。模块610随后将计算得到的验证参数vd’和接收到的验证参数vd进行比较。如果两者不匹配,可能会按照现有的can错误解决方法处理所述接收到的帧。相反,若两种验证参数相匹配,即vd’=vd,则module610随后会增加其计数器ct’idi=ct’idi+1,并继续如常处理所述帧。

在本发明实施例中,当需要时,如万一can帧验证失效,同步模块605和610上的计数器至关重要。通过上述计数器的同步过程,网关615同步了这些模块中的计数器。

类似地,在本发明实施例中,对网关615来说,定期广播临时数至关重要。对于模块605和610来说,定期接收临时数也至关重要。通过上述广播临时数的过程,网关615广播了这些临时数。

应注意在本实施例中,网关可以以更大的时间间隔定期广播随机临时数,而对于每个时间间隔,计数器可重置到0。

以上描述了如在所附权利要求书中阐述的本发明提供的系统和过程的实施例。可以预见其它人也可以设计替代方案,这些替代方案在所附权利要求书的范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1