UDS 29 认证服务

news2024/11/25 19:31:30

UDS协议定义了一套标准的诊断服务,包括会话控制、诊断请求、诊断响应和ECU编程等功能。通过UDS协议,诊断工具可以向ECU发送特定的请求,获取ECU的状态信息和故障码,诊断和解决故障问题。UDS是ISO 14229标准定义的一种通信协议,可以在CAN、LIN等多种总线上进行通信。

本文针对SO 14229-1 2020的29安全认证进行介绍。

 一.背景知识

在了解29服务之前需要了解几个标准中提到的信息安全概念:

  • 对称加密:通信双方加密和解密使用相同的密钥
  • 非对称加密:通信双方各有一对密钥,分为公钥和私钥,信息的加密使用公钥,解密使用私钥,公钥双方共享,私钥只有自己知道,以此避免消息泄露
  • PKI 是Public Key Infrastructure的首字母缩写,翻译过来就是公钥基础设施;PKI是一种遵循标准的利用公钥加密技术为电子商务的开展提供一套安全基础平台的技术和规范。PKI技术是一种遵循既定标准的密钥管理平台,它的基础是加密技术,核心是证书服务,支持集中自动的密钥管理和密钥分配,能够为所有的网络应用提供加密和数字签名等密码服务及所需要的密钥和证书管理体系。通俗理解:PKI就是利用公开密钥理论和技术建立提供安全服务的、具有通用性的基础设施,是创建、颁发、管理、注销公钥证书所涉及的所有软件、硬件集合体,PKI可以用来建立不同实体间的"信任"关系,它是目前网络安全建设的基础与核心。PKI的主要任务是在开放环境中为开放性业务提供基于非对称密钥密码技术的一系列安全服务,包括身份证书和密钥管理、机密性、完整性、身份认证和数字签名等。因此,用户可利用PKI平台提供的服务进行电子商务和电子政务应用。 PKI详解 - 运维-小松松 - 博客园 (cnblogs.com)
  • X.509 是密码学里公钥证书的格式标准。X.509证书里含有公钥、身份信息(比如网络主机名,组织的名称或个体名称等)和签名信息(可以是证书签发机构CA的签名,也可以是自签名)。对于一份经由可信的证书签发机构签名或者可以通过其它方式验证的证书,证书的拥有者就可以用证书及相应的私钥来创建安全的通信,对文档进行数字签名
  • 证书的组成结构(参考):
    • 证书
      • ...
      • 公钥算法
      • 主体公钥 [1]
      • 此日期前无效
      • 此日期后无效
      • 版本号
      • 序列号
      • 签名算法
      • 颁发者
      • 证书有效期
      • 主体
      • 主体公钥信息
      • 颁发者唯一身份信息(可选项)
      • 主体唯一身份信息(可选项)
      • 扩展信息(可选项)
    • 证书签名算法
    • 数字签名
  • Diffie-Hellman密钥协商算法 一个用于解决秘钥配送问题的算法,本身并非用来加密,在标准中用于为ECU之间的加密通信传输密钥 Diffie-Hellman密钥协商算法 - Rookie丶flying - 博客园 (cnblogs.com)
  • 挑战确认(Challenge-Response)认证流程:1) 客户端向服务器发出认证请求;
    2) 认证服务器判定用户是否合法,若不是,则不做进一步的处理;
    3) 认证服务器内部产生一个随机数,作为Challenge,发送给用户;
    4) 客户将口令和随机数合并,使用单向哈希函数 ( 例如MD5算法 ) 生成一个字节串作为Response;
    5) 认证服务器将Response与自己的计算结果比较,如两者相同,则通过一次认证,反之认证失败;
    6) 认证服务器通知客户端认证成功或失败。

 二.服务概述

此服务的目的是为客户提供一种证明其身份的方法,允许其访问数据和/或诊断服务,这些数据和/或诊断服务由于安全、排放或安全等原因而受到限制。 用于将例程或数据下载/上传到服务器以及从服务器读取特定内存位置的诊断服务可能需要身份验证。 不正确的程序或下载到服务器的数据可能会潜在地损害电子设备或其他车辆部件,或危及车辆的排放、安全或安全标准的遵守。 另一方面,当从服务器检索数据时,可能会违反数据安全性。
该服务支持两个安全概念:
概念 1 :基于使用非对称密码的 PKI 证书交换过程。
概念 2 :基于不带 PKI 证书的挑战 – 应答过程,使用带有软件身份验证令牌或对称密码的非对称加密算法

三.基于PKI 证书交换的认证Authentication with PKI Certificate Exchange (APCE)

