车载诊断技术 发表于 2022-8-24 22:14:34

漫谈UDS协议之Service 84

今天是2022年8月20日,周六,昨晚跑了一万米(跑步多巴胺,快乐且能独自思考,极好的时光),今天彻底起不来了,久违的舒服。看了天气预报,至少还有一周时间才可以降温,因为有所期待,不觉漫长!
老规矩,分享段喜欢的文字,避免自己成为高知识低文化的人:

把注意力放在体验感而非结果上,人是真的会慢慢慢慢松弛下来。不要觉得没到终点就一无所得,这一路上你遇到的人、吹过的风、看过的日落和喝过的酒,都会变成你区别于旁人的独一无二的收藏。


我们追求的结果,只是用来指引我们前进,是灯,但不代表我们眼里就只能看到那一盏灯,灯下的竹影摇曳,灯下的人间温情,更值得我们用心体会。

Return to tiday‘s topic!

承接上文,自己专心将UDS协议中定义的26个服务,做一个全覆盖总结。
伴随着以太网引入到车载网络,给车辆带来了更多的应用场景:
-> 远程诊断;
-> 远程数据采集;
-> 远程Software Update;
有好的一面,就会有坏的一面,这样也给信息安全带了极大隐患。每天每个车企都会为这方面做大量投资,做攻防演练、渗透测试等操作。
本文主要分享UDS协议Service 84。
该服务目的:此服务的目的是传输受到第三方攻击保护的数据——这可能会危及数据安全。如果客户打算在安全模式下使用本文档中定义的诊断服务,则Secured Data Transmission服务适用。
另外该服务也可以用于Client端和Server端之间的安全模式下传输符合其他应用协议的外部数据。在这种情况下的安全模式意味着传输的数据受到加密办法的保护。
在车载诊断范畴,有两种方案可以在Client端和Server端之间执行诊断服务数据传输:
->不安全的数据传输模式
该应用程序使用本文中介绍的诊断服务和应用程序层服务在Client端和Server端之间的应用程序和应用程序层之间执行数据的传递。
->安全的数据传输模式
应用程序使用诊断服务或外部服务以及安全子服务在Client端和Server端之间交互数据。安全子层使用Secured Data Transmission服务发送和接受安全数据。安全链接必须是点对点通信,因此只允许物理寻址,这意味着该功能只能涉及Client端和Server端一对一通信和数据传输。
安全子层和应用程序的接口符合ISO/OSI模型,因此提供以下四个安全子层服务:
⎯ SS_SecuredMode.req: Security sub-layer Request
⎯ SS_SecuredMode.ind: Security sub-layer Indication
⎯ SS_SecuredMode.resp: Security sub-layer Response
⎯ SS_SecuredMode.conf: Security sub-layer Confirmation

ISO 14229这一部分定义了确认和未确认的服务,只允许确认的服务并且肯定响应抑制位不被置1,因此根据这个要求,如下服务不允许在安全模式下执行:
⎯ ResponseOnEvent (0x86);
⎯ ReadDataByPeriodicIdentifier (0x2A);
⎯ TesterPresent (0x3E);

在安全模式下执行已确认的诊断服务,请求与响应需要映射到如上4个安全子层服务上。当以安全模式执行诊断服务时,安全子层的任务是加密由“应用程序”提供的数据,以解密由“应用层”提供的数据并添加、检查和移除安全特性的数据元素。安全子层使用应用层的Secured Data Transmission(0x84)服务根据外部协议(请求和响应)发送和接受整个诊断消息或报文,这些报文(通信或者诊断)应在安全模式下交换。
安全子层位安全执行诊断服务提供服务“Secured Service Execution”给应用程序,“Secured Service Execution”服务的安全子层请求和指示根据如下格式指定:

Secured Service Execution服务的安全子层响应和确认根据如下格式指定:

安全子层访问
访问用于安全执行的安全子层的概念,与本文中描述的应用层接口类似。
1、客户端应用程序使用安全子层,Secured Service Excution服务请求以安全模式执行诊断服务,安全子层执行所需的动作用于建立与Server端(ECU)链接,添加特定的安全相关参数,如果需要,加密要在安全模式下执行的诊断服务的服务数据,并使用应用层Secured Data Transmission服务请求将安全数据传输到Server端。

2、Server端接受Server(ECU)安全子层处理的应用层Secured Service Excution服务指示。Server的安全子层检查安全特性参数解密加密数据,并通过安全子层Secured Service Excution服务指示将用以安全模式执行服务的数据呈现给应用程序。应用程序(Application)执行接受到的服务并使用安全子层Secured Service Excution服务响应以安全模式响应服务。Server端的安全子层添加特定的安全相关参数,根据需要加密响应报文数据,并使用应用层Secured Data Transmission服务响应将响应数据发送至Client端。
3、Client端接收应用层Secured Data Transmission服务确认的内容,该原报文由Client端的安全子层处理。Client端的安全子层检查安全特性参数,解密加密的响应数据并通过安全子层Secured Service Excution确认将数据呈现给应用程序。
如下图展示了安全模式下执行确认诊断服务安全子层、应用层和应用程序的交互。
该服务请求格式如下:

响应格式如下:

如上分享,希望有所帮助!
日进一步,功不唐捐!
愿你我相信时间的力量,
做一个长期主义者!
-----------------------------------
   作者简介 | 穿拖鞋的汉子
    汽车电子工程师
微信公众号:车载诊断技术
    来,每天进步一点点!



页: [1]
查看完整版本: 漫谈UDS协议之Service 84