UDS 诊断服务系列文章目录
UDS 诊断 - DiagnosticSessionControl(诊断会话控制)(0x10)服务
UDS 诊断 - ECUReset(ECU重置)(0x11)服务
UDS 诊断 - SecurityAccess(安全访问)(0x27)服务
UDS 诊断 - CommunicationControl(通信控制)(0x28)服务
UDS 诊断 - TesterPresent(测试仪保活)(0x3E)服务
UDS 诊断 - AccessTimingParameter(访问计时参数)(0x83)服务
UDS 诊断 - SecuredDataTransmission(受保护的数据传输)(0x84)服务
文章目录
一、服务说明
1. 目的
本服务旨在传输已保护其不受到第三方攻击(指可能危及数据安全性的攻击)的数据。
如果客户端打算在安全模式中使用诊断服务,则 SecuredDataTransmission(受保护的数据传输)服务适用。还可以用于在受保护模式下在客户端与服务器之间传输的符合其他一些应用程序协议的外部数据。这种环境下的受保护模式指通过加密方法开保护所传输的数据。
2. 安全子层
下图对安全子层进行了图解说明。为了在受保护模式下执行诊断服务,须在服务器和客户端应用程序中添加安全子层。
有两种方法可执行客户端与服务器之间的诊断服务数据传输:
— 不受保护的数据传输模式
应用程序使用诊断服务和应用层服务原语,以便在客户端与服务器之间交换数据。安全子层在客户端与服务器中的 “应用程序” 和 “应用层” 之间执行数据 “传递”。
— 受保护的数据传输模式
应用程序使用诊断服务或外部服务及安全子层服务原语在客户端与服务器之间交换数据。安全子层使用 SecuredDataTransmission(受保护的数据传输)服务进行传输 / 接收受保护的数据。受保护的链路须为点对点通信。因此,仅允许物理寻址,这意味着仅涉及到一个服务器。
安全子层与应用程序的接口符合 ISO / OSI 模型约定,因此,提供一下四种安全子层(SS_)服务原语:
- SS_SecuredMode.req:安全子层请求
- SS_SecuredMode.ind:安全子层指示
- SS_SecuredMode.resp:安全子层响应
- -SS_SecuredMode.conf:安全子层确认
ISO 14229 本部分定义了已确认的及未确认的服务。受保护模式下,仅允许已确认的服务(suppressPosRspMsgIndicationBit = FALSE)。根据该要求,不允许在受保护模式下执行以下服务:
— ResponseOnEvent(基于事件响应)(0x86);
— ReadDataByPeriodicIdentifier(按周期性标识符读取数据)(0x2A);
— TesterPresent(测试仪保活)(0x3E);
已确认的服务(suppressPosRspMsgIndicationBit = FALSE)使用四个应用层服务原语,即,请求、指示、响应及确认。在受保护模式下执行已确认的诊断服务时,将服务映射到四个安全子层服务原语,反之亦然。
在受保护模式下执行诊断服务时,安全子层的认识加密 “应用程序” 提供的数据,解密 “应用层” 提供的数据,并添加、检查及删除安全性反面的具体数据元素。安全子层使用应用层的 SecuredDataTransmission(受保护的数据传输)(0x84)服务来传输和接收应在受保护模式下进行交换的整个诊断消息或符合外部协议(请求和响应)的消息。
为了安全执行诊断服务,安全子层向应用程序提供服务 “SecuredServiceExecution(受保护的服务执行)”。
按照以下通用格式规定了 “SecuredServiceExecution(受保护的服务执行)” 服务的安全子层请求和指示原语:
SS_SecuredMode.request (
SA,
TA,
TA_type
[,RA]
[,parameter 1,...]
)
SS_SecuredMode.indication (
SA,
TA,
TA_type
[,RA]
[,parameter 1,...]
)
按照以下通用格式规定了 “SecuredServiceExecution(受保护的服务执行)” 服务的安全子层响应和确认原语:
SS_SecuredMode.response (
SA,
TA,
TA_type
[,RA]
Result
[,parameter 1,...]
)
SS_SecuredMode.confirm (
SA,
TA,
TA_type
[,RA]
Result
[,parameter 1,...]
)
安全子层服务原语上显示的寻址信息直接映射到应用层的寻址信息,反之亦然。
3. 安全子层访问
访问用于受保护服务执行的安全子层的概念类似于应用层接口。安全子层使用应用层服务原语。
以下内容描述了在受保护模式下已确认的诊断服务:
-
客户端应用程序使用安全子层 SecuredServiceExecution(受保护的服务执行)服务请求在受保护模式下执行诊断服务。安全子层执行所需的操作以与服务器建立链路,添加具体的安全相关参数,加密将在受保护模式下执行的诊断服务的服务数据)如需要),并使用应用层 SecuredDataTransmission(受保护的数据传输)服务请求向服务器传输受保护的数据。
-
服务器接收经服务器安全子层处理过的 应用层 SecuredDataTransmission(受保护的数据传输)服务指示。服务器的安全子层检查安全性方面的具体参数,解密已加密的数据,并通过安全子层 SecuredServiceExecution(受保护的服务执行)服务指示将需在受保护模式下执行的服务数据传输至应用程序。应用程序执行服务,并使用安全子层 SecuredServiceExecution(受保护的服务执行)服务响应在受保护模式下对服务做出向响应。服务器的安全子层添加特定的安全相关参数,加密响应消息数据(如需要),并使用应用层 SecuredDataTransmission(受保护的数据传输)服务响应将响应数据传输至客户端。
-
客户端接收经客户端安全子层处理过的应用层 SecuredDataTransmission(受保护的数据传输)服务确认原语。客户端的安全子层检查安全性方面的具体参数,解密已加密的响应数据,并通过安全子层 SecuredServiceExecution(受保护的服务执行)确认向应用程序传输数据。
下图以图解形式说明了在受保护模式下执行已确认的诊断服务时安全子层、应用层及应用程序之间的交互。
二、请求消息
1.请求消息定义
安全子层生成应用层 SecuredDataTransmission(受保护的数据传输)的请求消息参数
字节 | 参数名称 | 字节值 |
---|---|---|
#1 | SecuredDataTransmission(受保护的数据传输)请求SID | 0x84 |
#2 . . #n | securityDataRequestRecord[] = [ SecurityDataParameter#1 . . SecurityDataParameter#m ] | 0x00 - 0xFF . . 0x00 - 0xFF |
2. 请求消息数据参数定义
定义 |
---|
securityDataRequestRecord(安全数据请求记录) 本参数包含经安全子层处理过的数据。 |
三、肯定响应消息
1. 肯定响应消息定义
字节 | 参数名称 | 字节值 |
---|---|---|
#1 | SecuredDataTransmission(受保护的数据传输)响应SID | 0xC4 |
#2 . . #n | securityDataResponseRecord[] = [ SecurityDataParameter#1 . . SecurityDataParameter#m ] | 0x00 - 0xFF . . 0x00 - 0xFF |
2. 肯定响应消息数据参数定义
定义 |
---|
securityDataResponseRecord(安全数据响应记录) 本参数包含经安全子层处理过的数据。 |
四、支持的NRC
应就本服务采用以下否定响应码。下表给出了各个响应码出现的各种情况。响应代码通常不经加密即可发出,即使依据请求 A_PDU 中的configurationProfile(配置概要文件)的说明,响应 A_PDU 须进行加密。
NRC | 说明 |
---|---|
0x13 | 消息长度不正确或格式无效 |
0x38 - 0x4F | 按扩展的护具链路安全文件保存 扩展的数据链路安全性保留值的范围。 |