没有合适的资源?快使用搜索试试~ 我知道了~
首页Android启动时验证(AVB)
Android启动时验证(AVB)
1星 需积分: 43 49 下载量 5 浏览量
更新于2023-03-03
评论 1
收藏 441KB DOCX 举报
本文档介绍了Android启动时验证(AVB)的相关知识。 AVB(Android verify boot)是Android的一种安全机制,确保镜像数据的完整性和可靠性。
资源详情
资源评论
资源推荐
Android Verify Boot
Android 启动时验证
Table of contents
后台
启动时验证会尽力确保所有已执行代码均来自可信来源(通常是设备的
OEM),以防受到攻击或损坏。它可建立一条从受硬件保护的信任根到引导加
载程序,再到 boot 分区和其他已验证分区(包括 system、vendor和可选
的 oem分区)的完整信任链。在设备启动过程中,无论是在哪个阶段,都会在
进入下一个阶段之前先验证下一个阶段的完整性和真实性。
除了确保设备运行的是安全的 Android 版本外,启动时验证还会检查是否存在
内置了回滚保护的正确 Android 版本。回滚保护可确保设备只会更新到更高的
Android 版本,从而帮助避免可能的漏洞持续存在。
除了验证操作系统外,启动时验证还允许 Android 设备将其完整性状态传达给
用户。
背景
Android 4.4 增加了对启动时验证和 dm-verity内核功能的支持。这种验证功能
组合就是启动时验证 1。
以前的 Android 版本会在发现设备损坏时向用户发出警告,但仍然允许他们启
动设备;从 Android 7.0 开始,系统会严格强制执行启动时验证,从而使遭到
入侵的设备无法启动。Android 7.0 还增加了对前向纠错功能的支持,有助于更
可靠地防范非恶意数据损坏。
Android 8.0 及更高版本包含 Android 启动时验证 (AVB),AVB 是启动时验证
的一个参考实现,可与 Project Treble 配合使用。除了与 Treble 配合使用外,
AVB 还对分区脚本格式进行了标准化并增添了回滚保护功能。
设备状态
Table of contents
更改设备状态
信任根
o 可由用户设置的信任根
设备状态用于指明能够以多大的自由度将软件刷写到设备上,以及是否强制执
行验证。设备状态为 LOCKED和 UNLOCKED。状态为 LOCKED的设备禁止您将新
软件刷写到设备上,而状态为 UNLOCKED的设备允许您进行修改。
当设备开机后,引导加载程序会先检查设备状态是 LOCKED还是 UNLOCKED。如
果设备状态为 UNLOCKED,引导加载程序会向用户显示警告,然后继续启动,
即使加载的操作系统不是由信任根签名也是如此。
如果设备状态为 LOCKED,引导加载程序会完成验证启动中的步骤,验证该设备
的软件。只有在加载的操作系统是由信任根正确签名时,状态为 LOCKED的设
备才会启动。如需了解详情,请参阅启动流程。
更改设备状态
如需更改设备状态,请使用 fastboot flashing [unlock | lock]命令。
为了保护用户数据,只要设备状态发生变化,都会先清除 data 分区中的数据,
并会在删除数据之前要求用户确认。
当用户购买二手开发设备后,应该将设备状态从 UNLOCKED改为 LOCKED。锁定
设备后,只要没有警告,用户应该就能确信设备处于设备制造商开发的状态。
如果开发者出于开发目的希望停用设备上的验证功能,应该将设备状态从 LOCK
ED改为 UNLOCKED。
信任根
信任根是用于为设备上存储的 Android 副本签名的加密密钥。信任根的不公开
部分只有设备制造商才知道,用于为旨在分发的每个 Android 版本签名。信任
根的公开部分嵌入在设备中并存储在一个不会被篡改的位置(通常是只读存储
区)。
加载 Android 时,引导加载程序会使用信任根来验证真实性。如需详细了解此
流程,请参阅验证启动。设备可能具有多个引导加载程序,因此可能有多个加
密密钥。
可由用户设置的信任根
设备可以根据需要选择允许用户配置信任根(例如,公钥)。设备可以使用此
可由用户设置的信任根(而非内置的信任根)进行启动时验证。这样,用户既
可以安装并使用自定义的 Android 版本,又不会牺牲启动时验证这项安全改进
功能。
如果实现了可由用户设置的信任根,则应满足以下要求:
需要进行物理确认才能设置/清除可由用户设置的信任根。
可由用户设置的信任根只能由最终用户设置,而不能在出厂时或在最终用户获得设备之前
的任意中间点设置。
可由用户设置的信任根存储在防篡改的存储空间中。“防篡改”是指可以检测到 Android 数
据是否遭到篡改(例如,数据是否被覆盖或更改)。
如果设置了可由用户设置的信任根,则设备应该允许启动使用内置信任根或可由用户设置
的信任根签名的 Android 版本。
设备每次使用可由用户设置的信任根启动时,系统都应通知用户设备正在加载自定义的
Android 版本。如需查看警告屏幕示例,请参阅状态为 LOCKED并已设置自定义密钥的设
备。
实现可由用户设置的信任根的一种方法是,将虚拟分区设置为仅当设备处于 UN
LOCKED状态时才能刷写或清除。Google Pixel 2 设备使用此方法以及名
为 avb_custom_key的虚拟分区。avbtool extract_public_key命令会输
出此分区中数据的格式。以下示例展示了如何设置可由用户设置的信任根:
avbtool extract_public_key --key key.pem --output pkmd.bin
fastboot flash avb_custom_key pkmd.bin
可由用户设置的信任根可通过发出以下命令来清除:
fastboot erase avb_custom_key
验证启动
Table of contents
回滚保护
处理验证错误
对于要启动的 Android 版本中包含的所有可执行代码和数据,启动时验证均要
求在使用前以加密形式对其进行验证,其中包括内核(从 boot分区加载)、
设备树(从 dtbo分区加载)、system分区和 vendor分区等。
对于 boot和 dtbo这类仅读取一次的小分区,通常是通过将整个内容加载到内
存中,然后计算其哈希值来进行验证。接下来,系统会将计算出的哈希值与预
期哈希值进行比较。如果值不一致,则 Android 将无法加载。如需了解详情,
请参阅启动流程。
内存装不下的较大分区(如文件系统)可能会使用哈希树;在这种情况下,验
证流程会在将数据加载到内存的过程中持续进行。对于这种情况,系统会在运
行时计算哈希树的根哈希值,并将其与预期根哈希值进行比较。Android 包含
用于验证较大分区的 dm-verity 驱动程序。如果在某个时刻计算出的根哈希值
与预期根哈希值不一致,系统便不会使用相应数据,而且 Android 会出现错误。
如需了解详情,请参阅 dm-verity 损坏。
剩余28页未读,继续阅读
sj520yj
- 粉丝: 3
- 资源: 10
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- 2023年中国辣条食品行业创新及消费需求洞察报告.pptx
- 2023年半导体行业20强品牌.pptx
- 2023年全球电力行业评论.pptx
- 2023年全球网络安全现状-劳动力资源和网络运营的全球发展新态势.pptx
- 毕业设计-基于单片机的液体密度检测系统设计.doc
- 家用清扫机器人设计.doc
- 基于VB+数据库SQL的教师信息管理系统设计与实现 计算机专业设计范文模板参考资料.pdf
- 官塘驿林场林防火(资源监管)“空天地人”四位一体监测系统方案.doc
- 基于专利语义表征的技术预见方法及其应用.docx
- 浅谈电子商务的现状及发展趋势学习总结.doc
- 基于单片机的智能仓库温湿度控制系统 (2).pdf
- 基于SSM框架知识产权管理系统 (2).pdf
- 9年终工作总结新年计划PPT模板.pptx
- Hytera海能达CH04L01 说明书.pdf
- 数据中心运维操作标准及流程.pdf
- 报告模板 -成本分析与报告培训之三.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论1