一种汽车诊断服务的控制方法和电子控制单元与流程

文档序号:23848093发布日期:2021-02-05 13:17阅读:85来源:国知局
一种汽车诊断服务的控制方法和电子控制单元与流程

[0001]
本发明涉及汽车电子诊断,特别涉及汽车诊断服务的控制方法和电子控制单元。


背景技术:

[0002]
uds协议(unified diagnostic services,统一诊断服务)是诊断服务的规范化标准,比如读取故障数据,进行相关业务数据的配置等。诊断仪等工具可以通过uds协议对汽车相关服务进行访问。考虑到汽车相关安全性,在访问uds服务(比如写入数据2e服务等)的时候必须通过安全认证才能进行访问。
[0003]
但是,uds现有的安全认证方案中,一旦诊断仪安全认证通过后,会为安全认证通过的诊断仪授予所有的诊断服务权限,从而使得安全认证粒度较粗,导致很难适应一些实际的诊断场景。比如若对于不同的诊断仪进行不同权限控制,按照现有的uds安全实现机制是无法满足此类场景的。因此,如何在同一诊断会话下,对于不同的诊断仪进行不同诊断服务权限的控制是本领域技术人员亟需解决的问题。


技术实现要素:

[0004]
本发明的目的是提供一种汽车诊断服务的控制方法和电子控制单元,实现为不同身份的诊断仪分配不同的诊断服务权限,实现了在同一诊断会话情景下,根据诊断仪标识符来控制访问不同的诊断服务,使得诊断服务权限的控制粒度更细。
[0005]
本发明提供的技术方案如下:
[0006]
本发明提供一种汽车诊断服务的控制方法,包括:
[0007]
在接收到诊断仪发送的种子请求消息时,生成种子数据并发送至所述诊断仪;
[0008]
接收诊断仪发送的私钥请求消息,根据所述私钥请求消息中的诊断仪标识符和加密私钥进行安全认证;
[0009]
获取安全认证结果并向所述诊断仪发送安全认证结果;
[0010]
接收所述诊断仪发起的诊断服务请求,根据诊断服务表和诊断仪标识符进行权限认证,向所述诊断仪反馈对应于诊断服务请求的权限认证结果。
[0011]
进一步的,所述在接收到诊断仪发送的种子请求消息时,生成种子数据并发送至所述诊断仪之前包括:
[0012]
上电或复位后初始化所述诊断服务表;所述诊断服务表包括服务类型和诊断仪标识符的对应关系。
[0013]
进一步的,所述根据所述私钥请求消息中的诊断仪标识符和加密私钥进行安全认证包括:
[0014]
接收所述诊断仪发送的私钥请求消息;
[0015]
根据所述种子数据和诊断仪标识符计算得到计算密钥,将所述计算密钥与加密私钥进行比较;
[0016]
若所述计算密钥与所述加密私钥一致,确定安全认证通过;
[0017]
若所述计算密钥与所述加密私钥不同,确定安全认证未通过。
[0018]
进一步的,所述获取安全认证结果并向所述诊断仪发送安全认证结果包括:
[0019]
在安全认证通过时保存私钥请求消息中的诊断仪标识符,并向所述诊断仪反馈安全认证通过的确定应答报文;
[0020]
在安全认证未通过时将诊断仪标识符替换为预设标识符,并向所述诊断仪反馈安全认证未通过的否定应答报文。
[0021]
进一步的,所述根据诊断服务表和诊断仪标识符进行权限认证,向所述诊断仪反馈对应于诊断服务请求的权限认证结果包括:
[0022]
根据所述诊断仪标识符和所述诊断服务请求所包括的服务类型,在诊断服务表中进行查询,判断所述标识符对应的诊断仪是否具有访问该服务类型的能力;
[0023]
如果有,向所述诊断仪返回肯定响应报文;
[0024]
如果无,则向所述诊断仪返回否定响应报文,拒绝所述诊断仪的诊断服务请求。
[0025]
本发明还提供一种电子控制单元,包括:
[0026]
通信模块,用于接收诊断仪发送的种子请求消息、私钥请求消息以及诊断服务请求;还用于向诊断仪发送对应于所述种子请求消息的种子数据,对应于所述私钥请求消息的安全认证结果,以及对应于诊断服务请求的权限认证结果;
[0027]
安全认证模块,用于接收诊断仪发送的私钥请求消息,根据所述私钥请求消息中的诊断仪标识符和加密私钥进行安全认证得到安全认证结果;
[0028]
更新模块,用于通过安全认证结果更新诊断仪标识符;
[0029]
权限认证模块,用于根据诊断服务表和诊断仪标识符,对诊断服务请求进行权限认证得到权限认证结果。
[0030]
进一步的,还包括:
[0031]
初始化模块,用于上电或复位后初始化所述诊断服务表;所述诊断服务表包括服务类型和诊断仪标识符的对应关系。
[0032]
进一步的,所述安全认证模块包括:
[0033]
计算子模块,用于根据所述种子数据和诊断仪标识符计算得到计算密钥;
[0034]
比较子模块,用于将所述计算密钥与加密私钥进行比较;若所述计算密钥与所述加密私钥一致,确定安全认证通过;若所述计算密钥与所述加密私钥不同,确定安全认证未通过。
[0035]
进一步的,所述更新模块包括:
[0036]
储存子模块,用于储存预设标识符,所述预设标识符用于表示安全认证未通过;
[0037]
更新子模块,用于在安全认证通过时保存私钥请求消息中的诊断仪标识符;还用于在安全认证未通过时将诊断仪标识符替换为预设标识符;
[0038]
所述安全认证模块包括:
[0039]
第一生成子模块,用于若安全认证通过时生成确定应答报文;若安全认证未通过时生成否定应答报文;
[0040]
所述通信模块,还用于若安全认证通过时向所述诊断仪发送所述确定应答报文,若安全认证未通过时向所述诊断仪发送所述否定应答报文。
[0041]
进一步的,所述权限认证模块包括:
[0042]
判断子模块,用于根据所述诊断仪标识符和所述诊断服务请求所包括的服务类型,在诊断服务表中进行查询,判断所述标识符对应的诊断仪是否具有访问该服务类型的能力;如果有生成肯定响应报文,如果无生成否定响应报文;
[0043]
所述通信模块,还用于向所述诊断仪返回肯定响应报文,或向所述诊断仪返回否定响应报文,拒绝所述诊断仪的诊断服务请求。
[0044]
通过本发明提供的一种汽车诊断服务的控制方法和电子控制单元,能够为不同身份的诊断仪分配不同的诊断服务权限,简单方便,错误率更低,实现了在同一诊断会话情景下,对于不同诊断仪进行不同诊断服务权限的控制,根据诊断仪标识符来控制访问不同的诊断服务,使得诊断服务权限的控制粒度更细。
附图说明
[0045]
下面将以明确易懂的方式,结合附图说明优选实施方式,对一种汽车诊断服务的控制方法和电子控制单元的上述特性、技术特征、优点及其实现方式予以进一步说明。
[0046]
图1是本发明一种汽车诊断服务的控制方法的一个实施例的流程图;
[0047]
图2是本发明一种汽车诊断服务的控制方法的另一个实施例的流程图;
[0048]
图3是本发明一种汽车诊断服务的控制方法的对于2e服务请求的场景流程示意图;
[0049]
图4是本发明一种电子控制单元的一个实施例的结构示意图。
具体实施方式
[0050]
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其他实施例中也可以实现本申请。在其他情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
[0051]
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”指示所述描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其他特征、整体、步骤、操作、元素、组件和/或集合的存在或添加。
[0052]
为使图面简洁,各图中只示意性地表示出了与本发明相关的部分,它们并不代表其作为产品的实际结构。另外,以使图面简洁便于理解,在有些图中具有相同结构或功能的部件,仅示意性地绘示了其中的一个,或仅标出了其中的一个。在本文中,“一个”不仅表示“仅此一个”,也可以表示“多于一个”的情形。
[0053]
还应当进一步理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
[0054]
另外,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
[0055]
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对照附图说明本发明的具体实施方式。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,并获得其他的实施方式。
[0056]
根据本发明实施例,提供了一种汽车诊断服务的控制方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,能够以不同于此处的顺序执行所示出或描述的步骤。
[0057]
本发明的一个实施例,如图1所示,一种汽车诊断服务的控制方法,包括:
[0058]
s100在接收到诊断仪发送的种子请求消息时,生成种子数据并发送至诊断仪;
[0059]
具体的,诊断的概念来源于医学领域,医护人员通过询问、观察患者,或者通过仪器检测,利用数据对患者所患病症做出判断。车辆诊断的目的也有类似的地方,为了能够快速准确的判断车辆或者某个控制器的故障以及故障原因,从而为维修提供可靠的依据。车辆诊断需要有诊断仪和ecu端(即车载电脑或者电子控制单元),诊断仪(即汽车的诊断仪或诊断设备)和ecu端通过一问一答的形式进行通信,因而诊断仪和ecu端都需要遵循同样的诊断通信协议,本申请采用常用的iso 14229也就是uds协议。诊断仪在具有诊断服务需求时,会根据uds协议生成种子请求消息并发送给ecu端,ecu端接收到种子消息后会随机生成种子数据。
[0060]
s200接收诊断仪发送的私钥请求消息,根据私钥请求消息中的诊断仪标识符和加密私钥进行安全认证;
[0061]
s300获取安全认证结果并向诊断仪发送安全认证结果;
[0062]
具体的,在ecu端向诊断仪发送生成的种子数据后,诊断仪会发送私钥请求消息给ecu端,私钥请求消息包括诊断仪标识符和加密私钥。其中,诊断仪标识符为代表诊断仪身份的字符串,可以是sn(即序列号)、型号等等。加密私钥为诊断仪接收到ecu端发送的种子数据后,根据种子数据、诊断仪标识符和预设加密算法进行加密计算得到的私钥。ecu端接收到私钥请求消息后,根据诊断仪标识符和加密私钥对诊断仪,进行安全认证判断诊断仪是否具有安全访问的权限。
[0063]
ecu端将安全认证结果传递给发送私钥请求消息的诊断仪。诊断仪接收到ecu端发送的安全认证结果后,在ecu端验证诊断仪安全认证通过的前提下,诊断仪可向ecu端发送诊断服务器请求。
[0064]
s400接收诊断仪发起的诊断服务请求,根据诊断服务表和诊断仪标识符进行权限认证,向诊断仪反馈对应于诊断服务请求的权限认证结果。
[0065]
具体的,由于诊断服务表包括服务类型和诊断仪标识符的对应关系,而服务类型与诊断服务名称是uds协议中已经规定的,因此,可以通过设置诊断仪标识符,标识诊断仪为哪一种诊断仪,进而分析出该诊断仪所具有的诊断服务权限。例如,服务类型为“22”时,uds协议规定对应的诊断服务名称为“读数据”,服务类型为“2e”时,uds协议规定对应的诊断服务名称为“写数据”,服务类型为“19”时,uds协议规定对应的诊断服务名称为“读取故障码”。此处只是示例,其他服务类型与诊断服务名称对应关系可具体参见uds协议,在此不再详细说明。一般而言诊断服务表的服务类型和诊断仪标识符以二进制、八进制或者十六进制的方式进行表示,优选采用十六进制进行表示。
[0066]
因此,ecu端根据诊断服务表和诊断仪标识符,对接收到的诊断服务请求进行匹配,根据匹配结果判断是否允许向诊断仪授予诊断服务请求所需的诊断服务权限,进而根据判断结果得到对应于诊断服务请求的权限认证结果,然后,ecu端将诊断仪发送权限认证
结果,由诊断仪根据权限认证结果对车辆进行访问诊断,或者重新发起请求进行新一轮的认证。
[0067]
本实施例中,将诊断仪标识符参与安全认证,能够针对不同诊断仪进行单独、个性化的安全认证,提高多诊断仪进行诊断服务的安全性。此外,通过设置诊断服务表,以诊断仪标识符表明诊断仪的身份,以便为不同身份的诊断仪分配不同的诊断服务权限,简单方便,错误率更低,进而实现了在同一诊断会话情景下,对于不同诊断仪进行不同诊断服务权限的控制,根据诊断仪标识符来控制访问不同的uds服务(即统一的诊断服务),使得诊断服务权限的控制粒度更细。
[0068]
本发明的一个实施例,如图2所示,一种汽车诊断服务的控制方法,包括:
[0069]
s010上电或复位后初始化诊断服务表;诊断服务表包括服务类型和诊断仪标识符的对应关系。
[0070]
具体的,ecu端上电或者复位后,bootloader代码(即启动程序)首先被执行。bootloader执行基本的初始化,初始化硬件设备和诊断服务表,以便准备好的ecu端的软硬件环境。
[0071]
s100在接收到诊断仪发送的种子请求消息时,生成种子数据并发送至诊断仪;
[0072]
具体的,ecu端上电或者复位完成初始化诊断服务表后,会实时监听是否接收到诊断仪发送的种子请求消息,若ecu端确定接收到诊断仪发送的种子请求消息,则会随机生成种子数据并发送给对应的诊断仪。
[0073]
s210接收诊断仪发送的私钥请求消息,根据种子数据和诊断仪标识符计算得到计算密钥,将计算密钥与加密私钥进行比较;
[0074]
具体的,诊断仪发送的种子请求消息包括第一安全等级值,并且,诊断仪发送的私钥请求消息也包括第二安全等级值,第一安全等级值为奇数,第二安全等级值为偶数,且第二安全等级值=第一安全等级值+1。此外,私钥请求消息还包括汽车诊断仪的诊断仪标识符以及加密私钥,其中,加密私钥根据种子数据、诊断仪标识符和自定义安全算法计算得到。
[0075]
诊断仪向ecu端发送的种子请求消息以及私钥请求消息中的安全等级值是相互关联的,这样才能使得诊断会话的安全等级为同一等级。例如,若诊断仪向ecu端发送的种子请求消息中的第一安全等级值为“0x05”,则诊断仪后续向ecu端发送的私钥请求消息的第二安全等级值为“0x06”,即“0x05”和“0x06”是一对。还例如,若诊断仪向ecu端发送的种子请求消息中的第一安全等级值为“0x01”,则诊断仪后续向ecu端发送的私钥请求消息的第二安全等级值为“0x02”,即“0x01”和“0x02”是一对。此处只是示例,诊断仪发送的种子请求消息和私钥请求消息之间的安全等级值的关系,可参见uds协议,在此不再详细说明。
[0076]
在诊断仪发送种子请求消息和私钥请求消息时,只是以请求进入01这个安全等级(sub-function)为例来进行介绍的。但要注意请求种子的sub-function(即第一安全等级)不一定要是01,也可以是03、05,或者07-7d之间的任意奇数值,通过该安全等级值划分不同的安全等级。同样,发送私钥请求消息时的sub-function(即第二安全等级)不一定就是02(01+1),可以是04、06,或者08-7e间的任意偶数值。不过需注意,私钥请求消息的第二安全等级是先前发送的种子请求消息中的第一安全等级+1的数值,即像01对应02,03对应04,07对应08这样对应起来。此处为示例,具体安全等级的划分、密钥算法、种子算法、密钥的长度
等信息会由汽车生产商事先规定。
[0077]
优选的,诊断仪的诊断仪标识符可以通过明文的方式携带,即私钥请求消息可以包括明文的诊断仪标识符。当然,诊断仪的诊断仪标识符也可以作为加密使用的计算因子来携带。本方案中,在私钥请求消息中携带诊断仪标识符,也可在私钥请求消息根据需求携带自定义的内容。
[0078]
s220若计算密钥与加密私钥一致,确定安全认证通过;
[0079]
s230若计算密钥与加密私钥不同,确定安全认证未通过;
[0080]
具体的,ecu端接收到诊断仪发送的私钥请求消息后,根据私钥请求消息中的诊断仪标识符以及此前生成的种子数据,还有自定义安全算法进行加密计算得到计算密钥。其中,ecu端内置的自定义安全算法与诊断仪内置的自定义安全算法相匹配。
[0081]
ecu端计算得到计算密钥后,将从诊断仪处接收到的私钥请求消息中加密私钥与计算密钥进行对比。如果计算密钥与加密私钥一致或者相同则确定安全认证通过。如果计算密钥与加密私钥不一致或者不同,确定安全认证未通过。
[0082]
s310在安全认证通过时将诊断仪标识符替换为私钥请求消息中的诊断仪标识符,并向诊断仪反馈安全认证通过的确定应答报文;
[0083]
s320在安全认证未通过时将诊断仪标识符替换为预设标识符,并向诊断仪反馈安全认证未通过的否定应答报文;预设标识符用于表示安全认证未通过;
[0084]
具体的,ecu端在计算密钥与加密私钥不同时认定安全认证未通过,此时,ecu端会根据诊断服务协议向诊断仪反馈安全认证未通过的否定应答报文。ecu端在计算密钥与加密私钥一致时认定安全认证通过,此时,ecu端会根据诊断服务协议向诊断仪反馈安全认证通过的确定应答报文。
[0085]
s410接收诊断仪发起的诊断服务请求;
[0086]
s420根据诊断仪标识符和诊断服务请求所包括的服务类型,在诊断服务表中进行查询,判断标识符对应的诊断仪是否具有访问该服务类型的能力;
[0087]
s430如果有,向诊断仪返回肯定响应报文;
[0088]
s440如果无,则向诊断仪返回否定响应报文,拒绝诊断仪的诊断服务请求;
[0089]
具体的,uds本质上是一系列服务的集合。uds的每种服务(包括但是不限于10诊断会话控制,14清除诊断信息,19读取诊断信息,22由did读取数据,27安全解锁服务,2e由did写入数据)都有自己独立的sid(英文全称是service identifier,诊断服务id即为服务类型)。
[0090]
诊断方(tester)给ecu端发送指定的诊断服务请求(request),这条诊断服务请求中需要包含服务类型,且服务类型处于首字节。ecu端接收到诊断仪发送的诊断服务请求后,对诊断服务请求进行解析得到其中的服务类型。
[0091]
具体的,ecu端根据诊断仪标识符和诊断服务请求所包括的服务类型,在诊断服务表中进行查询,判断标识符对应的诊断仪是否具有访问该服务类型的能力,如果有则反馈给诊断仪的肯定响应报文的首字节为[sid+0x40],例如,服务类型是0x10,ecu端确定标识符对应的诊断仪具有访问该服务类型的能力时,向诊断仪反馈的肯定响应报文中的回复首字节为“0x50(=0x10+0x40)”,还例如,服务类型是0x19,ecu端标识符对应的诊断仪具有访问该服务类型的能力时,向诊断仪反馈的肯定响应报文中的回复首字节为“0x59(=0x19+
0x40)。
[0092]
如果ecu端确定标识符对应的诊断仪不具有访问该服务类型的能力时,则反馈给诊断仪的否定响应报文的首字节为0x7f,第二字节为诊断服务请求包括服务类型,第三字节为nrc。例如,服务类型是0x10,ecu端确定标识符对应的诊断仪不具有访问该服务类型的能力时,向诊断仪反馈的否定响应报文中的回复首字节为“首字节为0x7f,第二字节为0x10,第三字节为nrc(是negative response code的缩写,即否定响应码以代表不通过的原因)。常见的ncr可参考uds协议,在此不再详细说明。
[0093]
在实施例中,整体流程进行了二次认证,第一次认证时ecu端当接收到诊断仪发送的种子请求消息时,产生种子数据并将种子数据传输给诊断仪,然后接收诊断仪发送的私钥请求消息,根据私钥请求消息中的加密私钥和诊断仪标识符进行安全认证,并向诊断仪返回安全认证结果。第二次认证根据诊断服务表、诊断仪标识符和诊断仪所发出的诊断服务请求中的服务类型,对诊断仪进行诊断服务权限的权限认证,从而判断发起诊断服务请求的诊断仪是否可以进行对应于服务类型的诊断服务操作,并向诊断仪返回权限安全认证结果。
[0094]
此外,本实施例中,将诊断仪标识符参与安全认证,能够针对不同诊断仪进行单独、个性化的安全认证,提高多诊断仪进行诊断服务的安全性。此外,通过设置诊断服务表,以诊断仪标识符表明诊断仪的身份,以便为不同身份的诊断仪分配不同的诊断服务权限,简单方便,错误率更低,进而实现了在同一诊断会话情景下,对于不同诊断仪进行不同诊断服务权限的控制,使得不同的诊断仪根据诊断仪标识符来访问不同的诊断服务,细化诊断服务权限的控制粒度。
[0095]
示例性的,假设ecu端上电后或者复位后进行初始化,ecu端在启动后初始化的时候,在ecu端内部建立了诊断仪标识符与所支持uds的服务id对应的诊断服务表(表中的数据都是16进制),如下表1所示,下表1示出了诊断仪标识符与服务类型的对应关系,下表1的服务类型为usd诊断服务的6大类的符号分类,还可以根据每个大类中的子服务继续进行细化设定诊断标识符与每个大类中的子服务之间的对应关系。
[0096]
诊断仪标识符支持uds的服务id,即服务类型1222122e121412191322131915221514 01.... [0097]
表1、诊断服务表
[0098]
如图3所示,假设现在诊断仪需要执行的诊断服务的服务类型为2e服务,诊断仪先向ecu端发送的种子请求消息为“2701请求”,ecu端返回给诊断仪一个种子数据seed1。然后,诊断仪通过自定义安全算法,对种子数据seed1和自身的诊断标识符id=12进行计算得
到一个b1b2 c1c2 d1d2 e1e2的加密私钥,诊断仪将诊断仪标识符进行加密得到密文形式的诊断仪标识符为a1a2,然后组合生成的私钥请求消息为“27 02 a1a2 b1b2 c1c2 d1d2 e1e2”,将私钥请求消息发送给ecu端,ecu端接收到该私钥请求消息后,对私钥请求消息进行解析得到加密秘钥为b1b2 c1c2 d1d2 e1e2,并解析得到诊断仪标识符a1a2为id=12。此时,ecu端采用与诊断仪相适配的自定义安全算法,对自身生成的种子数据seed1和接收解析得诊断仪标识符计算得到计算密钥,若计算密钥也是b1b2 c1c2 d1d2 e1e2,则安全认证通过,ecu内部会保存此私钥请求消息对应的诊断仪标识符,即将诊断仪标识符更新为id=12,并且向诊断仪发送确定应答报文。若计算密钥不是b1b2 c1c2 d1d2 e1e2,则将安全认证不通过,ecu内部会保存ff,即将诊断仪标识符更新为id=ff(ff为用于表示安全认证未通过的预设标识符,其为预设标识符的一种设定值,还可根据需要设定为其他字符组合)存储下来,并向诊断仪发送否定应答报文。若诊断仪在接收到否定应答报文后,依旧在本会话过程中向ecu端发送服务类型为2e的诊断服务请求,则ecu端直接拒绝并向诊断仪发送否定响应报文。
[0099]
如果诊断仪在接收到确定应答报文后,依旧在本会话过程中向ecu端发送服务类型为2e的ude服务请求(即本发明的诊断服务请求),当ecu端接收到服务类型为2e的ude服务请求后,ecu端会根据诊断服务表获取与2e对应的查询诊断仪标识符,然后,ecu端根据诊断仪标识符和诊断服务请求所包括的服务类型,在诊断服务表中进行查询,判断标识符对应的诊断仪具有访问该服务类型的能力。如果uds请求服务id为2e,发起uds请求服务的诊断仪的标识符为12,根据表1所示的诊断服务表可知标识符对应的诊断仪是否具有访问该服务类型的能力,2e服务请求通过,ecu端发送给诊断仪的服务请求结果(即权限认证结果)为肯定响应报文。如果uds请求服务id为2e,ecu内部的诊断仪标识符为13。根据表1所示的诊断服务表可知标识符对应的诊断仪不具有访问该服务类型的能力,2e服务请求不通过,ecu端发送给诊断仪的服务请求结果为否定响应报文。此处只是示例,其他类似服务id请求,如22、14、19等服务可参照上述流程进行认证判断。
[0100]
需注意,不论是安全认证结果还是权限认证结果,ecu端反馈给诊断仪的返回消息格式与uds标准保持一致。
[0101]
本实施例中,通过诊断仪标识符的设置与判断,简单有效的标识出诊断仪的类型,进而方便了对于不同诊断仪进行不同权限的控制。此外,通过进行二次认证,第一次进行安全认证以便判断诊断仪是否身份合法以进行安全访问,第二次进行权限认证以便判断诊断仪是否具有所请求的诊断服务操作的执行权限,从而实现了在同一诊断会话下,对于不同诊断仪进行不同权限的控制,权限控制粒度更细。
[0102]
本发明的一个实施例,如图4所示,一种电子控制单元包括:
[0103]
通信模块10,用于接收诊断仪发送的种子请求消息、私钥请求消息以及诊断服务请求;还用于向诊断仪发送对应于种子请求消息的种子数据,对应于私钥请求消息的安全认证结果,以及对应于诊断服务请求的权限认证结果;
[0104]
安全认证模块20,用于接收诊断仪发送的私钥请求消息,根据私钥请求消息中的诊断仪标识符和加密私钥进行安全认证得到安全认证结果;
[0105]
更新模块30,用于通过安全认证结果更新诊断仪标识符;
[0106]
权限认证模块40,用于根据诊断服务表和诊断仪标识符,对诊断服务请求进行权
限认证得到权限认证结果。
[0107]
基于前述实施例,还包括:
[0108]
初始化模块,用于上电或复位后初始化诊断服务表;诊断服务表包括服务类型和诊断仪标识符的对应关系。
[0109]
基于前述实施例,安全认证模块20包括:
[0110]
计算子模块,用于根据种子数据和诊断仪标识符计算得到计算密钥;
[0111]
比较子模块,用于将计算密钥与加密私钥进行比较;若计算密钥与加密私钥一致,确定安全认证通过;若计算密钥与加密私钥不同,确定安全认证未通过。
[0112]
基于前述实施例,更新模块30包括:
[0113]
储存子模块,用于储存预设标识符,预设标识符用于表示安全认证未通过;
[0114]
更新子模块,用于在安全认证通过时保存私钥请求消息中的诊断仪标识符;还用于在安全认证未通过时将诊断仪标识符替换为预设标识符;
[0115]
安全认证模块20包括:
[0116]
第一生成子模块,用于若安全认证通过时生成确定应答报文;若安全认证未通过时生成否定应答报文;
[0117]
通信模块10,还用于若安全认证通过时向诊断仪发送确定应答报文,若安全认证未通过时向诊断仪发送否定应答报文。
[0118]
基于前述实施例,权限认证模块40包括:
[0119]
判断子模块,用于根据诊断仪标识符和诊断服务请求所包括的服务类型,在诊断服务表中进行查询,判断标识符对应的诊断仪是否具有访问该服务类型的能力;如果有生成肯定响应报文,如果无生成否定响应报文;
[0120]
通信模块10,还用于向诊断仪返回肯定响应报文,或向诊断仪返回否定响应报文,拒绝诊断仪的诊断服务请求。
[0121]
具体的,本实施例是上述方法实施例对应的装置实施例,具体效果参见上述方法实施例,在此不再一一赘述。
[0122]
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各程序模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的程序模块完成,即将所述装置的内部结构划分成不同的程序单元或模块,以完成以上描述的全部或者部分功能。实施例中的各程序模块可以集成在一个处理单元中,也可是各个单元单独物理存在,也可以两个或两个以上单元集成在一个处理单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序单元的形式实现。另外,各程序模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。
[0123]
所述电子控制单元可包括,但不仅限于处理器、存储器。本领域技术人员可以理解,上述仅仅是电子控制单元的示例,并不构成对电子控制单元的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如:电子控制单元还可以包括输入/输出接口、显示设备、网络接入设备、通信总线、通信接口等。通信接口和通信总线,还可以包括输入/输出接口,其中,处理器、存储器、输入/输出接口和通信接口通过通信总线完成相互间的通信。该存储器存储有计算机程序,该处理器用于执行存储器上所存放的计算机程序,实现上述所对应方法实施例中的汽车诊断服务的控制方法。
[0124]
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述或记载的部分,可以参见其他实施例的相关描述。
[0125]
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
[0126]
应当说明的是,上述实施例均可根据需要自由组合。以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1