Navigation

    全志在线开发者论坛

    • Register
    • Login
    • Search
    • Categories
    • Tags
    • 在线文档
    • 社区主页

    【FAQ】全志R329如何判断Tina安全启动boot分区证书与boot分区数据是匹配与否?

    其它全志芯片讨论区
    r329 r328 r818 faq 技术支持
    1
    1
    169
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • q1215200171
      budbool LV 8 last edited by q1215200171

      问题描述

      客户自己移植Tina打包流程,反馈使用安全启动后,boot分区校验失败,导致启动不了,关键log如下:

      [06.319]partinfo: name boot1, start 0xe00, size 0xb400
      [06.895]kernel len:10350592, part len:23592960
      **++hash compare is not correct++**
      **>>>>>>>hash of file<<<<<<<<<<**
      5bed1d5c: 98590b3b 3b1116da 174ab29e 30a13e78    ;.Y....;..J.x>.0
      5bed1d6c: 60efaf5c 567b8961 38d000dd a2da3783    \..`a.{V...8.7..
      **>>>>>>>hash in certif<<<<<<<<<<**
      5c3e2218: dd7f2b61 2343e66f cb2f648c 03c76a71    a+..o.C#.d/.qj..
      5c2e2228: 6a2ee78b f03c1694 43da3873 8474b958    ...j..<.s8.CX.t.
      bootm - boot application image from memory
      
      Usage:
      bootm [addr [arg ...]]
      

      问题分析

      log中hash in file是对boot分区payload部分计算sha256的值;hash in certify表示证书中的记录的sha256值,两个值必须相等。

      本例中,log提示这两个值不等。可能的原因有很多:有可能是分区数据本身就有问题,也有可能计算sha256时内存中boot.img数据被修改等等。

      但是,第一步要澄清分区中数据是否存在问题,即判断boot分区中证书与boot.img是否是匹配的。

      本例中客户自己移植打包过程,容易造成上述问题。

      解决办法

      Tina安全启动中,boot分区包含boot.img与boot.img的证书。

      在打包过程中,先将out/<platform>/boot.img复制到out/<platform>/image/boot.fex

      然后通过dragonsecboot -toc1 dragon_toc.cfg xxx命令对out/<platform>/boot.fex进行签名,生成证书out/<platform>/image/toc1/cert/boot.der

      dragonsecboot -toc1 dragon_toc.cfg ${ROOT_DIR}/keys ${CNF_BASE_FILE} ${ROOT_DIR}/image/version_base.mk
      

      最后通过sigbootimg 命令将证书boot.der附在boot.fex文件后。此时boot.fex中包含了boot.img与其证书。

      sigbootimg --image boot.fex --cert toc1/cert/boot.der --output boot_sig.fex
      

      boot.fex与证书boot.der要匹配,如果不匹配就会导致校验不过。

      可以进行如下验证:

      ① 执行sha256sum out/<platform>/boot.img,得到boot.img的sha256值。
      ② 将①运算的sha256值与out/<platform>/image/toc1/cnf/boot.cnf中的usr_cert块进行对比。看是否一样,如果不一样,则表明boot.img与证书不一致,打包流程出现问题,检查下是否有严格按照上述打包流程走。

      1 Reply Last reply Reply Quote Share 0
      • Referenced by  q1215200171 q1215200171 
      • Referenced by  q1215200171 q1215200171 
      • Referenced by  q1215200171 q1215200171 
      • Referenced by  q1215200171 q1215200171 
      • Referenced by  q1215200171 q1215200171 
      • 1 / 1
      • First post
        Last post

      Copyright © 2022 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号

      行为准则 | 用户协议 | 隐私权政策