在谈论到UDS中的安全访问时需要细说下安全验证算法:
安全验证算法包括1个核心和3个主题。第一个主体通常和ECU有关,比如我们先用UDS中的22服务读取ECU的SN好,取其中4个字节作为DID参与,显然这个DID对于这个ECU来说是不变的,也能通过UDS中的服务方便的读取到。
第二个主题Response Seed,通常与ECU的运行时间由关系,是主体在27服务发送的子功能时回复。Response Seed通常一直在发生变化,无法发现其规律。
第三个主题是执行次数就是算法要执行几轮。执行1轮和2轮得到的结果肯定是不一样的。
最大的核心就是算法了。举个简单的算反比如Response Seed和ECU SN前4个字节加一下,循环左移两位,执行3轮,return这个数作为key结束。安全验证就是一把锁,算法越复杂短时间解开的成本越高,越不易被**掉。如果失败次数过多还会触发惩罚机制,一段时间内都无法再次尝试解锁,以用于防止人为的**。 |