子功能定义:
•“ deAuthenticate ”,此子功能参数有效地结束认证状态。
•“ VerfyCertificateUnidirectional ”,此子功能参数启动单向身份验证过程,仅针对 ECU 对测试仪进行单向身份验证。
• “verifyCertificateBidirectional”, 这个SubFunction参数启动双向身份验证过程,客户端对服务器进行身份验证,服务器对客户端进行身份验证。
•“ proofOfOwnership ”,此子功能参数用于将所有权证明数据传输到测试仪。
•“ TransmitCertificate ”,此子功能参数独立或在先前的身份验证之后传输证书
 

认证准备:

双方拥有对应的私钥和证书:

——在单向身份验证的情况下,客户端需要一个带有其私钥的证书,这允许客户端将自己标识为合法的客户端。根据PKI的信任模型,服务器可能需要由颁发和签署客户端证书的颁发机构(CA) 颁发和签署的证书。
—— 双向认证时,客户端需要一个带有私钥的证书,以证明客户端是合法的。此外,服务器还需要一个带有私钥的证书,这允许服务器将自己标识为合法。根据公PKI的信任模型,客户端和服务器可能需要证书颁发机构(CA)颁发的证书,CA颁发并签署了客户端证书和服务器证书。

上图既包含单向认证(对client的认证)也包含双向认证的过程,除此以外还包含认证成功后的安全诊断通信(secure diagnostic communication)所需的密钥传递过程。

单向认证

1、client发送证书至server,证书中包含client的公钥

2、server收到证书后确认证书的有效性(使用PKI提供的证书有效性检查功能),验证client是否合法,若不合法则停止认证流程,返回否定响应,合法则继续认证流程

3、server发送针对证书的challenge消息,请求client对所发证书的所有权证明(proof of ownership),消息中包含认证所需随机数

4、client接收到challenge后使用私钥对接收到的随机数进行计算得到签名,放入响应消息中发给server

5、server使用client的公钥解密并验证应答消息中的签名信息,与challenge消息比较,向client回复认证结果

双向认证

1、双向认证请求:证书(含客户端公钥) + challenge1(对ECU的challenge)

2、ECU验证证书有效性后 创建对客户端的challenge2 通过challenge1和私钥计算出所有权证明 公钥 服务器证书

响应为:challenge2 + 服务器证书和证书所有权证明 + 服务器公钥

3、客户端验证根据所得临时公钥验证服务器证书和其证书所有权证明是否有效 有效之后根据challenge2和客户端私钥计算客户端证书所有权证明

请求为 :客户端证书所有权证明

4、服务器验证客户端证书所有权证明,返回响应
 

四、基于ACR认证


ACR认证流程与APCE相似,且相对更简单,其中计算所有权证明的方法如下:

1、对于非对称加密来说与APCE流程类似,需要建立包含challenge数据,令牌授权,认证,以及可选的附加信息等令牌内容,并使用私钥计算得到令牌内容签名,生成的认证令牌包含令牌内容及签名。接收方使用公钥解密并使用相同方法计算令牌内容,验证计算结果是否一致,从而完成对认证结果的判断。令牌的生成推荐基于ISO/IEC 9798-2 或 ISO/IEC 9798-4 (mutual, three pass authentication),或与之相当的认证令牌。

2、对于对称加密来说,需要基于先前共享的对称密钥来计算签名信息,对方也根据相同的密钥进行解密,计算及比对完成验证。令牌的生成推荐基于ISO/IEC 9798-2 或 ISO/IEC 9798-4 (mutual, three pass authentication),或与之相当的认证令牌。

使用ACR方式时,前一次认证中激活的诊断访问权限可以由新的ACR认证流程代替

五、认证服务支持的子功能

