问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

VBF格式文件详解

创作时间:
作者:
@小白创作中心

VBF格式文件详解

引用
CSDN
1.
https://blog.csdn.net/weixin_51523899/article/details/141311304

VBF(Versatile Binary Format)是一种二进制文件格式,主要用于软件的存储和传输。它与HEX、S19等文件格式类似,但具有更复杂的结构和更强的安全性。本文将详细介绍VBF文件的各个组成部分及其功能,帮助读者深入了解这种重要的文件格式。

VBF(Versatile Binary Format)是一种二进制文件格式,是软件释放的一种格式,与HEX,S19文件类似,只是一种文件格式。
其主要由三部分组成:Version,Header 和 Data。

Data段

Data段是由多个Block组成的,Block中的Data就是有效数据,是需要被刷到Flash里面。这么多个Block中有一个Block是VBT(Verification Block Table),VBT里面存放的是其他Block的Hash数据。

VBT的Data:

0000  
format identifier(SHA-256)  
0002 data block的个数  
00060000 start address  
00000013 length  
D78ECD62C62C…2262 Hash  
00060100 start address  
0001EF00 length  
E6027B3F959F…4188 Hash  

Header段

HeadHeader段的格式是ascii,所以用notepad打开也可以看到。Headr段里面定义了VBF的属性。一些关键的属性:

2.1 sw_part_number

零件号

2.2 sw_version

版本号

2.3 sw_part_type

表示此VBF包的类型,SBL,EXE,或者是DATA等

2.4 ecu_address

ECU的物理目标地址,在诊断调查表里面会写明,一般由4个数字组成,后两个数字与诊断ID后两个数字一样。

2.5 erase

VBF中每个Block需要擦出的Flash起始地址和长度。

2.6 call

VBF的类型是SBL时,是必填的,就是SBL的起始地址。

2.7 verification_block_start

VBT的起始地址

2.8 verification_block_root_hash

root hash是很重要的,计算的是未压缩的VBT信息的Hash值。
Root hash = SHA-256 (VBT startAddress || VBT length || VBT data)

2.9 sw_signature_dev

后缀dev的意思是,这个值是此VBF加研发签后生成的签名值,研发签名值= RSA(root hash + dev private key)。Tier1在转换VBF的时候,使用研发私钥给VBF加签,研发私钥由OEM给出,研发私钥对应的解签用的研发公钥也是由OEM给出,研发公钥固化在MCU内部。在刷写MCU时,刷写流程中的Check Memory会附带研发签名值的明文,MCU收到签名值后,结合研发公钥 和 已经刷到Flash的数据一起,验证刷写文件的完整性和合法性。

Tier1将加了研发签的VBF释放给OEM后,OEM会再加一个生产签 sw_signature,也就是说一个VBF文件会有两个签名值,即一个研发签名值,一个生产签名值。生产签名值=RSA(root hash + private key),其中生产私钥只有OEM自己知道。在整车下线时,对应的生产公钥会通过DID写入,MCU在收到生产公钥后,将生产公钥存到受保护的区域(例如HSM的数据区等)替换掉研发公钥。在Check Memory时,MCU不再使用研发公钥验签,而使用生产公钥验证传入的签名值。这样就可以保证在整车下线后,Tier1等其他不知道生产公私钥的相关方不能私自更新软件。

本文原文来自CSDN

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号