一种安全UDS诊断在CAN上的实现方法与流程

文档序号:17089010发布日期:2019-03-13 23:13阅读:881来源:国知局
一种安全UDS诊断在CAN上的实现方法与流程

本发明涉及汽车电子领域,特别是涉及一种uds诊断在安全can上的实现方法。



背景技术:

近年来,针对车载网络进行攻击的新闻事件时有发生,车载网络安全逐渐变成一个热点话题,can是一个在汽车上应用超过30年的网络标准,至今也是大多数汽车的骨干网络,针对ivn(in-vehiclenetwork)的安全构架、算法、方法已经开始应用于can上。uds诊断是目前在车载ecu上广泛应用的诊断标准,但在目前还很少有对uds在安全can网络上实现并进行评价的探讨。导致汽车ecu很容易被破解、被攻击,致使ecu瘫痪,从而使ecu失效或响应错误,影响驾驶员的判断,引发更严重的后果。

因此本领域技术人员致力于开发一种安全uds诊断在can上的实现方法,采用本方法能有效减小uds被侦听和破解的风险,也可以作为一种安全诊断网关的实现。



技术实现要素:

有鉴于现有技术的上述缺陷,本发明所要解决的技术问题是提供一种安全uds诊断在can上的实现方法,采用本方法能有效减小uds被侦听和破解的风险,也可以作为一种安全诊断网关的实现。

为实现上述目的,本发明提供了一种安全uds诊断在can上的实现方法,包括:

在ecu的报文中增加一个随机数的步骤;

客户端获取该随机数并发出带有该随机数信息的诊断请求的步骤;

ecu比对最近一条报文中的随机数与诊断请求中的随机数的步骤。

较佳的,还包括以下步骤:ecu启动,ecu首轮广播报文中的第一随机数为ecu随机生成,在ecu的周期性广播报文中,下一轮的广播报文中的随机数为上一轮广播报文中的随机数加1。

较佳的,还包括以下步骤:ecu应客户端的诊断请求解析客户端的请求报文,并生成响应报文和一个第二随机数,响应报文中含有该第二随机数,反馈给客户端;同时所述第二随机数替代ecu中即将发出的广播报文中原有的随机数。

较佳的,所述ecu的报文的帧格式为:随机数占2字节、ecu的绝对地址占1字节、响应数据按实际需求占响应字节数,剩余为填充位字节数。若ecu的报文为广播报文,广播报文中无响应数据,则不占字节数。

较佳的,包括ecu启动的步骤,和以下步骤:

s1)判断是否有来自客户端的诊断请求,

若是,s2)判断诊断请求是否合法,若是,进入步骤s3);

若否,进入步骤s1);

s3)ecu判断诊断请求是否为请求自己,

若是,进入步骤s4);

若否,进入步骤s1);

s4)ecu解析请求报文,产生一个新的随机数,对请求报文给予响应,并反馈给客户端,同时所述新的随机数替代ecu中即将发出的广播报文中原有的随机数;

s5)再次进入步骤s1)。

较佳的,包括客户端启动的步骤,还包括以下步骤:

c1:侦听can线上的ecu广播报文或响应报文;

c2:判断是否收到需诊断ecu的广播报文或响应报文,若是,进入步骤c3,若否,进入步骤c1;

c3:解析报文,获取侦听到的需诊断ecu的广播报文或响应报文中的随机数,并在该随机数基础上加1储存为第三随机数,且对需诊断的ecu发起诊断请求,该诊断请求中包括储存的第三随机数;

c4:再次进入步骤c1)。

较佳的,所述步骤s2中,ecu判断诊断请求是否合法的方法为通过比对储存的最近一条报文中的随机数与第三随机数,若第三随机数为最近一条报文中的随机数加1,该诊断请求合法,否则不合法。

较佳的,所述步骤s1中,ecu判断是否有来自客户端的诊断请求的方法为ecu的报文密钥是否与诊断请求的密钥相符,若相符,则是来自客户端的诊断请求,若不相符,则不是;

所述密钥采用对称加密技术设置。

较佳的,所述步骤c3中诊断请求的帧格式为:第三随机数占2字节、需诊断的ecu绝对地址占1字节、请求数据按实际需求占相应字节数,剩余为填充位字节数。

本发明的有益效果是:本发明使安全uds诊断在can上得以实现,uds更安全,不易被破解,降低了uds被侦听和篡改的风险。

附图说明

图1是本发明一具体实施方式ecu的工作流程图。

图2是本发明一具体实施方式客户端的工作流程图。

