简要

AVB2.0被用于启动引导,此用法添加一个“vbmeta.img”镜像。public key被编译到bootloader中用于校验vbmeta数据,vbmeta.img包含应由此public key验证的签名。

vbmeta.img包含用于验证的public key,但只有bootloader验证过vbmeta.img才会可信,就好比认证一样,包含可信public key和签名。

因此,我们在AVB中有两个重要key,一个验证vbmeta.img的OEM key,一个验证其他分区(boot/system/vendor)的verity key。当然可以使用OEM key作为verity key。

我们知道OEM key用于在bootloader阶段验证vbmeta.img。这还不够,我们必须验证其他分区,vbmeta.img包含的public key用于此目的。就像avb1.0中verity key一样,此public key用于验证system、vendor分区和boot分区。这里有些不同之处,avb1.0使用OEM key验证boot分区,使用verity key验证system/vendor分区,但avb2.0使用OEM key验证vbmeta.img,并使用其中包含的public key验证其他分区(system/vendor/boot等)。

Non-A/B system

AVB1.0

AVB2.0

正如我们上面所说,avb2.0使用OEM key来验证vbmeta.img,并使用其中所包含的public key验证其他分区。启动时bootloader将验证两个分区,一个是使用OEM key验证vbmeta.img,一个是使用vbmeta.img所包含的public key验证boot分区,而system/vendor分区由init/fs_mgr来验证(使用vbmeta.img所包含的public key)。

A/B system

AVB1.0

boot.img=kernel + ramdisk + signature,使用OEM key验证boot.img的signature合法性。

AVB2.0

参考:https://blog.csdn.net/rikeyone/article/details/80606147

VBMeta结构

AVB中使用的中心数据结构是VBMeta结构,此数据结构包含多个描述符(和其他元数据),并且所有这些数据都被加密签名。描述符用于image哈希、image哈希表元数据和所谓的链式分区。

其中主vbmeta分区在哈希描述符中保存boot分区的哈希,对于system和vendor分区,哈希表在文件系统之后,主vbmeta分区在哈希表描述符中保存哈希表的root hash、salt和offset。因为vbmeta分区中的vbmeta结构是以密码方式签名的,所以bootloader可以检测签名,并验证它是有key0的所有者(例如,通过嵌入key0的公共部分)创建的,从而信任于boot、system和vendor。

链式分区描述符用于委托权限——它包含委托权限的分区名称以及该特定分区上的签名所信任的public key。

在这个设置中,xyz分区有一个完整性检查的哈希表,在哈希表后面是一个vbmeta结构,它包含带有哈希表元数据(root has、salt和offset等),这个结构用key1签名的。最后,在此分区的末尾是一个页脚,它具有vbmeta结构的offset。

此设置允许bootloader使用链分区描述符来查找分区末尾的页脚(使用链分区描述符中的名称),有助于帮助找到xyz分区的vbmeta结构并验证是否由key1签名的(保存在链式分区描述符中的key1 public key)。至关重要的是,因为有一个带offset的页脚,所以可以更新zyz分区,而不需要vbmeta分区进行任何更改。

参考:https://android.googlesource.com/platform/external/avb/+/master/README.md#The-VBMeta-struct

