1.概述
随着汽车功能的不断增多,被攻击的风险也逐步提高,例如在文章CAN(FD)渗透测试指南中提到的模糊攻击、重放攻击,这也使汽车信息安全越来越被重视,如何保证汽车的信息安全成为了迫切的需求,本文主要介绍UDS 0x29服务,通过此服务可降低被攻击的风险。0x29服务,即 Authentication(身份验证)服务,在ISO 14229-1-2020版本中为应对网联汽车日益增加的安全风险而新增服务。在0x29服务之前更多使用的是0x27服务,通常基于预共享密钥或算法(如种子-密钥机制),安全性较低,易受重放攻击。而0x29服务提供更强大的身份认证(如双向认证),支持加密通信和防篡改,支持现代加密算法(如AES、SHA、TLS),可防范中间人攻击、重放攻击等。与0x27服务相比,0x29服务应用场景更加广泛,例如车联网(V2X)安全通信、自动驾驶系统或高价值数据访问、满足WP.29等法规要求的网络安全合规。
2.相关背景介绍
- 对称加密:通信双方加密和解密使用相同的密钥。
- 非对称加密:通信双方各有一对密钥,分为公钥和私钥,公钥可以公开分享,用于加密数据或验证签名;私钥必须严格保密,用于解密数据或创建签名。
- PKI(公钥基础设施)是一套基于非对称加密的安全框架。
- X.509是PKI(公钥基础设施)的标准格式,一个X.509 证书通常包含以下关键信息:版本号、序列号、签名算法、颁发者、有效期、主体、公钥信息、CA签名等。
3.0x29服务介绍
0x29服务有两种模式:一种是基于非对称加密的 PKI 证书交换,简称APCE;另外一种是基于带有软件认证令牌的非对称加密或对称加密的不带PKI证书的请求-响应过程,简称ACR。两种模式如下图所示:

3.1 APCE认证过程
下图是APCE认证流程图,图中包含双向认证和单向认证两种方式。

3.1.1 双向认证过程
- 客户端创建Challenge,将Challenge和证书发送给服务器端;
- 服务器端验证客户端证书是否有效,若有效则创建Challenge,使用客户端发送的Challenge计算所有权证明(Proof Of Ownership Server),将Challenge、服务器端证书、Proof Of Ownership Server发送给客户端;
- 客户端验证服务器端证书和所有权证明(Proof Of Ownership Server)是否有效,若有效则客户端使用服务器端的Challenge计算所有权证明(Proof Of Ownership Client)并将其发送给服务器端。
- 服务器端验证所有权证明(Proof Of Ownership Client)是否有效。
3.1.2 单向认证过程
- 客户端将证书发送给服务器端。
- 服务器端验证客户端证书是否有效,若有效则服务器端创建Challenge,发送给客户端。
- 客户端使用服务器端的Challenge计算所有权证明(Proof Of Ownership Client)并发送给服务器端。
- 服务器端验证所有权证明(Proof Of Ownership Client)是否有效。
Challenge建议基于 ISO/IEC 9798-3 生成,必须具有高度的随机性和不可预测性,攻击者无法猜测或预测其值。
3.2 ACR认证过程
下图是ACR认证流程图,图中包含双向认证和单向认证两种方式。

3.2.1 双向认证过程
1.客户端向服务器端请求认证;
2.服务器端创建Challenge并发送到客户端;
3.客户端创建Challenge,并计算所有权证明(ProofOfOwnershipClient)发送到服务器端;
4.服务器端验证客户端的所有权证明(ProofOfOwnershipClient)是否有效。
3.2.2 单向认证过程
1.客户端向服务器端请求认证;
2.服务器端创建Challenge并发送到客户端;
3.客户端计算所有权证明(ProofOfOwnershipClient)发送到服务器端;
4.服务器端验证客户端的所有权证明(ProofOfOwnershipClient)是否有效。
以上是0x29服务的两种认证方式,目前APCE是行业里面的主流方式。
4.0x29在CANoe中的实现
接下来以CANoe18中的CANoe demo工程为例,介绍0x29在CANoe中的实现。
首先在SampleConfigurations中打开UDS Service 0x29工程,如下图所示:

在Simulation模块下打开SecurityConfiguration,加载的证书Demo UDS 0x29,如下图所示:

点击Open Security Manager 打开证书,如下图所示,可以看到证书Demo UDS 0x29的具体内容,包含证书名称、证书是否有效、签发者信息(包含国家代码、组织或公司名称、服务器名称)、证书序列号、签名算法、主体信息(包含国家代码、组织或公司名称、服务器名称)、证书版本、有效期开始时间、有效期结束时间、私钥由证书持有者严格保密。

Panel面板如下图所示,在Task to execute中选择认证方式:单向认证/双向认证。

APCE双向认证过程仿真报文如下图所示,从报文中可以看出客户端发送0x29 0x02,包含CommutificationConfig、CertificateClient(客户端证书)、ChallengeClient(客户端Challenge)三个参数,服务器端认证证书成功后发送肯定响应0x69 0x02,响应内容包含ChallengeServer(服务器端Challenge)、CerficateServer(服务器端证书)、ProofOfOwnershipServer(服务器端所有权证明)参数,客户端发送0x29 0x03,包含ProofOfOwnershipClient(客户端所有权证明),服务器端认证客户端所有权证明成功,发送肯定响应0x69 0x03。

APCE单向认证过程仿真报文如下图所示:从报文中可以看出客户端发送0x29 0x01,包含CommutificationConfig、CertificateClient(客户端证书)两个参数,服务器端认证证书成功后发送肯定响应0x69 0x01,响应内容包含ChallengeServer(服务器端Challenge),客户端发送0x29 0x03,包含ProofOfOwnershipClient(客户端所有权证明),服务器端认证客户端所有权证明成功,发送肯定响应0x69 0x03。

5.结语
通过上述介绍能够确认0x29服务可以实现双向认证,降低被攻击的风险,提高了车载网络安全性能,相信0x29服务日后会被广泛应用。东信创智在UDS诊断和Bootloader中可以实现0x29服务开发,帮助客户完成定制化开发,期待进一步沟通交流、共享合作的机会。
538

被折叠的 条评论
为什么被折叠?



