服务描述
27服务是访问数据和/或诊断服务的一种手段,这种手段出于遵守排放标准,并防止打破防卫性/安全性标准的原因而进行限制访问。诊断服务进行下载/上传程序/数据到服务器并且从服务器读取特定内存地址这种是可能需要安全访问的情况。不正确的程序或者数据下载进服务器内可能会损坏电子设备或其他车辆部件,或者会有打破车辆排放,防卫性/安全性的标准。27服务的概念为种子和密钥。
使用27服务的一个典型例子如下:
●客户机请求“种子”
●服务器发送“种子”
●客户机回应“密钥”
●服务器响应“密钥有效”且将服务器解锁
服务器发送“请求种子”的子函数参数值应始终为奇数,并且客户机“回应密钥"子函数参数值,在同一安全级别下,应等于“请求种子”子函数参数值加 1 。
在任何时候都只能激活一个安全级别。例如,如果与“请求种子0x03”关联的安全级别处于活动状态,此时检测器(客户机)的请求成功解锁,安全级别关联“请求种子0x01”,那么在这时只支持与“请求种子0x01”关联的安全级别所支持的安全功能解锁。在这时,之前与“请求种子0x03”关联的安全级别解锁的任何附加安全功能都将不再被激活。安全级别的编号是任意的,这意味着假如两个编号处于上下层状态,但相互不存在任何关联关系。
客户机应该通过发送安全访问服务里面的“请求种子”消息来进行请求服务器“解锁”。服务器应该正向响应且使用安全访问服务“请求种子”发送一个“种子”来进行回应。然后客户机应通过使用相应的的安全访问服务“发送密钥”请求消息将一个“密钥”号码返回给服务器。服务器应将此“密钥”与内部存储/计算的密钥进行比较。如果两个密钥匹配,则服务器启用(“unlock”)客户端对特定服务/数据的访问,并指示使用安全访问服务“发送密钥”来进行正响应消息。如果两个密钥不匹配,这将被视为一个错误的“访问尝试”。无效的密钥将会要求客户机重新开始发送“请求种子”消息(有关安全访问处理的其他详情,请参见附件一)。
如果服务器支持安全性,但是,当接收到安全访问“请求种子”消息时,请求的安全级别已经解锁,该服务器应使用安全访问“请求种子”正响应消息服务响应一个种子值等于“0”的响应服务。服务器不得为当前锁定的给定安全级别发送全零种子。客户端应使用此方法通过检查非零种子来确定服务器是否锁定为特定安全级别。
在服务器启动/重置后和经过一定数量的错误访问尝试后(见下面的进一步描述),在服务器能够正响应来自客户端的安全访问服务“请求种子”消息之前,可能需要为车辆制造商提供特定的延时时间。如果延迟定时器被设定好,那么在达到车辆制造商指定的错误访问尝试次数之后,或当服务器通电/重置之后,并且之前执行的安全访问服务由于一次错误访问尝试而失败时,应激活该延迟定时器。如果服务器支持延迟定时器,那么在成功执行安全访问服务“发送密钥”后,服务器应清除 通电/复置时 延迟定时器调用的服务器内部指示信息。如果服务器支持此延迟定时器,并且不能确定先前在通电/复位之前执行的安全访问服务是否失败,则在通电/复位后,延迟定时器应始终处于激活状态。只有当服务器在通电/重置时被锁定时,才需要进行延迟。车辆制造商应选择是否要支持延迟计时器。
试图访问安全系统不应妨碍正常的车辆通信或其他诊断通信。
提供安全性的服务器,如果在服务器被锁定时请求了安全服务,则应支持拒绝消息。
在一个特定的诊断会话期间请求的某些诊断功能/服务可能需要一个成功的安全访问序列。在这种情况下,应需要以下服务顺序:
●诊断会话控制服务
●安全访问服务
●安全诊断服务
●服务器中启用的诊断会话(会话启动)允许不同的访问模式。
●重要提示——服务器和客户端应满足7.5中规定的请求和响应消息行为。
请求消息(Request Message)
请求消息定义(Request Message Definition)
表40定义了请求消息定义 - 子函数=请求种子
表41定义了请求消息定义-子功能= 发送密钥
请求消息子函数参数$Level(LEV_)定义
子函数参数 安全访问类型( securityAccessType)向服务器指示此服务正在进行的步骤,客户端希望访问的安全级别和“种子”和“密钥”的格式。如果服务器支持不同级别的安全性,每个级别应该被请求“种子”的值来标识。请求种子的值与“发送密钥”有固定的关系
“requestSeed = 0x01” 标识之间固定的关系 “requestSeed = 0x01” and “sendKey = 0x02”
“requestSeed = 0x03” 标识之间固定的关系 “requestSeed = 0x03” and “sendKey = 0x04”
请求"种子"和发送"密钥"的值和定义见表42(suppressPosRspMsgIndicationBit (bit 7) not shown)
请求消息数据-参数定义
表43定义了请求消息的数据参数。
正响应消息(Positive response message)
正响应消息定义
正响应消息数据 - 参数定义
负响应代码NRC
【示例】安全访问消息流程
假定
对于以下给定的消息流示例,如果服务器处于“锁定”状态,则必须满足以下条件才能成功解锁服务器:
- sub-function to request the seed: 0x01 (requestSeed)
- sub-function to send the key: 0x02 (sendKey)
- seed of the server (2 bytes): 0x3657
- key of the server (2 bytes): 0xC9A9 (e.g. 2’s complement of the seed value)
客户端通过将suppressPosRspMsgIndicationBit(子函数参数的第7位)设置为“false”(“0”)来请求有一个响应消息。
例子1:ECU处于Locked状态
第一步:请求种子
第二步:发送key
例子2:ECU处于“解锁”状态
第一步:请求种子