android AVB
时间: 2025-01-22 16:09:39 浏览: 62
### Android Verified Boot (AVB)介绍
Android Verified Boot (AVB) 是一种增强设备安全性的机制,旨在防止未经授权修改启动过程中的关键组件。通过构建一个信任链来确保从最底层硬件到操作系统各个部分均未被篡改。这一链条依次经过 ROM code、BootLoader、boot image 及至 System 和 Vendor 分区[^1]。
### AVB工作原理
在启动流程里,每个阶段都会加载并验证下一个阶段的数据完整性与真实性:
- **ROM Code**: 设备上不可更改的第一段执行代码负责初始化基本硬件设置,并引导进入 bootloader。
- **Bootloader**: 验证 `boot.img` 文件(内含 Kernel Image),此文件包含了用于后续分区验证所需的公钥——verity_key,该密钥存储于 ramdisk 中而后者被打包进了 boot.img 之内[^2]。
- **Boot Image & Hash Tree Verification**: 当到达系统和供应商分区间时,则利用之前由 bootloader 解析出来的 verity metadata 来检验这些区域内的 hash tree 结构,从而确认其内容无损且未经非法改动。
```python
def verify_partition(partition_data, partition_hash_tree):
"""
Verify the integrity of a given partition using its associated hash tree.
:param bytes partition_data: Raw data from the partition to be checked.
:param list partition_hash_tree: List representing the Merkle tree hashes for verification.
:return bool: True if valid, False otherwise.
"""
calculated_hashes = compute_merkle_tree(partition_data)
return all(a == b for a, b in zip(calculated_hashes, partition_hash_tree))
```
对于采用 A/B 更新模式的系统而言,在版本切换期间同样遵循上述原则以保障新旧状态间的平滑过渡以及安全性。
### 实现方式
实际部署中,AVB 主要依赖如下几个方面来达成目标:
- **vbmeta Partition**: 自 Android Pie 开始引入的新概念,它保存着关于其他受保护分区的信息摘要及其签名信息;这使得即使当 primary slot 的数据遭到破坏或更新失败时也能借助 secondary slot 完成恢复操作而不影响整个验证逻辑的有效性。
- **Public Key Infrastructure(PKI)**: 整个过程中涉及到多个层次上的加密算法应用,比如 RSA 或者 ECDSA 等非对称密码技术用来签署重要资料,保证只有持有对应私钥的一方才能创建有效的签名,进而维护了整体架构的安全等级。
阅读全文
相关推荐


















