1.服务简介
1.1目的
该服务的目的是传输受第三方攻击保护的数据,这可能会危及数据安全。
如果客户端打算以安全模式使用本文档中定义的诊断服务,则SecuredDataTransmission服务适用。它还可以用于在客户端和服务器之间以安全模式传输符合某些应用协议的外部数据。在这种情况下,安全模式意味着传输的数据受到加密方法的保护。
1.2 安全子层
下图说明了安全子层。为了在安全模式下执行诊断服务,必须在服务器和客户端应用程序中添加安全子层。
有两种方法可以在客户端和服务器之间执行诊断服务数据传输:
a. 不安全的数据传输模式
应用程序使用本文档中定义的诊断服务和应用层服务原语在客户端和服务器之间交换数据。安全子层在客户端和服务器中的“应用程序”和“应用程序层”之间执行数据的“传递”。
b. 安全数据传输模式
应用程序使用诊断服务或外部服务和安全子层服务原语在客户机和服务器之间交换数据。安全子层使用secureddatattransmit服务来传输/接收安全数据。安全链接必须是点对点通信。因此,只允许物理寻址,这意味着只涉及一个服务器。
安全子层与应用程序的接口符合ISO/OSI模型约定,因此提供了以下四个安全子层(SS_)服务原语:
a. SS_ScuredMode.req:安全子层请求
b. SS_ScuredMode.ind:安全子层指示
c. SS_ScuredMode.resp:安全子层响应
d. SS_ScuredMode.conf:安全子层确认
ISO 14229的这一部分定义了已确认和未确认的服务。在安全模式下,只允许确认服务(suppressPosRspMsgIndicationBit=FALSE)。根据这一要求,以下服务不允许在安全模式下执行:
a. ResponseOnEvent(0x86);
b. 按周期标识符读取数据(0x2A);
c. 测试器存在(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, ...]
)
安全子层服务原语中显示的寻址信息被直接映射到应用层的寻址信息上,反之亦然。
1.3 安全子层访问
访问安全服务执行的安全子层的概念类似于本文档中描述的应用层接口。安全子层使用应用层服务原语。
以下介绍了在安全模式下执行已确认的诊断服务:
a.客户端应用程序使用安全子层SecuredServiceExecution服务请求以安全模式执行诊断服务。安全子层执行与服务器建立链接所需的操作,添加特定的安全相关参数,根据需要对诊断服务的服务数据进行加密,以安全模式执行,并使用应用层secureddatatranssion服务请求,将受保护的数据传输到服务器。
b.服务器接收一个应用层SecuredDataTransmission服务指示,由服务器的安全子层处理。服务器的安全子层检查特定于安全的参数,解密加密的数据,并通过安全子层SecuredServiceExecution服务指示将要以安全模式执行的服务的数据呈现给应用程序。应用程序执行服务并使用安全子层SecuredServiceExecution服务响应以安全模式响应服务。服务器的安全子层添加了特定的安全相关参数,需要时对响应消息数据进行加密,并使用应用层SecuredDataTransmission service response将响应数据传输到客户端。
c. 客户端接收应用层SecuredDataTransmission服务确认原语,该原语由客户端的安全子层处理。客户端的安全子层检查特定于安全的参数,解密加密的响应数据,并通过安全子层SecuredServiceExecution确认将数据呈现给应用程序。
下图图形方式显示了在安全模式下执行已确认的诊断服务时,安全子层、应用程序层和应用程序之间的交互。
2.请求消息
2.1 请求消息定义
安全子层生成应用层SecuredDataTransmission请求消息参数。
2.2请求消息子功能参数$Level(LEV_)定义
此服务不使用子函数参数。
2.3 请求消息数据参数定义
定义请求消息的数据参数
securityDataRequestRecord
此参数包含由安全子层处理的数据。
3.肯定响应消息
3.1 肯定响应消息定义
3.2 肯定响应消息数据参数定义
定义肯定响应消息的数据参数
securityDataResponseRecord
此参数包含由安全子层处理的数据。
4.支持的否定响应代码(NRC_)
本服务应执行以下否定响应代码。表85记录了每个响应代码发生的情况。响应代码总是不加加密地发送,即使根据请求A_PDU中的配置文件,响应A_PDU必须加密。如果错误场景适用于服务器,则应使用列出的否定响应。
NCR | 代名词 | 描述 |
0x13 | incorrectMessage\ LengthOrInvalidFormat | 如果请求A_PDU的长度不正确,则服务器应使用此响应代码。 |
0x38 – 0x4F | reservedByExtended\ DataLinkSecurityDocument | 此值范围由扩展数据链路安全性保留。 |
上面列出的响应代码适用于SecuredDataTransmission(0x84)服务。如果在安全模式下执行的诊断服务需要否定响应,则该否定响应将通过SecuredDataTransmission肯定响应消息以安全模式发送给客户端。