VBF格式文件详解(转载)

本文转载自VBF格式文件详解---VBF格式解析_vbf文件-CSDN博客以便学习查阅,如有侵犯,联系立删!!!

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

1. 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

2. 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等其他不知道生产公私钥的相关方不能私自更新软件。


————————————————                   
原文链接:https://blog.csdn.net/cesare20/article/details/137156644

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值