标签: AVB; Android Verified Boot ;Android;安卓启动保护
Android Verified Boot (AVB) 的原理和作用
原理
Android Verified Boot (AVB) 是 Android 平台上的一项安全特性,旨在确保设备启动过程中加载的每个阶段的完整性和真实性。AVB 的工作原理可以分为以下几个关键步骤:
-
签名与验证:
- 每个系统映像(如
boot.img
,system.img
等)在构建时都会生成一个包含哈希值和签名信息的vbmeta.img
文件。这个文件由私钥签名,公钥存储在设备的安全区域中,用于在启动时验证这些映像。 - 当设备启动时,启动加载程序(bootloader)使用存储的公钥来验证
vbmeta.img
的签名。验证通过后,继续验证包含在vbmeta.img
中的每个分区的哈希值和哈希树描述符。
- 每个系统映像(如
-
哈希树(Hashtree)与 dm-verity:
- 为了保证文件系统的完整性,AVB 使用哈希树结构(Merkle Tree)来验证文件系统的每个块。这一机制被称为
dm-verity
。 - 哈希树的根哈希(root hash)存储在
vbmeta.img
中,并在启动时通过公钥签名验证。这确保了文件系统在运行过程中没有被篡改。
- 为了保证文件系统的完整性,AVB 使用哈希树结构(Merkle Tree)来验证文件系统的每个块。这一机制被称为
-
回滚保护(Rollback Protection):
- AVB 包含回滚保护机制,以防止设备降级到存在已知漏洞的旧版本软件。每个
vbmeta
结构包含一个回滚索引(rollback index),设备会存储最后一次成功启动的最高索引值。如果新镜像的索引值低于已存储的值,启动将失败。
- AVB 包含回滚保护机制,以防止设备降级到存在已知漏洞的旧版本软件。每个
作用
AVB 的主要作用是保护设备启动过程中的完整性和真实性,防止加载未经授权或被篡改的系统映像。具体来说:
-
数据完整性保护:
- 通过验证每个系统映像的哈希值,确保这些映像在构建后没有被篡改。
- 使用
dm-verity
验证文件系统的每个块,防止运行时的数据篡改。
-
防止恶意软件:
- 确保只有经过签名验证的代码能够在设备启动过程中执行,从而防止恶意软件在启动过程中注入或替换系统组件。
-
回滚保护:
- 通过回滚索引机制,防止设备降级到存在已知漏洞的旧版本软件,增强设备的整体安全性。
如何保护数据
AVB 通过以下机制保护数据:
-
使用公钥基础设施(PKI)进行签名和验证:
- 每个系统映像的签名由私钥生成,设备启动时使用公钥进行验证。公钥存储在设备的安全区域中,防止篡改。
-
哈希树与 dm-verity:
dm-verity
机制通过哈希树验证文件系统的每个块,确保在设备运行时文件系统的完整性。
-
回滚保护:
- 设备存储了每个分区的最高回滚索引值,防止设备回滚到不安全的旧版本软件。
-
vbmeta.img 文件:
- 包含所有分区的哈希值和签名信息,是验证其他分区的核心。
通过这些机制,AVB 提供了一种强大的数据保护手段,确保 Android 设备从启动到运行的每个阶段都受到保护。
参考:
Android AVB官方原文:
https://android.googlesource.com/platform/external/avb/+/master/README.md
作者简介:https://shimo.im/docs/rp3OVwxle2fJn7Am/
上海徐汇
2024年6月6日