news 2026/5/1 2:48:38

第二十八篇技术笔记:郭大侠学DoIP - 安全访问三板斧:拿种子、算密钥、27服务 全都要

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
第二十八篇技术笔记:郭大侠学DoIP - 安全访问三板斧:拿种子、算密钥、27服务 全都要

写在开篇:

上回说到,黄蓉去敲门,门房回了句“缺少认证”(响应码0x04),还扔给她一串数字——“先对暗号!”

黄蓉拿了数字回来,却不知道怎么算。

郎中捋着胡子笑了:“黄姑娘,这就是咱们要讲的——安全访问三板斧:拿种子、算密钥、27服务,三样全都要,一样不能少。

黄蓉撸起袖子:“行!靖哥哥都能学得会,今天我就把这三板斧全抡明白了!”

一、三板斧是哪三板斧?

郎中在白板上写下三行字:

第一板斧:拿种子
第二板斧:算密钥
第三板斧:27服务

“这三板斧,少了哪一把,门都不开。”

板斧干什么缺了会怎样
拿种子从门房那里拿一个随机数没题目,怎么答题?
算密钥用自家算法把种子算成密钥有题目不会算,白搭
27服务按规矩交卷、验证算出来不会交,门房不知道

黄蓉点点头:“哦~~所以这三板斧是链条,一环扣一环,哪环断了都不行!”

郎中竖起大拇指:“对头!”

二、第一板斧:拿种子

“黄姑娘,门房扔给你的那串数字12345678,就叫种子。”

属性说明
谁给的网关(门房)
长啥样一串随机数,通常4-8字节
有啥特点每次都不一样
为啥要它防重放攻击——这次是1234,下次是5678,录下来也没用

“种子就像门房随口说的‘天王盖地虎’。今天说‘天王盖地虎’,明天说‘宝塔镇河妖’——切口天天换,你如果只会背昨天的,今天就进不去。”

黄蓉一拍大腿:“明白了!种子就是每次对暗号的题目。每次题目不一样,防止有人录下来以后冒充我!”

郎中竖起大拇指:“第一板斧,拿种子——黄姑娘过关!对头!”

三、第二板斧:算密钥

“拿了种子,接下来得。”

“你得用你家祖传的算法,把种子算成一个新数字,这玩意儿就叫密钥。”

种子算法密钥
门房12345678每位数乘2,取个位24680246
黄蓉12345678同样的算法24680246
坏人12345678不知道算法???????

“两边用同样的算法,算出同样的密钥,暗号就对上了。坏人不知道算法,算出来的对不上,门就不开。”

郭靖挠挠头:“那这个算法是啥?能不能告诉我?”

郎中笑了:“郭大侠,算法是厂家预置的——4S店的诊断仪出厂时就烧录了算法,路边随便的电脑没有。这算法通常是国际标准,比如AES、SHA-1,厂家也可以自己定,反正保密就行。”

黄蓉咬了一口糖葫芦:“那我家桃花岛要是做诊断仪,就用‘五行八卦算法’!谁也别想猜着!”

郎中竖起大拇指:“第二板斧,算密钥——黄姑娘再过关!对头!”

四、第三板斧:27服务

“前两板斧抡完了,种子拿到了,密钥算出来了。但你还得按规矩交卷——这就是27服务。”

“27服务是UDS协议(ISO 14229)定的安全访问服务,服务ID是0x27,专门负责‘给种子、收密钥、做验证’这套流程。”

黄蓉问:“那27服务具体咋走?”

郎中画了一张时序图:

诊断仪(黄蓉) 网关(门房) │ │ │ ① 路由激活请求(SA=0x0E80) │ │ “我是黄蓉,工号0x0E80” │ │──────────────────────────────────────────>│ │ │ │ ② 响应码0x04:“缺少认证!” │ │ “先对暗号!” │ │<──────────────────────────────────────────│ │ │ │ ③ 27 01 RequestSeed(请求种子) │ │ “给我一个随机数” │ │──────────────────────────────────────────>│ │ │ │ ④ 27 01 ResponseSeed(返回种子) │ │ “种子:12345678” │ │<──────────────────────────────────────────│ │ │ │ ⑤ 黄蓉用算法算出密钥 │ │ 12345678 → 算法 → 24680246 │ │ │ │ ⑥ 27 02 SendKey(发送密钥) │ │ “我的密钥是24680246” │ │──────────────────────────────────────────>│ │ │ │ ⑦ 门房用同样算法算一遍 │ │ 12345678 → 算法 → 24680246 │ │ 一致:→ ⑧ │ │ │ │ ⑧ 27 02 Response(验证通过) │ │ “暗号对上了!” │ │<──────────────────────────────────────────│ │ │ │ ⑨ 重新发送路由激活请求 │ │ “暗号对完了,让我进!” │ │──────────────────────────────────────────>│ │ │ │ ⑩ 响应码0x10:“请进!” │ │<──────────────────────────────────────────│ │ │ ▼ ▼