图3是本发明一具体实施ecu与客户端的连接原理图。

具体实施方式

下面结合附图和实施例对本发明作进一步说明术语“第一”、“第二”、“第三”等仅用于描述目的,而不能理解为指示或暗示相对重要性。

本实施例中,ecu的报文若无特别指示,均包括广播报文和响应报文。

一种安全uds诊断在can上的实现方法,包括:

在ecu的报文中增加一个随机数的步骤,此处报文包括广播报文与响应报文。广播报文的步骤为:如图1所示,ecu启动,ecu首轮广播报文中的第一随机数为ecu随机生成,即ecu随机产生一个随机数,并使该随机数设置在首轮广播报文中。本实施例中,随机数生成可以记录上一次系统关闭的时钟和本次启动的时钟作为种子,然后使用标准c库的srand和rand函数来生成随机数。当然也可以用其他方式来生成随机数。且在ecu的周期性广播报文中,下一轮的广播报文中的随机数为上一轮广播报文中的随机数加1。ecu定时器中断判断广播报文周期是否到了,如果是,随机数加1后开始下一轮广播报文,如果没到,则继续判断广播报文周期是否到了。为使ecu的广播报文中含有该随机数,汽车生产厂商可设置ecu的报文(包括广播报文和响应报文)帧格式为:随机数占2字节、需诊断的ecu绝对地址占1字节、请求数据按实际需求占相应字节数,剩余为填充位字节数。在ecu原报文的基础上增加了随机数和需诊断的ecu的绝对地址,只增加了3个字节,对于诊断报文发送所带来的影响与诊断报文的安全性提高相比可忽略不计。因此不会影响数据传输等。

响应报文的步骤为:ecu应客户端的诊断请求解析客户端的请求报文,并生成响应报文和一个第二随机数,反馈给客户端;同时所述第二随机数替代ecu中即将发出的广播报文中原有的随机数。响应报文的帧格式与上述广播报文的帧格式相同。

客户端获取该随机数并发出带有该随机数信息的诊断请求的步骤,具体方法见下文详述。本发明中客户端即是为诊断仪,是用来对汽车ecu进行诊断的一种工具。

ecu比对最近一条报文中的随机数与诊断请求中的随机数的步骤,此处报文包括广播报文与响应报文,具体方法见下文详述。

本发明中,还包括ecu启动的步骤,和以下步骤:

s1)判断是否有来自客户端的诊断请求,

若是,s2)判断诊断请求是否合法,若是,进入步骤s3);

若否,进入步骤s1);

s3)ecu判断该请求是否为请求自己,

若是,进入步骤s4);

若否,进入步骤s1);

s4)ecu解析请求报文,产生一个新的随机数,对请求报文给予响应,并反馈给客户端,同时所述新的随机数替代ecu中即将发出的广播报文中原有的随机数,继续周期性报文;

s5)再次进入步骤s1)。

如图2所示,本发明还包括客户端启动的步骤,和以下步骤:

c1:侦听can线上的ecu广播报文或响应报文;

c2:判断是否收到需诊断ecu的广播报文或响应报文,若是,进入步骤c3,若否,进入步骤c1;

c3:解析报文,获取侦听到的需诊断ecu的广播报文或响应报文中的随机数,并在该随机数基础上加1储存为第三随机数,并对需诊断的ecu发起诊断请求,该诊断请求中包括储存的第三随机数;

c4:再次进入步骤c1)。

结合ecu与客户端的工作流程,在本发明中,二者的配合工作步骤如下:

ecu启动,ecu启动后产生一个随机数,并开始周期性广播报文,ecu首轮广播报文中的第一随机数为ecu随机生成,即ecu随机产生一个随机数,并使该随机数设置在首轮广播报文中。且在ecu的周期性广播报文中,下一轮的广播报文中的随机数为上一轮广播报文中的随机数加1。

客户端启动,客户端与ecu启动无先后顺序,各自启动后,按各自工作流程工作。

客户端启动后,开始进入步骤c1:侦听can线上的ecu广播报文,在汽车电子控制系统中,如图3所示,一般包括数十个ecu,各ecu通过can线与客户端实现通信对话。客户端通过can线,可以侦听到各ecu发出的报文,在发出诊断请求前,客户端进入步骤c2:判断是否收到需诊断ecu的报文,若是,进入步骤c3,若否,进入步骤c1。此处报文包括广播报文和响应报文,若客户端启动后还未发出过任何诊断请求,此处ecu的报文为广播报文;若客户端此前已发出过针对某一特定ecu的诊断请求,此特定的ecu也为即将需诊断的ecu,且该ecu最近的一条报文为对客户端的响应报文,则此处的报文为ecu的响应报文。

