首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android在引导序列中验证了引导。

Android在引导序列中验证了引导。
EN

Security用户
提问于 2017-06-21 13:18:35
回答 2查看 1.9K关注 0票数 9

我对在Android中了解经过验证的引导过程很感兴趣,但是我无法找到关于这个过程的一些特性的见解。

从我到目前为止收集到的信息来看,在Android设备中,使用dm-verity支持经过验证的引导过程,它检查要加载的操作系统所在的内存块的签名散列。此外,目前大多数(如果不是全部)基于ARM处理器的设备都有TrustZone特性,用于创建所谓的“安全世界”和“不安全世界”。

我想了解的是,这一切是如何结束的:

  1. 在Android引导过程中,dm-verity何时运行?
  2. dm-verity是从“安全世界”中运行的吗?如果是这样的话,如何验证“安全世界”操作系统加载?
  3. 在引导过程中,何时是第一次访问/激活TrustZone“world”特性?
EN

回答 2

Security用户

发布于 2020-12-22 03:44:45

AVB由引导程序执行,dm-verity由内核执行.两者都在android引导流中连续运行。

在工厂:

  1. OEM构建/system/vendor产品ODM分区的哈希树。哈希树不是为/boot/vbmeta分区构造的。
  2. 在vbmeta分区中,OEM编写引导映像的散列描述符,其中包含引导映像的哈希。OEM还编写其他分区的散列描述符,其中包含根哈希和哈希树的盐分。
  3. OEM使用OEM私钥对vbmeta进行签名,并将其签名附加到vbmeta图像本身。OEM公钥是在构建时用android引导程序(ABL)硬编码的。

在靴子上:

  1. ABL使用OEM公钥验证vbmeta上的签名。
  2. ABL在加载时计算引导映像的散列,并使用存储在vbmeta中的哈希进行验证。
  3. 在boot.img (包含内核)被验证后,内核被加载,内核启动dm-verity。
  4. 内核重新构造除/boot之外的每个分区的散列树,并将它们的根哈希与存储在vbmeta中的根哈希进行比较。
  5. 如果所有哈希匹配,设备启动锁定屏幕。

链分区用于委托权限,如企业设备和载体设备的情况。如果企业希望包含其他分区,则将用于链分区的vbmeta存储在脚注中,或者如果存在多个链分区,则可以创建一个单独的vbmeta_enterprise来验证所有链分区。它由企业的私钥(key1)签名。公钥(key1_pub)随后存储在原始vbmeta分区中。通过使用链分区的新描述符更新原始vbmeta映像和删除公钥key1_pub,可以很容易地撤销此委托权限。

AVB的信任链是从ABL开始的,因此可以用自己的密钥替换OEM公钥,并通过遵循OEM所做的相同过程重新签名vbmeta。为了防止反洗钱被篡改,生产SoCs实施了secure-boot。为了支持安全引导,生产设备的eFuse被吹到工厂,而且它是不可逆转的。快速引导unlockunlock_critical命令不会关闭安全引导。即使是一个快速引导命令,也会破坏原型设备的eFuse,从而永久地启用SoC的安全引导。

代码语言:javascript
运行
复制
fastboot oem SecureBoot EnableFuse

在Qualcomm Snap巨龙SoCs中,ABL由X力求引导加载程序( XBL )进行验证,XBL由初级引导加载程序(PBL)验证。PBL被刻录在CPU芯片上,其公钥存储在eFUSE中,从而使其具有抗篡改能力。可信执行环境(TEE)不经AVB验证。它是由XBL_SEC验证的,这是另一个由PBL验证的引导加载器。TEE图像是由芯片制造商和OEM双签名的。在XBL加载ABL的同时,TEE被XBL_SEC唤醒,如图所示。

安卓验证了引导2.0

安卓验证了引导2.0 vbmeta数据结构分析

高通安全引导链分析

高通信托链

安全引导和图像认证 (pdf)

票数 3
EN

Security用户

发布于 2020-12-17 16:12:12

我知道这是个老生常谈的问题,但无论如何,这里有一些答案,因为官方文件缺乏许多重要的细节:

到AVB的文档可以找到在Google开发者网站上和官方代码存储库

在Android引导过程中,dm-verity何时运行?

dm-真实性是一个内核扩展,在挂载分区和运行时运行。但是,Android验证的启动进程在内核加载之前就启动了。更准确地说,设备的ROM引导加载程序在加载内核(boot.img)之前验证它的完整性,从而防止内核损坏。一旦内核被加载,dm-verity就会生效。您应该知道,每个供应商都自定义了验证引导的实现。例如,华为三星使用它们自己的实现。

dm-真实性是从“安全世界”中运行的吗?如果是这样的话,如何验证“安全世界”操作系统加载?

如前所述,dm-verity是一个内核扩展,在内核级别上运行,而Arm TrustZone是您的CPU的安全扩展,并在内核加载之前运行。TrustZone在硬件级别上运行,像三星诺克斯这样的产品使用Arm TrustZone进行实时内核验证。dm-verity本身不需要在TrustZone中运行,但是dm-verity的自定义实现可能使用TrustZone进行加密操作。例如,Samsungs使用TrustZone进行密钥认证。

TrustZone并不是安卓验证引导系统的直接一部分,因为它是一种商业产品。它被三星等公司用于在启动阶段和运行时对内核进行额外的验证。这不是必要的,也不是强制性的Android验证引导。AVB的一般引导过程可以概括如下:

  1. ROM引导加载程序验证可闪光引导加载器的签名。
  2. 可闪光引导加载程序验证vbmeta.img、boot.img和其他分区的签名,并加载内核。可选:在加载内核或初始化特定于设备的TEE OS之前,进行特定于供应商的检查。
  3. 内核是从boot.img加载的,dm-verity在装入时和运行时检查分区的完整性。

在引导过程中,何时是第一次访问/激活TrustZone“world”特性?

正如前面提到的,根据维基百科的说法,TrustZone是封闭的源,我们不知道在引导过程中什么时候它是可用的。但是,通常可信的执行环境是在操作系统之前加载的。例如,华为在加载可闪光引导加载程序之后加载它。在这种情况下,每个组件只是验证下一个组件的完整性,并构建一个密钥链。

票数 1
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/162457

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档