27服务的子功能(多级关卡)

“而且,27服务不止一套——有多级关卡。”

子功能访问级别能干啥江湖版
RequestSeed27 01级别1读数据(VIN、版本)进客厅,看摆设
SendKey27 02级别1
RequestSeed27 03级别2写数据(改配置、清故障码)进书房,动笔墨
SendKey27 04级别2
RequestSeed27 05级别3刷写固件、解锁BootLoader进密室,动家底
SendKey27 06级别3

“你想进客厅,过级别1就行;想进密室,得过级别3。过哪级关,进哪级门。

黄蓉恍然大悟:“哦~~原来27服务是流程标准——‘怎么拿种子、怎么交密钥、怎么分级别’,全是它定的!没这套规矩,就算有种子、会算密钥,也不知道咋交卷!”

郎中竖起大拇指:“第三板斧,27服务——黄姑娘三关全通!这三板斧,全都要,一样不能少!对头!”

五、一张图看懂:三板斧全流程

郎中在白板上画了一张总结图:

┌─────────────────────────────────────────────────────────────┐ │ 安全访问三板斧:拿种子、算密钥、27服务 全都要 │ ├─────────────────────────────────────────────────────────────┤ │ │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ 第一板斧:拿种子 │ │ │ │ 诊断仪:27 01 RequestSeed(请求种子) │ │ │ │ 网关:种子 = 12345678 │ │ │ └─────────────────────────────────────────────────────┘ │ │ ↓ │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ 第二板斧:算密钥 │ │ │ │ 诊断仪用预置算法:12345678 → 算法 → 24680246 │ │ │ └─────────────────────────────────────────────────────┘ │ │ ↓ │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ 第三板斧:27服务 │ │ │ │ 诊断仪:27 02 SendKey(密钥=24680246) │ │ │ │ 网关用同样算法算一遍 → 一致 → 验证通过 │ │ │ └─────────────────────────────────────────────────────┘ │ │ ↓ │ │ 三关全过! │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ 诊断仪:重新发送路由激活请求 │ │ │ │ 网关:响应码0x10——“请进!” │ │ │ └─────────────────────────────────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────┘

六、如果缺了一板斧呢?

黄蓉问:“郎中,那如果我缺了一板斧,会咋样?”

郎中捋着胡子:“黄姑娘,您试试看——”

缺了哪把结果江湖版
缺种子没有题目,怎么算答案?“你连暗号都不问,就想进?”
缺算法有题目,不会算“题目给你了,你算不出来,怪我咯?”
缺27服务算出来了,不知道怎么交“算出来了不交卷,我怎么知道你对不对?”
三把全有门开了“郭大侠请进!”

黄蓉拍拍胸脯:“还好我三把全抡了,一把没缺!”

七、如果密钥算错了呢?

郭靖问:“郎中,那如果蓉儿算错了密钥,会咋样?”

郎中笑了:“郭大侠,您想啊——您去山寨对暗号。第一次说‘天王盖地虎’,您说‘地瓜烤红薯’——门房一听不对,说‘再给你一次机会’。”

“二次不对,再给一次。三次不对……”

黄蓉抢答:“门房说‘滚’?”

郎中点头:“对头!UDS规定,连续多次失败后,ECU会锁定一段时间。这叫防暴力破解。”

重试次数结果江湖版
第1次错还能再试“听错了,再来!”
第2次错最后一次“最后一次机会了!”
第3次错锁定N秒“滚!明天再来!”

黄蓉拍拍胸脯:“还好我算得准!不然三把斧子抡空了,门就锁死了!”

八、这些坑,靖哥哥替你先踩了

坑1:以为“种子是固定的”。

后来才搞明白,种子每次随机生成,防重放攻击。

坑2:以为“密钥是提前配好的”。

后来才搞明白,密钥实时计算——种子 + 算法 = 密钥。算法预置,密钥不是。

坑3:以为“27服务只有一关”。

后来才搞明白,27服务有多级关卡(01/02、03/04、05/06……)。过哪级进哪门。

