《UDS协议从入门到精通》系列——图解0x84:安全数据传输

发布于:2024-07-05 ⋅ 阅读:(22) ⋅ 点赞:(0)

《UDS协议从入门到精通》系列——图解0x84:安全数据传输


Tip📌:本文描述中但凡涉及到其他UDS服务的,均提供专栏内文章链接跳转方式以便快速了解他们。

学习UDS基础知识以及其他相关内容?>>>>>>>>> 返回专栏总目录 《UDS协议从入门到精通(UDS速查手册)》<<<<<<<<<

一、简介

  该服务的目的是传输受保护的数据,以防止第三方攻击,从而危及数据安全。安全模式意味着传输的数据通过加密方法得到保护。

  为了在安全模式下执行诊断服务,需要在目标ECU和Tester应用程序中添加安全子层,如下所示:
在这里插入图片描述

  有两种方法在客户端和服务器之间执行诊断服务数据传输:

  1. 非安全数据传输模式
    正如本专栏中众多服务的使用,Tester使用这些服务和目标ECU之间直接交换数据。双方应用层实现数据的“直通”。

  2. 安全数据传输模式
    应用程序使用诊断服务或外部服务以及安全子层的服务原语在目标ECU和Tester之间交换数据。作为中介的安全子层使用本文的SecuredDataTransmission服务进行安全数据的传输/接收。安全链接必须是点对点通信,因此只允许物理寻址,这意味着只涉及一个目标ECU。

  安全子层与应用程序的接口遵循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)

  在安全模式下执行诊断服务时,安全子层的任务是对“应用程序”(Tester)提供的数据进行加密,对“应用层”(目标ECU的应用层)提供的数据进行解密,并添加、检查和移除安全特定数据元素。安全子层使用应用层的SecuredDataTransmission (0x84) 服务来传输和接收整个诊断消息或根据外部协议的消息(请求和响应),这些消息应在安全模式下交换。

  安全子层为应用程序提供“SecuredServiceExecution”服务,以便安全地执行诊断服务。“SecuredServiceExecution”服务的请求和指示原语按照以下通用格式指定:

在这里插入图片描述

在安全模式下执行诊断服务的过程如下所示:

  1. 客户端(Tester)

    • 客户端应用程序使用安全子层的SecuredServiceExecution服务请求,在安全模式下执行诊断服务。
    • 安全子层执行必要的操作以建立与服务器(s)的链接,添加特定的安全相关参数,如果需要,应对要在安全模式下执行的诊断服务的数据做加密操作,并使用应用层的(目标ECU的应用层)SecuredDataTransmission服务请求将安全数据传输到服务器。
  2. 服务器(目标ECU)

    • 服务器接收到应用层的SecuredDataTransmission服务指示,该指示由服务器的安全子层处理。
    • 服务器的安全子层检查安全特定参数,解密加密数据,并通过安全子层的SecuredServiceExecution服务指示将要在安全模式下执行的服务数据呈现给应用程序。
    • 应用程序执行服务,并使用安全子层的SecuredServiceExecution服务响应,在安全模式下响应服务。
    • 服务器的安全子层添加特定的安全相关参数,如果需要,加密响应消息数据,并使用应用层的SecuredDataTransmission服务响应将响应数据传输到客户端。
  3. 客户端(Tester)

    • 客户端接收到应用层的SecuredDataTransmission服务确认原语,该原语由客户端的安全子层处理。
    • 客户端的安全子层检查安全特定参数,解密加密的响应数据,并通过安全子层的SecuredServiceExecution确认将数据呈现给应用程序。

  下图展示了在安全模式下执行诊断服务时,安全子层、应用层和应用程序之间的交互。

在这里插入图片描述

  上文也许有些晦涩… 简单来说,在安全模式下执行诊断服务时,客户端和服务器通过安全子层进行交互,确保数据的安全传输。客户端应用程序发起请求,安全子层处理并加密数据,然后通过应用层的SecuredDataTransmission服务将数据传输到服务器。服务器的安全子层解密数据并执行服务,然后将响应数据加密并通过相同的服务传输回客户端。整个过程确保了数据在传输过程中的安全性和完整性

二、数据包格式

2.1 服务请求格式

在这里插入图片描述

  本服务不支持sub-function

2.2 服务响应格式

2.2.1 肯定响应

在这里插入图片描述

  响应消息中的TimingParameterResponseRecord也正如请求消息中描述的那样,只不过这个是从目标ECU中实际读出来的时间参数。

2.2.2 否定响应

在这里插入图片描述

  可能出现的NRC及其含义如下:

NRC 含义
0x13 消息长度错误
0x38 – 0x4F 由扩展数据链路安全相关保留

>>>>>>>>> 返回专栏总目录 《UDS协议从入门到精通(UDS速查手册)》<<<<<<<<<


网站公告

今日签到

点亮在社区的每一天
去签到