【浅浅记录UDS中如何集成cmac等算法】

记录学习


前言

提示:UDS27服务集成cmac算法&&31服务使用crc对数据进行校验

例如:在诊断刷新流程的详细设计中,需要使用 UDS 中的 0x27 安全访问服务,来解锁 ECU从而再进行 ECU 的诊断刷新过程。ECU 解锁方式是利用刷新系统工具向节点ECU 请求种子,再由下位机ECU返回随机种子,最后刷新系统工具向下位机 ECU 返回密钥,下位机 ECU 通过验证密钥的正确与否,来决定是否对 ECU 进行诊断刷新的流程。产生密钥的算法就是要集成的camc算法,一种常见的分组对称加密算法。当下位机 ECU 进行应用程序更新时,除了要保证应用程序数据的完整性和有效性,更要防止一些非法程序的侵入运行,避免造成应用程序被破坏以及 ECU 软件代码的泄漏,使用crc完整性校验机制。


提示:以下是本篇文章正文内容,下面可供参考

一、UDS27服务集成cmac算法

cmac算法是基于对称密钥分组加密算法的消息认证码。 对称密钥:相当于采用对称算法来加密,AES、DES等,通常就是AES了,此处也不例外; 分组加密:就是采用分组的方式,将消息分成对应算法对应大小的块。详细的介绍相信网上也有很对相对专业的博主写了文章,此处就不展开。既然是集成,所以就是将写好的cmach算法的代码源文件(cmac.c 和 cmac.h)导入工程目录,再进行调用修改,以及修改对应makefile就可以食用。


二、使用步骤

1.引入库

通常将常用的源文件代码统一放到工程目录下的src子目录的base目录。
部分工程目录结构如下:

src
|-- base
|   |-- aes.h
|   |-- aes.c
|   |-- aes_crypto.c
|   |-- aes_crypto.h
|   |-- cmac.c
|   |-- cmac.h
|   |-- crc.c
|   |-- crc.h
|   |-- makefile
test
|-- tester_test.c
|-- Udss.c
|-- Udss.h
|-- makefile
makefile
......

2.在Udss源文件写入头文件

代码如下(简单记录):

#include "cmac.h"

在Uds27Handfun函数中调用cmac.c的函数,重构该服务,主要是rand函数生成seed,返回tester,Udss根据SID是否为0x02判断需要验证mac值。ECU根据UDS文件的代码使用同一个seed计算出mac值,和上位机tester计算得到的mac值进行比对,若一致表示通过验证,解锁ECU。
值得注意,在test目录下的makefile, 导入要用的头文件路径

INC = -I. \
      -I ../src/base #cmac.h路径

因为Udss.c要编译成Udss.o,同理 cmac.c也生成camc.o , 然后在链接,所以在顶层makefile需要加入 Udss.o 和 cmac.o 的依赖

	@ echo ">> build $(OUTDIR)/tester_test.elf"
    @ $(CC) -s -o $(OUTDIR)/tester_test.elf $(OBJDIR)/Udss.o $(OBJDIR)cmac.o $(OBJDIR)tester_test.o -L$(OUTDIR) -ldoip_tester 2>$(BUILDLOG)

弄好后,顶层目录路径下一键 make 可食用。然后启动tester进行测试,sh run_tester_test.sh 。crc的集成也类似,但是 crc 这次用早在 0x31 服务的 0xff 0x01功能进行下载文件后的完整性校验。和 cmac 差不多,生成两边的 crc 码然后一一进行对比,所以步骤类似,可能在Uds31handfun函数里在进行修改一下,这里不在赘述。


总结

以上就是今天要记录的内容,本文仅仅简单介绍了集成算法的使用,而集成之后,我们需要修改一定的makefile文件进行链接。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值