由于随着车载以太网的应用普及,任意一台互联网设备理论上都可以通过DoIP访问车辆的诊断功,进行数据获取或执行诊断操作,这在为OTA,远程诊断等功能带来益处的同时也给车辆带来更多的潜在风险,对意图使用诊断功能的设备的认证至关重要,原有的0x27服务(见<<UDS(上)之概念和部分服务解读>>)机制简单,不适用于多客户端,防护等级低,很难起到保护作用,因此引入了0x29服务。
对比项 | 0x27(hex) | 0x29(hex) |
认证方式 | 安全访问等级(1、3、5…) | 用户角色(供应商、研发、售后、工厂等) |
加密方式 | 对称加密(见<<再谈E2E之信息安全与E2E>>) | 基于PKI 证书(Autosar DCM模块仅支持PKI)(或基于challenge-response自定义) |
保护范围 | 仅保护关键服务(例如,写入、IO控制、软件升级等) | 可以保护几乎所有的服务(除了会话切换、读取、OBD…) |
算法 | CRC | 信息安全标准定义的安全算法ISO/IEC 9798 HMAC or CMAC or GMAC |
AUTOSAR | 仅有1个安全访问等级状态机,不区分诊断仪和哪种ECU通信(DoCAN或DoIP) | 每个物理层连接都有1个认证状态机,例如CAN 诊断仪可能是‘fully antenticated’,而一个DoIP通信的的诊断仪可以是’completely unauthenticated” |
限制对诊断功能或数据的访问 (在ECU内触发);
限制可能被访问的ECU (使用诊断ECU交互);
限制用例 (例如读取数据,重新编程)。
在使用过程中Dcm会通过位于运算(不同角色的位与服务中的位进行运算,如果结果是0,那么就需要进行认证)来判断是否需要认证。上图示例中0x5678的例程控制只能被production的角色执行,而0x28和0x11 01服务可以被所有角色来执行。
SID | Name | Description |
00 | deAuthenticate | 主动结束认证状态(Request to leave the authenticated state) 无其他请求参数 |
01 | verifyCertificateUnidirectional | 启动单向身份认证过程(Initiate Authentication by verifying the Certificate) |
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) |
04 | transmitCertificate | Verify Certificate and extract information from Certificate to handle it according to its contents. |
05 | requestChallengeForAuthentication | Initiate the Authentication process by requesting server to output a challenge. |
06 | verifyProofOfOwnershipUnidirectional | Request server to verify the POWN for unidirectional authentication. |
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通过数字证书管理公钥,确保通信双方的身份验证和数据的保密性、完整性和不可否认性。
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)主体唯一标识符(可选)
用于在多个主体具有相同名称的情况下,区分不同的主体。
APCE:
采用非对称加密的基于PKI证书交换程序的认证.ACR: 采用对称或非对称加密的基于挑战确认(Challenge-Response)流程的认证。