
Android AVB 分析
文章平均质量分 97
手把手理论+实战,提供一种 AVB 学习途径,不仅学习 AVB 的操作,更深入 AVB 底层的原理
洛奇看世界
中山大学毕业,某芯片公司技术支持工程师,十几年的行业资深老油条,2b 狗主人,一个喜欢运动的老爹,一只热爱生活的程序猿。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Android AVB 分析专栏文章导读
Android AVB 分析专栏文章导读,基于 AVB 基础原理,源码相关,镜像布局,相关工具,镜像数据的签名和验证,dm-verity 的底层机制, FEC 纠错原理和能力,AVB 的打开和关闭,Rollback 原理,数据存储位置等 10 个方面提出了 100 道题,用来检验对 AVB 的熟悉程度。原创 2025-04-13 13:33:29 · 1030 阅读 · 0 评论 -
Android AVB 挑战,100 个问题你能回答几个?
我使用 AI 整理了 100 条关于 Android Verified Boot (AVB) 的问题,涵盖原理、源码、镜像布局、工具、签名验证、dm-verity、FEC、开关、回滚保护及数据存储等方面,这些问题可以用于测试你对 AVB 的理解和掌握程度。有些问题有标准答案,另一些则没有,所以不要纠结于具体的答案,我也不会提供所谓的标准答案,欢迎加入我的 AVB 讨论群和大家一起交流学习。我创建了一个 Android AVB 讨论群,主要讨论 Android 设备的 AVB 验证问题。原创 2025-03-23 10:13:47 · 840 阅读 · 0 评论 -
Android AVB 分析(一)AVB 到底该如何学习?
关于程序,从宏观上看,程序由数据和围绕数据的一系列操作构成,所谓的操作主要是数据的增删改查,在类似 Android 这样的系统中,还包括配置和编译。对于 Android AVB 机制也不例外,AVB 的目的是验证启动中的每一个环节,包括:1. 芯片 ROM 验证 bootloader (芯片厂家和 OEM 完成);2. bootloader 验证 Android boot 和 vbmeta 等分区 (通过集成 libavb 完成);3. bootloader 将 verity 相关参数传递给原创 2025-03-23 16:17:45 · 1714 阅读 · 0 评论 -
Android AVB 分析(二)AVB 2.0 自述文档(注释提问版)
我一开始并没有打算要翻译这个 Android 自带的 AVB 2.0 自述文档,因为网上已经有很多篇这个文档了,简直不计其数。但是 AVB 自述文档又实在是太重要了,所以如果只推荐一篇文档的话,那肯定就是官方这篇。所以,我这里也不免俗,将 Android Verified Boot 2.0 最新的文档(2025/01/18) 通过 AI 翻译在这里,并附上我的部分解读,以及提出的一些问题原创 2025-04-04 14:04:43 · 1634 阅读 · 1 评论 -
Android AVB 分析(三)boot.img 到底包含了哪些数据?
在学习 Android Verify Boot 时,boot.img 都包含哪些数据,你有尝试亲自去分析 boot.img 吗?一个 boot 分区的镜像,为了满足 AVB 需要,需要进行如何处理?本文以实际操作的形式,带你查看 boot.img 镜像,包括 avbtool 的多个操作,以及如何如何手动解析 AVB Footer,如何使用 shell 命令验证带有 salt 的镜像 hash 值。原创 2024-12-15 02:01:04 · 1914 阅读 · 0 评论 -
Android AVB 分析(四)system.img 到底包含了哪些数据?
在上一篇《AVB 数据实战之 boot.img》中分析了使用 add_hash_footer 操作的 boot.img 镜像的格式。本篇进一步分析 add_hashtree_footer 操作的 system.img 镜像的格式。因此,system.img 都包含哪些数据,你有尝试亲自去分析 system.img 吗?一个 system 分区的镜像,为了满足 AVB 需要,需要进行如何处理?本文以实际操作的形式,带你查看 system.img 镜像,包括 avbtool 的多个操作,以及如何如何手动解析 A原创 2024-12-15 13:28:28 · 1156 阅读 · 0 评论 -
Android AVB 分析(五)哈希树到底是如何生成的?
Android 编译时会调用 avbtool 对 system, vendor, product 等镜像生成 hashtree,但这里的 hashtree 到底是如何生成的呢?本篇以 android-13.0.0_r41 中编译 aosp_panther 目标的 system 镜像为例。探究下 system.img 的 hashtree 到底是如何生成的。原创 2024-12-15 01:49:38 · 706 阅读 · 0 评论 -
Android AVB 分析(六)FEC 数据到底是如何生成的?
Android 编译时会调用 avbtool 对 system, vendor, product 等镜像生成 hashtree,但对于大的镜像,还会在 hashtree 之后生成用于纠错的 FEC 数据。那这个 FEC 到底是如何生成的呢?本篇以 android-13.0.0_r41 中编译 aosp_panther 目标的 system 镜像为例。探究下 system.img 的 FEC 数据到底是如何生成的。原创 2024-12-15 15:33:48 · 1384 阅读 · 0 评论 -
Android AVB 分析(七)VBMeta 数据是如何生成的?
前面几篇分析了 boot.img 和 system.img 的布局,以及 system.img 中的 hashtree 和 FEC 数据,对于最重要的 VBMeta 数据还没有涉及。本篇重点分析下 VBMeta 数据的生成以及结构。原创 2024-12-23 00:13:23 · 1676 阅读 · 0 评论 -
Android AVB 分析(八)VBMeta 数据解析和签名验证实战
在上一篇《AVB 的 VBMeta 数据是如何生成的?》中,我们分析了 VBMeta 数据时如何生成的,以及 VBMeta 的主要布局,但并没有进一步深入检查 VBMeta 的数据。本篇我们继续深入 VBMeta 数据,实战手动验证签名,解析各种描述符。原创 2024-12-23 00:17:02 · 2569 阅读 · 0 评论 -
Android AVB 分析(九)Auxiliary Data 包含了哪些描述符和公钥?
在上一篇《Android AVB 分析(八)VBMeta 数据解析和签名验证实战》中,对一个典型的 boot.img 的 VBMeta 进行了注释。对每一个 VBMeta 数据,分成 3 个部分: VBMeta 头部的 meta 数据 AvbVBMetaImageHeader,用于描述整个 VBMeta;VBMeta 的验证数据块 Authentication Data Block,主要用来检查 VBMeta 数据的哈希和签名;VBMeta 的辅助数据块 Auxiliary Data Block,包含了各种原创 2024-12-26 21:46:06 · 942 阅读 · 0 评论 -
Android AVB 分析(十)AVB 有哪些相关的源码?
前面的几篇内容主要分析 avbtool 工具源码,通过分析,我们看到了 avbtool 如何处理各种镜像 image,包括各种分区镜像的 AVB 数据是如何生成的,例如 hash, hashtree, FEC 和 VBMeta 等。因此,前面几篇的核心是 AVB 相关数据的生成~从本篇开始,逐步介绍 AVB 数据的使用,包括基于 boot 这类小分区镜像生成的 hash,以及基于 system 这类大分区镜像生成的 FEC 和 hashtree,这就必须涉及到大量的代码。原创 2025-01-04 23:16:41 · 1013 阅读 · 0 评论 -
Android AVB 分析(十一)bootloader 是如何进行 verify boot 检查的?
上一篇《Android AVB 分析(十)AVB 有哪些相关的源码?》中分析了 AVB 源码结构,本篇正式深入 AVB 源码,看看在 bootloader 中是如何使用 libavb 进行 verify boot 检查验证的。原创 2025-01-07 23:38:58 · 1563 阅读 · 0 评论 -
Android AVB 分析(十二)嵌入式设备安全中的 dm-verity 简介
上一篇 《Android AVB 分析(十一)bootloader 是如何进行 verify boot 检查的?》 分析了 bootloader 中是如何调用 libavb 函数库验证 vbmeta 和 boot 等分区的。接下来就打算写一篇介绍 dm-verity 原理的文章,然后再写一篇徒手 dm-verity 实践的文章,结果偶然发现了本篇的英文原版。写得太好,我觉得自己完全没有必要再写原理了。由于原文是英文,有些英语不太好的朋友不一定能完全理解。我花了点时间,结合 AI 将英语原文翻译成中文。原创 2025-01-09 20:40:06 · 2357 阅读 · 0 评论 -
Android AVB 分析(十三)dm-verity 设备是如何映射的?
在上一篇《Android AVB 分析(十二)嵌入式设备安全中的 dm-verity 简介》介绍 dm-verity 原理的时候,作者提供了一个 dm-verity 演示的例子。本篇我们基于 AOSP 源码 `android-13.0.0_r41` 实际编译生成的 Google Pixel 7 (“panther”) 设备的 system 分区镜像进行 dm-verity 设备验证实战。原创 2025-01-17 21:30:00 · 2016 阅读 · 0 评论 -
Android AVB 分析(十六)5 个例子彻底理解 FEC(Reed-Solomon) 的工作原理
关于 FEC 是如何工作的,一直是我 Android OTA 讨论群中的未解话题,大家基本上都不清楚 Android 上面的 FEC 是如何工作的,为什么在 OTA 升级的最后阶段,FEC 的编码计算会消耗大量的 IO 资源,并持续很长时间。接下来的几篇,我会从一个程序员的角度,演示基于里德所罗门编码的 FEC 到底是如何工作的。原创 2025-02-25 23:08:12 · 311 阅读 · 0 评论 -
Android AVB 分析(十七)程序员的FEC(Reed-Solomon)编码实战
上一篇《Android AVB 分析(十六)5个例子理解 FEC(Reed-Solomon) 的工作原理》中解释了 FEC 以及 RS(里德所罗门编码)的原理,并基于 Python 的 reedsolo 库提供了 5 个 RS 编码和解码的例子。通过对原始数据进行编码生成 FEC,以及对错误数据进行纠正还原数据。我相信如果您阅读了这篇文章,并亲自去做了这几个实验,那一定会对 RS 编码有一个比较切身的了解。也可能你还希望有一些补充,所以我个人觉得以程序员实践的角度为出发点的本篇同样可以让你有些收获。总体上,原创 2025-02-25 23:16:52 · 199 阅读 · 0 评论 -
Android AVB 分析(十八)Android 镜像中的 FEC 数据是如何计算出来的?
在《Android AVB 分析(六)FEC 数据到底是如何生成的?》中,我分析 Android 如何调用 avbtool 生成 FEC 数据的过程。实际上,avbtool 自己并不直接生成 FEC,而是进一步调用 fec 工具处理带有 HashTree 的镜像得到 FEC 数据。在本篇,我们将彻底解决关于 Android 镜像中 FEC 数据是如何生成的所有疑问。 1. Android 中用于生成 FEC(Reed-Solomen) 编码的 fec 工具介绍;2. Android 中 FEC 的参数;..原创 2025-03-02 13:59:06 · 202 阅读 · 0 评论 -
Android AVB 分析(十九)Android 镜像中的 FEC 到底能纠正多少错误?
我在 《Android AVB 分析(十三)dm-verity 设备是如何映射和纠错的?》中做过一个 system 分区镜像 system.img 进行 dm-verity 映射,加载和 FEC 纠错的例子。本文提供更多源于 Android 镜像数据破坏和使用 FEC 纠错的例子。原创 2025-03-23 00:53:47 · 151 阅读 · 0 评论 -
Android AVB 分析(二十)Android 官方 FEC 文档解读
在前两篇中详细介绍了 Android 镜像中的 FEC 数据是如何生成的。以及 Android 镜像中使用 FEC 对多达 6.63M 连续破坏数据的修复。但你可能还会觉得不过瘾,为啥采用 RS(255, 253) 编码,为啥不采用具有更强纠错的其它编码?采用 FEC 纠错的代价有多大?采用 FEC 对 Android 性能的影响有多大?为此,Android 在官方的 AVB 文档中补充了一篇文章链接:《严格强制执行的启动时验证与纠错》,这篇文章详细介绍了为什么采用 FEC 纠错,以及相应的评估和需要为此特原创 2025-03-03 00:01:38 · 247 阅读 · 0 评论