SIDNameDescription
00deAuthenticateRequest to leave the authenticated state无其他请求参数
01verifyCertificateUnidirectionalInitiate Authentication by verifying the Certificate
请求包含:
- 通信配置-对通过认证以后的安全诊断通信如何进行的配置说明,与安全诊断通信直接联系,该参数的格式以及后续密钥(session key)的生成和proof value的计算均由OEM定义
- 证书长度
- 证书内容
- challenge长度
- challenge内容(仅在challenge长度不为0时有效)
02verifyCertificateBidirectionalInitiate Authentication by verifying the Certificate and generating a Proof of Ownership from the server
参数同上
03proofOfOwnershipVerify the Proof of Ownership from the client.
请求包含:
- 长度
- 所有权证明
- 临时公钥长度
- 临时公钥(ephemeral Public Key)
04transmitCertificateVerify Certificate and extract information from Certificate to handle it according to its contents.
请求包含:
- 证书ID:certificateEvaluationId,用于识别证书的评估类型,由OEM自定义
- 证书长度
- 证书数据
05requestChallengeForAuthenticationInitiate the Authentication process by requesting server to output a challenge.
请求包含:
- 通信配置
- 算法标识符
06verifyProofOfOwnershipUnidirectionalRequest server to verify the POWN for unidirectional authentication.
请求包含:
- 算法标识符 - 指示用于验证所有权证明的算法,也决定了算法需要用到的参数及加密诊断通信的密钥生成方法,该值是左对齐的 并以0为单位向右填充,最多16个字节。
- 所有权证明的长度
- 所有权证明
- client challenge长度
- client challenge - 格式由OEM自定义或是随机数
- 附加参数长度
- 附加参数
07verifyProofOfOwnershipBidirectionalRequest server to verify the client side POWN and provide server-side POWN for bidirectional authentication.
参数同上
08authenticationConfigurationIndicates the provided authentication configuration of the server.
无请求参数

六、报文格式

报文详情参考ISO 14229-1 2020

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/959480.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python错误:AttributeError: module ‘pydot‘ has no attribute ‘find_graphviz‘

1.安装pydot-ng 由于pydot里面已经没有这个find_graphviz()方法了,选择安装pydot-ng activate python虚拟环境 pip install pydot-ng2安装graphviz 到graphviz官网上下载exe并点击安装,勾选添加到全局变量。 或者记住安装位置选择手动添加到path变…

Javascript动态添加表格行

1.Javascript如何动态添加表格行 图一 图二 1.首先要找到添加按钮代码&#xff0c;设置id选择器 <button type"button" id"insertRow" class"btn btn-danger" style"background-color: #ca6307;border: none">新增一项&l…

【VTK】 vtkMapper

很高兴在雪易的CSDN遇见你 ,给你糖糖 欢迎大家加入雪易社区-CSDN社区云 前言 本文主要分享VTK中关于vtkMapper的相关知识和使用方法,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力(^U^)ノ~YO </

工时管理:如何创建和管理工时表

工时管理是人力资源和业务管理的重要组成部分&#xff0c;对于项目管理也是不可或缺的。无论是哪种类型的工作&#xff0c;如果有团队或员工&#xff0c;那么你就需要工时表来跟踪时间和费用。 什么是工时表&#xff1f; 工时表是一种物理或电子文档&#xff0c;雇主用它来跟…

OCR多语言识别模型构建资料收集

OCR多语言识别模型构建 构建多语言识别模型方案 合合&#xff0c;百度&#xff0c;腾讯&#xff0c;阿里这四家的不错 调研多家&#xff0c;发现有两种方案&#xff0c;但是大多数厂商都是将多语言放在一个字典里&#xff0c;构建1w~2W的字典&#xff0c;训练一个可识别多种语…

【监控平台 - zabbix】

目录 一、环境搭建 1. zabbix程序结构 2. zabbix-agent支持的协议 3. zabbix监控环境搭建 3.1 安装方式 3.2 配置zabbix官方yum源 3.3 安装服务端与客户端 3.4 安装zabbix-web 3.4.1 cd /etc/yum.repos.d/ 3.4.2 安装依赖源 3.4.3 安装本部件 3.4.4 安装存储数据库…

时序预测 | Matlab实现CNN-XGBoost卷积神经网络结合极限梯度提升树时间序列预测

时序预测 | Matlab实现CNN-XGBoost卷积神经网络结合极限梯度提升树时间序列预测 目录 时序预测 | Matlab实现CNN-XGBoost卷积神经网络结合极限梯度提升树时间序列预测效果一览基本描述程序设计参考资料 效果一览 基本描述 时序预测 | Matlab实现CNN-XGBoost卷积神经网络结合极限…

Effective STL 1.仔细选择你的容器

Effective STL 1.仔细选择你的容器 文章目录 Effective STL 1.仔细选择你的容器迭代器容器分类连续内存容器和基于节点的容器的区别 如何选择容器结语>>>>> 欢迎关注公众号【三戒纪元】 <<<<< 标准序列容器 vector、string、deque 和 list 标准…

【技巧】如何在Excel表格中添加水印?

想要在Excel表格中添加水印展示&#xff0c;但是Excel并没有像word文档一样的直接添加水印的功能&#xff0c;怎么办&#xff1f; 今天小编来分享一个方法&#xff0c;也能实现Excel表格的添加水印~ 1、 打开Excel表格&#xff0c;依次点击菜单栏的“插入” → “文本框” →…

