UDS 29 认证服务

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

QT可执行程序打包成安装程序

目录 1.将QT程序先放到一个文件中 2.下载QtInstallerFramework-win-x86.exe 3.将setup.exe单独拷贝出来,进行安装测试 4.测试安装后的程序是否可执行 1.将QT程序先放到一个文件中 (1)QT切换到release模式,编译后在构建目录生…

JWT 技术的使用

应用场景:访问某些页面,需要用户进行登录,那我们如何知道用户有没有登录呢,这时我们就可以使用jwt技术。用户输入的账号和密码正确的情况下,后端根据用户的唯一id生成一个独一无二的token,并返回给前端&…

初阶数据结构(五) 栈的介绍与实现

💓博主csdn个人主页:小小unicorn💓 ⏩专栏分类:C 🚚代码仓库:小小unicorn的学习足迹🚚 🌹🌹🌹关注我带你学习编程知识 栈 栈的介绍栈的概念栈的结构 栈的实现…

正中优配:红筹股是啥意思?

随着我国经济的高速开展,越来越多的人开始参加到股票出资中。其中,红筹股作为一种特别类型的股票,备受一些出资者的关注,但对于一般出资者来说,红筹股详细含义还不是特别清楚。本文将从多个角度探讨红筹股的含义、特征…

匿名函数( lambda 表达式)

在 C 中,匿名函数也被称为 lambda 表达式。C11 引入了 lambda 表达式,使得在需要函数对象(函数符)的地方可以使用匿名函数来代替。 lambda 表达式的基本语法如下: [capture list] (parameter list) -> return typ…

解决crosstalk的方法及原理分析

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 crosstalk是干扰线与受绕线之间由于信号跳变产生的耦合电容引起的。 解决crosstalk的方法从两方面入手,一方面降低耦合电容,一方面降低timing window的overlap。 静态时序分析: 串扰延迟分析 以…

Unity编辑器扩展 | 编辑器扩展基础入门

前言 Unity编辑器扩展 | 编辑器扩展基础一、基本概念二、核心知识点 简述三、相关API 总结 前言 当谈到游戏开发工具,Unity编辑器是一个备受赞誉的平台。它为开发者提供了一个强大且灵活的环境,使他们能够创建令人惊叹的游戏和交互式体验。然而&#xf…

国标视频融合云平台EasyCVR视频汇聚平台的应用场景及其功能说明

一、平台简介 EasyCVR国标视频融合云平台是一款基于端-边-云一体化架构的视频融合AI智能分析网关平台。EasyCVR平台支持视频汇聚、融合管理,兼容多类型设备、多协议接入。其提供的视频功能包括:视频监控、无插件直播录像、云存储、检索回放、智能告警、…

java基于微信小程序的讲座预约系统的研究与实现

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 文章目录 1 简介2 技术栈第三章 系统分析3.1初步需求分析 3.2 系统用例分析3.2.1 公告管理用例分析3.2.2 系…

Docker consul 容器服务自动发现和更新

目录 一、什么是服务注册与发现 二、Docker-consul集群 1.Docker-consul consul提供的一些关键特性 2.registrator 3.Consul-template 三、Docker-consul实现过程 以配置nginx负载均衡为例 先配置consul-agent ,有两种模式server和client 四、Docker-cons…

uniapp启动微信小程序开发者工具报错Enable IDE Service (y/N) 

下载安装好微信小程序开发者路径 配置好启动路径后 报错[微信小程序开发者工具] ? Enable IDE Service (y/N) [27D[27C 解决办法 因为微信开发者工具的服务端口号没有打开

【git进阶】 .ignore 忽略有道 忽略核查gitcheck-ignore -v

git .ignore配置 .ignore使用场景新项目中.gitignore用法1 初始化生成.git文件夹2 git status 查看当前文件夹状态3 创建.ignore文件 忽略不想上传的文件4 编辑.gitignore文件 git status查看是否生效 .gitignore进阶用法模式匹配模式匹配例题练习1 忽略所有的内容2 忽略所有目…

iOS - 资源按需加载 - ODR

一、瘦身技术大图 二、On-Demand Resources 简介 将其保存管理在苹果的服务器,按需使用资源、优化包体积,实现更小的应用程序。ODR 的好处: 应用体积更小,下载更快,提升初次启动速度资源会在后台下载操作系统将会在磁…

2023新版医保目录明细(药品查询)

查询医保目录的主要目的是为了了解医保政策对于特定医疗服务、药品和医疗器械的覆盖范围和支付标准。大众可以通过查看医保目录可以确定哪些药品可以被医保支付以及报销的比例和限额;医药从业者可通过查看医保目录可以即使了解医保政策的变化,便于做出相…

Matlab之统计一维数组直方图 bin 计数函数histcounts

一、语法 [N,edges] histcounts(X) [N,edges] histcounts(X,nbins) [N,edges] histcounts(X,edges) 解释: 1.1 [N,edges] histcounts(X) 将 X 的值划分为多个 bin,并返回每个 bin 中的计数以及 bin 边界。histcounts 函数使用自动分 bin 算法&am…

SIEM(安全信息和事件管理)解决方案

什么是SIEM 安全信息和事件管理(SIEM)是一种可帮助组织在安全威胁危害到业务运营之前检测、分析和响应安全威胁的解决方案,将安全信息管理 (SIM) 和安全事件管理 (SEM) 结合到一个安全管理系统中。SIEM 技术从广泛来源收集事件日志数据&…

W5500-EVB-PICO主动PING主机IP检测连通性(十)

前言 上一章我们用W5500_EVB_PICO 开发板做UDP组播数据回环测试,那么本章我们进行W5500_EVB_PICO Ping的测试。 什么是PING? Ping (Packet Internet Groper)是一种因特网包探索器,用于测试网络连接量的程序 。Ping是…

Matlab图像处理-灰度插值法

最近邻法 最近邻法是一种最简单的插值算法,输出像素的值为输入图像中与其最邻近的采样点的像素值。是将(u0,v0)(u_0,v_0)点最近的整数坐标u,v(u,v)点的灰度值取为(u0,v0)(u_0,v_0)点的灰度值。 在(u0,v0)(u_0,v_0)点各相邻像素间灰度变化较小时,这种方…

Compose学习 - 环境配置及compose、kotlin插件、gradle、AndroidStudio版本对应关系

最近学习Compose,一开始学习的Compose版本是1.1.1,学习的过程中发现, LazyHorizontalGrid这个方法只有在1.2.0以后版本才支持。 想着既然要升级,直接用最新的好了。后面按照官网建议,下载了最新的AndroidStudio&#…

CDL基础原理

一、CDL简介 CDL(全称Change Data Loader)是一个基于Kafka Connect框架的实时数据集成服务。 CDL服务能够从各种OLTP数据库中捕获数据库的Data Change事件,并推送到kafka,再由sink connector推送到大数据生态系统中。 CDL目前支…