Android安全启动学习(三):AVB校验的内容、怎么校验、AVB的作用

前面学习了
1、AVB是什么?校验安卓镜像的,完成整个安全启动的。
2、安卓的镜像有什么?主要就那三个大玩意:boot、recover、system。
3、有个 vbmeta.img还记得吗?bootloader验证vbmeta的签名**,再用vbmeta的key以及hash值验证dtbo/boot/system/vendor。

好了,这里开始AVB校验的学习。

1、校验的内容

1、校验的内容

对于要启动的 Android 版本中包含的所有可执行代码和数据,启动时验证均要求在使用前以加密形式对其进行验证。

包括内核(从 boot 分区加载)设备树(从 dtbo 分区加载)system 分区vendor 分区等。

2、怎么校验

2、怎么校验

对于 boot 和 dtbo 这类仅读取一次的小分区,通常是通过将整个内容加载到内存中,然后计算其哈希值来进行验证。接下来,系统会将计算出的哈希值与预期哈希值进行比较。如果值不一致,则 Android 将无法加载。如需了解详情,请参阅启动流程。

内存装不下的较大分区(如文件系统)可能会使用哈希树;在这种情况下,验证流程会在将数据加载到内存的过程中持续进行。(就是一部分一部分的)对于这种情况,系统会在运行时计算哈希树的根哈希值,并将其与预期根哈希值进行比较。Android 包含用于验证较大分区的 dm-verity 驱动程序。如果在某个时刻计算出的根哈希值与预期根哈希值不一致,系统便不会使用相应数据,而且 Android 会出现错误。

预期哈希值通常存储在每个经过验证的分区的末尾或开头专用分区中,或同时存储在以上两个位置。最重要的是,这些哈希值已由信任根以直接或间接的方式签名。

3、有什么用?

3、有什么用?

回滚保护

即使更新流程完全安全,攻击者仍可能会利用非永久性 Android 内核漏洞来手动安装更易受攻击的旧版 Android 系统,重新启动进入易受攻击的版本,然后通过该 Android 版本来安装永久性漏洞。

系统更新,修复了漏洞,但是我回滚到就版本用漏洞攻击,那不就GG。攻击者可通过这种漏洞永久拥有相应设备,并可以执行任何操作(包括停用更新)。

使用防篡改的存储空间来记录最新的 Android 版本,并在 Android 版本低于记录的版本时拒绝启动 Android。系统通常会针对每个分区来跟踪版本。

(防篡改的存储空间这里有没有想到我前几天写的RPMB—>一文简单了解RPMB

处理验证错误

验证在启动时(例如,如果在 boot 分区上计算出的哈希值与预期哈希值不一致)或运行时(例如,如果 dm-verity 在 system 分区上遇到验证错误)都可能会失败。

如果验证在启动时失败,设备则无法启动,而且最终用户需要执行相关步骤才能恢复设备使用。

**如果验证在运行时失败,**恢复流程就会更复杂一些。如果设备使用的是 dm-verity,则应在 restart 模式下进行配置。在 restart 模式下,如果遇到验证错误,设备会立即重启,并设置特定标记以表明错误原因。引导加载程序应该会注意到该标记,并将 dm-verity 切换为使用 I/O 错误 (eio) 模式并保持该模式,直到安装新的更新为止。

在 eio 模式下启动时,设备会显示错误屏幕,以通知用户系统已检测到损坏,而且设备可能无法正常使用。该屏幕会持续显示,直到用户将其关闭为止。在 eio 模式下,如果遇到验证错误,dm-verity 驱动程序不会重启设备,而是会返回 EIO 错误,并且相应的应用需要处理该错误。

这样做的目的是,让系统更新程序能够正常运行(以便安装不含损坏错误的新操作系统),或者让用户能够从设备上获取尽可能多的数据。安装新的操作系统后,引导加载程序会注意到新安装的操作系统,并切换回 restart 模式。

4、安全启动流程

4、安全启动流程

在这里插入图片描述
主要先关注出口和入口。这个过程是启动的。

校验不但有启动校验,还有运行时校验。

下面先来瞅瞅这个device-mapper-verity (dm-verity)是个啥玩意?

在RK3568平台上,绕过AVB校验进行固件烧录并获取root权限涉及到了解AVB的原理和如何通过烧写工具实现。AVBAndroid Verified Boot)是一种确保设备启动过程安全性的机制,它会对启动过程中加载的每个固件组件进行签名和校验。为了绕过AVB校验,通常需要解锁bootloader,并在烧录前禁用AVB功能。 参考资源链接:[RK3568 Android固件详解:烧录、结构与进系统指南](https://wenku.csdn.net/doc/6j2kgb6z0r?spm=1055.2569.3001.10343) 首先,你需要获取烧写工具,该工具通常随SDK提供,并且需要根据RK3568的官方文档进行配置。然后,你需要按照以下步骤操作: 1. 下载并安装RK3568的烧写工具SDK,并准备好固件文件,如boot.img、recovery.img、system.img等。 2. 进入bootloader模式,这通常通过同时按住电源键和音量减小键实现。 3. 使用烧写工具连接设备,并确保设备被正确识别。 4. 在烧写工具中加载固件文件。如果你希望绕过AVB校验,则需要使用特定的工具或命令来禁用AVB功能。这可能涉及到修改设备的配置文件,或者在命令行中添加特定的参数来禁用AVB。 5. 执行烧录操作。在烧写过程中,烧写工具会自动进行AVB校验。如果你已经正确禁用了AVB,那么烧录应该会成功进行,不会因为AVB的限制而失败。 6. 完成烧录后,设备会重启。如果固件中包含了root权限的修改,那么在首次启动时,你应该能够以root用户身份登录系统。 请注意,绕过AVB校验可能会使设备面临安全风险,因为AVB的一个主要目的是防止未授权的固件修改。此外,解锁bootloader可能会使你的设备失去保修服务,并可能影响设备的正常使用。因此,在进行这些操作之前,请确保你完全理解可能的后果,并且已经备份了所有重要数据。 为了更深入地理解RK3568的固件结构、烧录过程以及相关工具的使用,建议参考《RK3568 Android固件详解:烧录、结构与进系统指南》这份资料。该文档详细介绍了固件的各个组件以及如何进行安全的烧录操作,是进行RK3568固件操作的宝贵资源。 参考资源链接:[RK3568 Android固件详解:烧录、结构与进系统指南](https://wenku.csdn.net/doc/6j2kgb6z0r?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TrustZone_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值