小件固定资产怎么管理好

对于小件固定资产的管理&#xff0c;可以考虑以下几个方面&#xff1a;  建立资产档案&#xff1a;对所有小件固定资产进行登记、编号、分类、评估等工作&#xff0c;建立详细的资产档案。  定期盘点&#xff1a;定期对小件固定资产进行盘点&#xff0c;确保资产账面与实际…

【2022】贝壳找房秋招C++工程师笔试卷1 牛妹的字符串

牛妹的字符串 牛妹拿到了一个只由小写字母组成的字符串s&#xff0c;接下来将字符串执行k次操作&#xff0c;每次操作都会把s中ASCII码最小的字母从s中删除&#xff0c;请返回k次操作之后的字符串s。 参考优秀的网友1&#xff1a;26个小写字母 放在数组里正好由大到小排序。 …

聚合多个电商API接口平台

API接口测试&#xff08;点击免费测试&#xff09; 随着数字化商业时代的到来&#xff0c;API接口已成为电商资源连接利器&#xff0c;也是全球传统互联网企业转型的基础。 2021年 Google Cloud 研究显示&#xff0c;全球互联网企业近3/4的企业持续投入数字化转型&#xff0c…

SpingBoot 过滤器和拦截器有什么区别?

1. 运行顺序不同&#xff08;如图&#xff09;&#xff1a; 过滤器是在 Servlet 容器接收到请求之后&#xff0c;但在 Servlet 被调用之前运行的&#xff1b;而拦截器则是在 Servlet 被调用之后&#xff0c;但在响应被发送到客户 端之前运行的。 2. 配置方式不同&#xff1a; …

划分字母区间【贪心算法】

划分字母区间 给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段&#xff0c;同一字母最多出现在一个片段中。 注意&#xff0c;划分结果需要满足&#xff1a;将所有划分结果按顺序连接&#xff0c;得到的字符串仍然是 s 。返回一个表示每个字符串片段的长度的列表。…

跨数据中心Multi-Fabric解决方案:L2和L3网络的高效连接和扩展

云数据中心里&#xff0c;为什么需要DCI互通&#xff1f; 云化数据中心&#xff0c;网络资源通过虚拟化技术形成资源池&#xff0c;实现业务与物理网络解耦&#xff0c;通过网络虚拟化&#xff0c;物理网络资源可以被分成多个虚拟网络资源&#xff0c;从而提高网络资源的使用效…

轻松教你实现多设备使用WhatsApp!

小S之前发过几篇关于WhatsApp的使用技巧还有注意事项的文章&#xff0c;发现大家对WhatsApp这个软件还是非常关注的。那么小S今天就再跟大家说一下WhatsApp。 WhatsApp去年更新推出了多设备使用的功能&#xff0c;通过跟主要手机关联&#xff0c;可以在网页、桌面设备、Androi…

代码随想录算法训练营第38天 | ● 理论基础 ● 509. 斐波那契数 ● 70. 爬楼梯 ● 746. 使用最小花费爬楼梯

文章目录 前言一、理论基础二、509. 斐波那契数三、70. 爬楼梯四、746. 使用最小花费爬楼梯总结 前言 动态规划 一、理论基础 1.基础 2.背包问题 3.打家劫舍 4.股票问题 5.子序列问题 动态规划&#xff0c;英文&#xff1a;Dynamic Programming&#xff0c;简称DP&#xff0c;…

Java使用pdfbox将pdf转图片

前言 目前比较主流的两种转pdf的方式&#xff0c;就是pdfbox和icepdf&#xff0c;两种我都尝试了下&#xff0c;icepdf解析出来有时候会出现中文显示不出来&#xff0c;网上的解决方式又特别麻烦&#xff0c;不是安装字体&#xff0c;就是重写底层类&#xff0c;所以我选择了p…

Segment Routing原理

以上内容均属原创&#xff0c;如有不详或错误&#xff0c;敬请指出。本文作者&#xff1a; 坏坏 本文链接&#xff1a; http://t.csdn.cn/2fUE5 版权声明&#xff1a; 本博客所有文章除特别声明外&#xff0c;如需转载&#xff0c;请联系作者注明出处并附带本文链接&#xf…

软件开发常说的CI/CD是什么

本文翻译自国外论坛 medium&#xff0c;原文地址&#xff1a;本文翻译自国外论坛 medium&#xff0c;原文地址&#xff1a;https://medium.com/gitconnected/basics-of-ci-cd-a98340c60b04 任何软件项目的主要目标都是通过业务流程快速更新迭代来赚钱。我们越快向客户发布新版…