坑4:以为“三板斧可以缺一把”。

后来才搞明白,种子、密钥、27服务,三样全都要。缺一把门都不开。

坑5:以为“一辈子只过一次27就行”。

后来才搞明白,每次诊断会话可能需要重新认证。刷固件时,每刷一个块可能都要重新过。

黄蓉补刀:“靖哥哥,你是不是以为对一次暗号,就能一辈子进人家密室?”

郭靖憨笑:“蓉儿说得对……降龙十八掌也不是一天练成的!”

九、下步目标

安全访问三板斧搞清楚了——拿种子、算密钥、27服务,三样全都要,一样不能少。

郭靖点点头:“郎中,我现在知道为什么蓉儿进不去了——她没算法,算不出密钥,过不了27服务。三板斧缺了两把,门当然不开。”

黄蓉白了他一眼:“靖哥哥,你这是在说我笨?我要是有了算法,三把全抡给你看!”

郎中笑了笑:“安全门禁过了,就可以正式开始诊断了——发UDS命令、读故障码、刷固件。这就是咱们下一篇要讲的——诊断消息。”

黄蓉把最后一颗糖葫芦咬下来,含混不清地说:“靖哥哥,你今天学会了‘三板斧全都要’,明天是不是该学学‘看病’了?”

郭靖憨憨一笑:“蓉儿说得对。明天,学诊断消息去!”

于是,小两口开心地开着国产智能网联新车,幸福地回家喽。

微风吹过,郎中捋着胡子,望着他们远去的背影,微微一笑。

他看得出来,靖哥哥今天虽然抡明白了三板斧,但眼里总还有几分似懂非懂的疑惑——

“种子是随机数,算法是预置的,可这算法到底咋写的?”

“27服务过了,进去之后,UDS命令又该咋发?”

“读故障码、刷固件……这些‘看病’的活,跟今天的‘进门’又有啥不一样?”

郎中轻轻摇了摇头,眼里满是欣慰。

他知道,这个憨小子,一定会再过来的。

呵呵。

十、写在最后

这一篇最大的收获:

安全访问三板斧——拿种子(随机数)、算密钥(算法计算)、27服务(标准流程)。三样全都要,一样不能少。缺了种子,没题目;缺了算法,算不出答案;缺了27服务,不知道咋交卷。

郭靖感叹:原来对个暗号都得三板斧抡圆了——种子、密钥、27服务,关关都要过,少一把都不行!

打完收工,886。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 2:47:06

别死记硬背递归了!拆解ICode Python递归关卡,带你用‘执行流程图’和‘变量跟踪表’彻底搞懂

别死记硬背递归了&#xff01;拆解ICode Python递归关卡&#xff0c;带你用‘执行流程图’和‘变量跟踪表’彻底搞懂 递归是编程中既强大又令人困惑的概念。许多初学者在ICode竞赛或日常练习中&#xff0c;面对递归函数时总感觉像在迷雾中行走——知道每一步在做什么&#xff0…

作者头像 李华
网站建设 2026/5/1 2:45:28

LLM应用开发平台全景解析:从LangChain到Dify的开发者指南

引言 随着大语言模型(LLM)技术的快速发展,越来越多的开发者开始探索如何将LLM集成到实际应用中。然而,直接使用原始API进行开发往往面临诸多挑战:提示词工程复杂、上下文管理困难、工具调用繁琐等。为此,市场上涌现出众多LLM应用开发平台,帮助开发者更高效地构建AI应用…

作者头像 李华
网站建设 2026/5/1 2:36:23

基于LLM与Whisper的智能面试分析系统:从架构到实践

1. 项目概述与核心价值面试复盘&#xff0c;几乎是每个职场人都会经历&#xff0c;但大多数人又做得不够深入的一件事。我们常常在面试结束后&#xff0c;脑子里一团乱麻&#xff0c;只记得面试官问了什么&#xff0c;自己答了什么&#xff0c;至于答得好不好、为什么好、为什么…

作者头像 李华
网站建设 2026/5/1 2:29:28

包装设计选哪家,报价背后要看打样周期和修改次数

“包装设计不是比谁报价低&#xff0c;而是看谁能把创意真正落地。”在品牌竞争日益激烈的今天&#xff0c;一款优秀的包装设计早已不只是“好看”那么简单——它承载着品牌识别、消费引导、情感连接甚至环保责任。然而&#xff0c;许多企业在选择服务商时&#xff0c;往往只盯…

作者头像 李华