Android Verified Boot 2.0简要相关推荐

  1. Android Verified Boot 2.0 最新安卓P AVB详解

    什么是AVB 验证启动是确保用户设备运行软件完整性的一整套流程. 它通常从设备固件的只读部分启动,使用加密方式验证代码是可靠且没有任何已知的安全缺陷之后才会执行. AVB是验证启动的一种实现. VBM ...

  2. Android安全启动学习(五):Android Verified Boot 2.0

    1.AVB概要 AVB2.0被用于启动引导,此用法添加一个"vbmeta.img"镜像. public key被编译到bootloader中用于校验vbmeta数据,vbmeta. ...

  3. Magisk root 原理分析之二 :Android Verified Boot (AVB)

    1. Android Verified Boot (AVB) 或称 Verified Boot 2.0 简介 官方解释:验证用户设备上运行的软件完整性.它通常从设备固件的只读部分开始,该部分加载代码并 ...

  4. AVB校验微观版本:android avb(Android Verified Boot)验证

    前辈原文:https://blog.csdn.net/weixin_43836778/article/details/90400147 其实可能有人会说,怎么整这么多重复的,其实不是的.这是为了不断地 ...

  5. Android Verified Boot dm-verity 优化和实战

    目录 一.AVB 技术背景 二.代码实现逻辑 一.AVB 技术背景 Android O/P 版本以来,谷歌加入了system-as-root的特性,此时ramdisk和system是一起放在同一个sy ...

  6. SpringBoot2.0(一):【重磅】Spring Boot 2.0权威发布

    就在昨天Spring Boot2.0.0.RELEASE正式发布,今天早上在发布Spring Boot2.0的时候还出现一个小插曲,将Spring Boot2.0同步到Maven仓库的时候出现了错误, ...

  7. (转)Spring Boot 2(一):【重磅】Spring Boot 2.0权威发布

    http://www.ityouknow.com/springboot/2018/03/01/spring-boot-2.0.html 就在今天Spring Boot2.0.0.RELEASE正式发布 ...

  8. Kotlin 企业级应用开发教程(Spring 5 + Spring Boot 2.0 + MyBatis)

    Kotlin 企业级应用开发教程 -- Spring 5 + Spring Boot 2.0 + MyBatis 内容简介 Kotlin编程语言是一种现代语言,它简洁,安全,实用,同时专注于与Java ...

  9. 使用最新版(2020)IntelliJ IDEA 新建 Spring Boot 2.0 项目

    使用最新版(2020)IntelliJ IDEA 新建 Spring Boot 2.0 项目 一:创建项目,并添加相应依赖 新建Project,并指定Project为Spring Initializr ...

  10. ERROR: Failed to resolve: com.android.support:appcompat-v7:29.0.0

    错误内容如下 ERROR: Failed to resolve: com.android.support:appcompat-v7:29.0.0 Show in Project Structure d ...

最新文章

  1. jenkins+github+docker+maven自动化构建部署
  2. oracle数据库切换教程,oracle 11gR2 物理备用数据库搭建及切换
  3. 发那科pmc编程手册_如何学习FANUC PMC功能指令
  4. 在PowerDesigner中设计概念模型
  5. mdk cubemx 移植RT-Thread Nano 至stm32f424zgt6
  6. mysql 表字段部分替换
  7. VBA中,可以利用下面的语句来调用Excel内置对话框
  8. Erlang中的record与宏
  9. 22个开源的PHP框架
  10. python 实现C atoi函数
  11. 怎样访问ftp服务器的文件,访问ftp服务器文件夹
  12. keil 5(C51)下载安装
  13. 解决服务器内存被pc微信占满,微信占内存的解决方案终于出现了
  14. python开发面试自我介绍_面试中怎样做一个精彩的自我介绍
  15. django generic view - ListView
  16. git上传详细步骤和提交代码的各种报错解决方式.
  17. 这些免费的IT自学网站,你用过几个
  18. Python使用Plotly绘图工具,绘制散点图、线形图
  19. qt设置背景图片注意事项
  20. 辽宁师范大学计算机学院查寝吗,辽宁师范大学影视艺术学院

热门文章

  1. 高盛:79页区块链报告-《从理论到实践》(附下载)
  2. 2021年软件测试工具总结——十大新UI功能测试工具
  3. LTE ue连接enb数据包流程解析
  4. 讯飞语音报错:未经授权的语音应用.(错误码:11210)
  5. C语言>>输入两个字符串,比较这两个字符串是否相同并输出比较结果。要求不用任何字符串处理函数。
  6. 豆瓣电影数据可视化项目
  7. RN系列:Android原生与RN如何交互通信
  8. mysql grant授权用户_mysql grant 用户权限总结
  9. 《红楼梦》的香气空白
  10. <C++>多态的实战,详解三个具体案例