安全访问(ISO14229系列之27服务)

安全访问(ISO14229系列之27服务)

1、27服务概述

        27服务通过采用种子与密钥的方式为ECU提供了一种保护机制;通过sub-function划分出不同的安全等级,诊断仪发送请求进入某个安全等级时,通过种子与密钥的方式进行安全访问,当通过安全访问时,则切换到对应的权限状态。便于进行权限的管理划分。其相关的操作流程如下图:
在这里插入图片描述
        如上图,假设诊断仪是请求进入01安全等级;即Tester发送27 01请求种子,ECU接收请求后生成随机种子发送给到Tester;并且将刚刚生成的种子按照安全算法计算出Key。Tester这边收到种子后,也按照安全算法计算出Key,此时再通过27 02服务将计算好的Key发送到ECU,ECU这边将收到发送过来的Key和自己计算的Key进行比对,若结果一致,则切换到对应请求的权限状态。可以总结为如下过程:

  • 诊断仪请求种子
  • ECU发送种子,并根据安全算法计算密钥
  • 诊断仪根据接收到的种子也进行密钥计算,并进行发送
  • ECU接收到密钥,与自身计算的密钥进行比较
  • ECU根据比较结果决定自身是否解锁,并返回响应(肯定/否定响应)信息

2、请求种子

        以请求进入01安全等级为例(请求Seed的"Sub-function"不一定要是01,也可以是03、05,或者07-7D之间的任意奇数值,代表不同的安全等级。这里只是以01为例),则此时请求种子的格式如下
在这里插入图片描述

        ECU收到请求后,应当生成随机的种子,并通过响应报文返回种子。响应报文格式如下:
在这里插入图片描述
        

3、发送密钥

        我们依旧以请求进入01安全等级为例,在接收到前面一小节生成的种子后,诊断仪将根据车产定义的安全算法进行密钥的计算。并进行密钥的发送。此时密钥的发送格式如下
在这里插入图片描述

        ECU收到密钥后,会将接收到的密钥与自身计算的密钥进行比对;若结果一致,则切换到对应请求的权限等级,并返回肯定响应。响应报文格式如下:
在这里插入图片描述

        
        Ps:在请求种子、发送密钥的介绍中,我们只是以请求进入01这个安全等级(sub-function)为例来进行介绍的。但要注意请求种子的"Sub-function"不一定要是01,也可以是03、05,或者07-7D之间的任意奇数值,通过该参数划分不同的安全等级。同样,发送密钥时的第二个字节值不一定就是02(01+1),可以是04、06,或者08-7E间的任意偶数值;不过注意要是之前请求Seed的"Sub-function"+1,即像01对应02,03对应04,07对应08这样对应起来。具体安全等级的划分、密钥算法、种子、密钥的长度等信息会由车产规定好释放的。

<think>好的,用户想了解UDS诊断中的27服务,也就是Security Access服务。首先,我需要回忆一下UDS的基本知识,确保自己理解正确。UDS是ISO 14229标准的一部分,27服务主要用于安全访问,控制ECU的安全级别,防止未授权访问。 接下来,用户可能想知道27服务的具体流程。应该分步骤说明,比如请求种子、计算密钥、发送密钥验证。需要解释每个步骤的作用,例如ECU生成随机种子,客户端用特定算法计算密钥,然后ECU验证。 还要注意安全机制,比如种子随机性、算法保密性、防止重放攻击等。这些是确保安全的关键点,用户可能关心为什么需要这些机制。 另外,用户可能想知道应用场景,比如刷写固件或参数时使用27服务。需要举例说明,让用户更容易理解。 要检查是否有常见的误解,比如密钥算法的复杂性是否需要,或者多次失败后的锁定机制。这些细节能帮助用户更全面了解27服务安全措施。 最后,确保回答结构清晰,分步骤解释,语言简洁,避免使用过多专业术语,但保持准确性。需要确认所有信息准确无误,特别是关于请求和响应格式的例子,可能需要查阅标准文档确认格式是否正确。 总结一下,回答应该包括定义、流程、安全机制、应用场景,可能加上示例和注意事项,帮助用户全面理解27服务。</think>UDS(统一诊断服务)中的27服务是**安全访问(Security Access)**,主要用于在ECU(电子控制单元)与诊断工具之间建立安全通信通道,以防止未经授权的访问或操作。以下是逐步介绍: --- ### **1. 服务功能** - **目的**:通过“安全种子(Seed)”和“密钥(Key)”的交换机制,验证诊断工具是否具备合法权限。 - **应用场景**:在需要高安全性的操作前调用(如刷写固件、修改敏感参数等)。 --- ### **2. 服务流程** 27服务分为两个子功能: - **0x01**:请求种子(Request Seed) - **0x02**:发送密钥(Send Key) **步骤说明**: 1. **诊断工具发送请求种子(0x01)** - 格式:`27 01 [安全级别]` - 示例:请求安全级别1的种子 → `27 01 01` 2. **ECU返回随机种子(Seed)** - 示例响应:`67 01 12 34 56 78`(假设种子为`0x12345678`) 3. **诊断工具计算密钥(Key)** - 使用预定义算法(如AES、XOR或厂商私有算法)对种子进行计算,生成密钥。 4. **诊断工具发送密钥(0x02)** - 格式:`27 02 [安全级别] [Key]` - 示例:发送安全级别1的密钥 → `27 02 01 AA BB CC DD` 5. **ECU验证密钥** - ECU使用相同算法计算密钥,若匹配则解锁对应安全级别;否则返回错误码。 --- ### **3. 安全机制** - **种子随机性**:ECU每次生成的种子应随机,防止重放攻击。 - **密钥算法保密**:算法通常由厂商自定义,且不公开。 - **错误次数限制**:连续验证失败后,ECU可能锁定一段时间或永久拒绝访问。 --- ### **4. 典型响应码** - **肯定响应**:`67 [子功能] [附加数据]` 示例:`67 01 12 34 56 78`(返回种子) - **否定响应**: - `7F 27 22`:条件不满足(如安全级别无效) - `7F 27 35`:超出尝试次数 - `7F 27 36`:密钥无效 --- ### **5. 应用示例** 假设需刷写ECU固件: 1. 诊断工具请求安全级别2的种子 → `27 01 02` 2. ECU返回种子 → `67 02 55 AA 33 CC` 3. 工具通过算法生成密钥 → `11 22 33 44` 4. 工具发送密钥 → `27 02 02 11 22 33 44` 5. ECU验证成功,解锁刷写权限。 --- ### **6. 注意事项** - **算法兼容性**:不同厂商/ECU的算法可能不同,需配套诊断工具。 - **时间敏感性**:部分ECU要求在一定时间内完成密钥计算和发送。 - **安全级别划分**:一个ECU可能支持多个安全级别(如01=基础访问,02=编程模式)。 通过27服务,UDS实现了对敏感操作的安全保护,确保只有授权方能够执行关键诊断任务。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值