安全访问0x27
提供一种访问被限制访问的数据和(或)诊断服务的方法。
一般的,用于下载/上传 例程或数据 到服务器及从服务器读取具体内存位置的诊断服务可能需要进行安全访问。
典型示例:
1.客户端请求种子
2.服务器发送种子
3.客户端发送秘钥(适用于已收到种子)
4.服务器做出响应,确认秘钥有效,并自行解锁
Notes:
- requestSeed(请求种子)子功能参数 n 应始终为奇数,且统一安全级别的相应的sendKey(发送秘钥)子功能参数值应等于 n+1。
- 任何时间尽可有一个安全级别处于活动状态,比如已解锁0x03相关安全级别,又成功请求解锁了0x01级别,则0x03相关级别的受保护功能应不在处于活动状态;安全级别编号具有任意性,级别之间不存在任何关系。
- 如果请求报文所请求的安全级别已经解锁,则ECU回复种子全为0的积极响应。未解锁时ECU不得发送全为0的种子,客户端检查非0种子,从而可以确定ECU是否锁定为特定的安全级别。
安全访问原理:
客户端请求种子,服务器肯定响应发送种子,客户端根据安全算法和种子计算出秘钥,客户端发送秘钥,服务器接收到秘钥后将该秘钥和nebula存储或计算出来的秘钥进行对比,如果两个秘钥匹配则服务器解锁相关数据或服务,如果不匹配则视作一次错误的尝试。
请求序列:
在具体会话下请求可能需要有效安全访问的服务或功能时应遵循以下序列:
1.诊断会话控制
2.安全访问
3.受保护的诊断服务或功能
子功能参数定义:
请求种子报文定义:
发送秘钥报文定义:
肯定响应报文定义:
肯定响应报文数据参数定义:
支持的NRC: