信息安全不得不了解UDS29安全认证服务

文摘   2025-01-10 07:33   上海  
引言

由于随着车载以太网的应用普及,任意一台互联网设备理论上都可以通过DoIP访问车辆的诊断功,进行数据获取或执行诊断操作,这在为OTA,远程诊断等功能带来益处的同时也给车辆带来更多的潜在风险,对意图使用诊断功能的设备的认证至关重要,原有的0x27服务(见<<UDS(上)之概念和部分服务解读>>)机制简单,不适用于多客户端,防护等级低,很难起到保护作用,因此引入了0x29服务。

对比项

0x27(hex)

0x29(hex)

认证方式

安全访问等级(135…

用户角色(供应商、研发、售后、工厂等)

加密方式

对称加密(<<再谈E2E之信息安全与E2E>>)


基于PKI 证书(Autosar DCM模块仅支持PKI)(或基于challenge-response自定义)

保护范围

仅保护关键服务(例如,写入、IO控制、软件升级等)

可以保护几乎所有的服务(除了会话切换、读取、OBD…

算法

CRC

信息安全标准定义的安全算法ISO/IEC 9798 HMAC or CMAC or GMAC

AUTOSAR

仅有1个安全访问等级状态机,不区分诊断仪和哪种ECU通信(DoCANDoIP

每个物理层连接都有1个认证状态机,例如CAN 诊断仪可能是‘fully antenticated’,而一个DoIP通信的的诊断仪可以是’completely unauthenticated”

0x29服务在安全诊断方面更是可以做到:
  • 限制对诊断功能或数据的访问 (ECU内触发)

  • 限制可能被访问的ECU (使用诊断ECU交互);

  • 限制用例 (例如读取数据,重新编程)

     

在使用过程中Dcm会通过位于运算(不同角色的位与服务中的位进行运算,如果结果是0,那么就需要进行认证)来判断是否需要认证。上图示例中0x5678的例程控制只能被production的角色执行,而0x28和0x11 01服务可以被所有角色来执行。

0x28的子功能如下表所示。

SID

Name

Description

00

deAuthenticate

主动结束认证状态(Request to leave the authenticated state)

无其他请求参数

01

verifyCertificateUnidirectional

启动单向身份认证过程(Initiate Authentication by verifying the Certificate)
请求包含:
通信配置-对通过认证以后的安全诊断通信如何进行的配置说明,与安全诊断通信直接联系,该参数的格式以及后续密钥(session key)的生成和proof value的计算均由OEM定义
证书长度
证书内容
- challenge长度
- challenge内容(仅在challenge长度不为0时有效)

02

verifyCertificateBidirectional

启动双向身份认证过程(Initiate Authentication by verifying the Certificate and generating a Proof of Ownership from the server)
参数同上

03

proofOfOwnership

验证来自客户段的所有权证明(Verify the Proof of Ownership from the client)
请求包含:
长度
所有权证明
临时公钥长度
临时公钥(ephemeral Public Key

04

transmitCertificate

Verify Certificate and extract information from Certificate to handle it according to its contents.
请求包含:
证书ID:certificateEvaluationId,用于识别证书的评估类型,由OEM自定义
证书长度
证书数据

05

requestChallengeForAuthentication

Initiate the Authentication process by requesting server to output a challenge.
请求包含:
通信配置
算法标识符

06

verifyProofOfOwnershipUnidirectional

Request server to verify the POWN for unidirectional authentication.
请求包含:
算法标识符 指示用于验证所有权证明的算法,也决定了算法需要用到的参数及加密诊断通信的密钥生成方法,该值是左对齐的 并以0为单位向右填充,最多16个字节。
所有权证明的长度
所有权证明
- client challenge长度
- client challenge - 格式由OEM自定义或是随机数
附加参数长度
附加参数

07

verifyProofOfOwnershipBidirectional

Request server to verify the client side POWN and provide server-side POWN for bidirectional authentication.
参数同上

08

authenticationConfiguration

Indicates the provided authentication configuration of the server.
无请求参数

1 PKI介绍

PKI(Public Key Infrastructure,公钥基础设施)‌是一种基于公钥密码学的技术和规范,旨在为网络通信提供安全服务。PKI通过数字证书管理公钥,确保通信双方的身份验证和数据的保密性、完整性和不可否认性。

PKI主要由以下几个部分组成:‌数字证书颁发机构(CA)‌(负责证书的发放、更新、撤销和验证,确保证书的可信度‌)、注册机构(RA)‌(负责用户信息的注册和身份验证,确保公开密钥和个人身份的链接)、‌数字证书库‌(存储和管理数字证书)‌、密钥管理‌(包括密钥的生成、存储、更新和撤销等‌)和安全策略‌(定义组织的信息安全指导方针和处理密钥的方法)。PKI 证书的组成部分如下所示:

1)版本信息

表明证书遵循的 X.509 标准的版本。不同版本在格式和功能上可能会有所差异,例如,X.509v3 版本在扩展字段等方面比 v1 和 v2 版本有更多的功能。

2)证书序列号

由 CA 分配的唯一标识符,用于区分不同的证书。就像身份证号码一样,每个证书都有自己独一无二的序列号,方便 CA 对证书进行管理和查询。

3)签名算法标识符

用于指定 CA 对证书进行数字签名所使用的算法,如 RSA - SHA256 等。这确保了证书内容的完整性和真实性,因为只有拥有 CA 私钥的一方才能按照这个算法生成正确的签名。

4)颁发者信息

即 CA 的信息,包括 CA 的名称、组织单位、所在国家等。这就像是证书的 “发证机关” 信息,用户可以通过这些信息来验证 CA 的合法性。

5)有效期

规定了证书从何时开始生效,到何时结束有效。例如,一个证书的有效期可能是从 2024 年 1 月 1 日到 2025 年 1 月 1 日。一旦证书过期,通常就不能再用于身份认证等安全操作。

6)主体信息

这是证书所属实体的信息,包括姓名、组织、电子邮件地址等。对于服务器证书,主体信息可能是服务器的域名。

7)主体公钥信息

包含了证书所属实体的公钥,这个公钥用于加密数据或者验证数字签名等操作。例如,在 SSL/TLS 加密通信中,服务器的证书中的公钥会被客户端用于加密会话密钥。

8)颁发者唯一标识符(可选)

用于在多个颁发者具有相同名称的情况下,区分不同的颁发者。不过在实际应用中,这个字段不是很常用。

9)主体唯一标识符(可选)

用于在多个主体具有相同名称的情况下,区分不同的主体。‌

PKI数字证书认证的核心在于公钥和私钥的配对使用。数字证书则是由第三方可信机构(如认证中心CA)颁发的,它包含了用户的公钥信息以及用户的身份信息,并经过该机构的数字签名,从而确保了公钥的真实性和有效性。

PKI数字证书认证的安全性主要体现在以下几个方面:首先,数字证书由第三方可信机构颁发,确保了公钥的真实性和有效性;其次,数字证书采用了先进的加密算法和数字签名技术,确保了信息的机密性、完整性和不可抵赖性;最后,PKI体系建立了完善的证书管理机制,包括证书的颁发、更新、吊销等,确保了证书的有效性和安全性。

2 0x29服务认证流程

  • APCE: 

    采用非对称加密的基于PKI证书交换程序的认证.

  • ACR: 采用对称或非对称加密的基于挑战确认(Challenge-Response)流程的认证。

下面以左侧Autosar DCM支持的PKI证书交换认证为例,介绍下其单向认证流程,双向认证流程与之类似,只是客户端对ECU的认证方向相反(蓝色钥匙是公钥,绿色钥匙是私钥)。

1)诊断仪询问ECU支持的认证方式;

2) ECU回复支持的认证方式;

3)诊断仪发送其证书(包含诊断仪公钥和CA的签名)给ECU;

4) ECU用CA的公钥验证证书的签名,验证其证书有效性, 此时ECU需要确认该证书不是诊断仪从别处盗取的,需要诊断仪验证其对证书的所有权;

5) ECU向诊断仪发送一个Challenge;

6) 诊断仪基于收到的Challenge使用证书的私钥对其签名生成Proof of Ownership发给ECU;

7)ECU使用证书的公钥对签名进行验签,对比Challenge的值,相同则验签成功,诊断仪认证成功。

谦益行
分享汽车研发日常,助力你我共同成长。
 最新文章