overview

startup_hvb

分析

hvb与android avb类似。

hvb的rvt分区与android vbmeta类似。

dm-verity基本相同。

适配

bootloader是rvt pubkey、rollback index、unlock flag。

bootloader向os传参通过hvb_creat_cmdline生成。

kernel选项打开。

fstab参数打开。

data structure

参考hvb.h, hvb_cert.h, hvb_footer.h, hvb_rvt.h

test/hvb_main.c

校验入口在hvb_chain_verify

适配hvb_ops.h相关函数。

适配hvb_sysdeps.h相关函数。

auth/hvb.c

hvb_chain_verify

  • hvb_rvt_verify_root 校验rvt分区。
  • hvb_walk_verify_nodes 基于rvt分区提供的子分区pubkey,校验各子分区。
  • hvb_creat_cmdline 生成命令行参数,其中包含已校验的分区digest,传递给OS。

hvb_rvt_verify_root

  • footer_init_desc 校验rvt分区的自签名,读取footer中包含的rvt_pubkey
  • ops->valid_rvt_key 校验rvt_pubkey是否可信。应适配。

hvb_walk_verify_nodes

  • hvb_rvt_get_pubk_buf 从rvt分区读取指定子分区的expected_pubkey
  • footer_init_desc 校验指定子分区的自签名,读取footer中包含子分区的pubkey
  • hvb_buf_equal 比较expected_pubkey与子分区中的pubkey是否相等。

存在优化空间,先比较公钥,再验签。

footer/hvb_footer.c

  • _load_and_parse_footer 从分区中读取footer。
  • _load_cert 从footer读取分区相关签名信息。
  • cert_init_desc 校验指定分区的自签名,读取该分区的pubkey

cert/hvb_cert.c

cert_init_desc

  • hvb_verify_cert 校验分区自签名。
  • _check_rollback_index 防回滚。
  • 校验通过,写入pubkey至指定*out_pubk = sign_info->pubk;


Published

23 December 2024

Categories

Tags


Share On