步骤c3为:解析报文,获取侦听到的需诊断ecu的报文中的随机数,并在该随机数基础上加1储存为第三随机数,且对需诊断的ecu发起诊断请求,该诊断请求中包括储存的第三随机数。

在ecu端,ecu启动后,ecu在周期性广播报文的同时,也在同时启动步骤s1)判断是否有来自客户端的诊断请求,本步骤采用对称加密技术对ecu与客户端进行加密设置,为了防止被侵入,在本发明步骤s1中,ecu判断是否有来自客户端的诊断请求的方法为ecu的广播报文密钥是否与诊断请求的密钥相符,若相符,则是来自客户端的诊断请求,若不相符,则不是;

具体为ecu对接收到的诊断请求报文进行解密处理,若密钥相符,则认为是来自客户端的诊断请求。在本实施例中,securecan采用了autosar版本4.2.1的secoc(securityonboardcommunication)的mac机制,mac生成方式采用的是aes-128的cmac[0]。在客户端发送报文前,客户端和各个ecu之间已经完成密钥的交换。此种加密技术在文章dworkinmj.sp800-38b.recommendationforblockciphermodesofoperation:thecmacmodeforauthentication[j].nationalinstituteofstandards&technology,2001,5(6):669-675中有详细批露,此处不再赘述。

当判断结果为是时,进入步骤s2)判断诊断请求是否合法,若是,进入步骤s3);若否,进入步骤s1);

步骤s2中,ecu判断诊断请求是否合法的方法为通过比对储存的最近一条报文中的随机数与第三随机数,若第三随机数为最近一条报文中的随机数加1,该诊断请求合法,否则不合法。在步骤s3中,ecu判断诊断请求是否为请求自己,因在本发明中步骤c3中诊断请求的帧格式为:第三随机数占2字节、需诊断的ecu绝对地址占1字节、请求数据按实际需求占相应字节数,剩余为填充位字节数,所以ecu在判断诊断请求是否为请求自己时,只需比对诊断请求中的ecu绝对地址是否为自身的地址即可,若是,则是请求自己,进入步骤s4。若否,则不为请求自己,ecu继续进入步骤s1)判断是否有来自客户端的诊断请求。

当ecu判断诊断请求为请求自己时,ecu解析诊断请求的请求报文,产生一个新的随机数,对请求报文给予响应,并反馈给客户端,完成uds诊断,同时所述新的随机数替代ecu中即将发出的广播报文中原有的随机数,继续周期性报文。当然,ecu也会继续判断是否有来自客户端的诊断请求。

而客户端在步骤c3后进入再次进入步骤c1)。在客户端方面,只要客户端与ecu的随机数比对合法后,即可进行常规的会话流程,与本发明无关,不再赘述。

本发明中,采用对称加密技术与随机数双重保护的方式对uds诊断数据进行保护,是现有技术中没有的,使uds诊断更安全、不易被破解。且随机数规律不定,在ecu产生响应报文后,随机数又重新生成,增大了被破解难度。在现有技术中,ecu对发送的具体数据不做解析,现在原来的基础上增加了2个字节的随机数,1个字节的ecu的绝对地址,改变ecu与客户端报文帧格式,增大了ecu被破解的难度,且对数据传输没有影响。

以下为一个具体的诊断请求及响应举例。

客户端发出的诊断请求内容见表1,本发明中,一个诊断请求报文可包括对多个ecu的诊断请求,表1中的诊断请求报文包括对两个ecu的诊断请求。

表1

若ecu在步骤s1至s3中的判断结果均为是,且请求的报文符合ecu的诊断规范则ecu产生肯定响应,响应内容见表2(表2中,密钥、随机数,ecu地址均能与表1中的诊断请求报文中的第一个诊断请求相符,所以地址为0x02的ecu给出了肯定响应)。

表2

若ecu在步骤s1至s3中的判断结果均为是,请求的报文不符合ecu的诊断规范,则ecu产生否定响应,否定响应如表3所示(表3中,随机数相同是非常非常小的概率,本实施例只是为了举例说明一种极端情况)

表3

uds规范中有若ecu无需响应的情况。在此处,接收到请求后如果无需响应的话就要重新生成新的随机数,但不需要带上响应内容。

表4

以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术人员无需创造性劳动就可以根据本发明的构思作出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。

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