最近老师让学习一下AVB,这玩意很难找到资料。只有网上搜索一些零碎的资料和博客。最多的资料就是官网的。这里来整理学习一下AVB的相关资料。
1、AVB是什么?
如果你知道安全启动ATF,那么到这里肯定是能接上的,如果没有那也不影响。
我们的ATF在安全启动流程的时候走到了BL33,BL33一般就是bootloder(u-boot、BLOB、Redboot等)。到下一步就是要通过BL33去加载kernel。
这里需要讲一下android与linux的关系。
(盗图来自前面的链接)Android的kernel采用的还是Linux kernel,但很明显Android加入了自己的东西,对Linux进行了一些修改。
所以回到主题就是加载android镜像就是加载linux kernel。所以难怪有很多的android启动流程有这个图:
但是你说前面安全启动整了那么长一套,这里就松懈了肯定不行。所以我把AVB看做是ATF安全启动的延续。
所以AVB本质上还是从bootloader开始,去实现加载完整正确的系统镜像。
2、小结
上面讲诉的有点乱,小结一下。
启动时验证会尽力确保所有已执行代码均来自可信来源(通常是设备的原始设备制造商 [OEM]),以防受到攻击或损坏。它可建立一条从受硬件保护的信任根到引导加载程序,再到 boot 分区和其他已验证分区(包括 system、vendor 和可选的 oem 分区)的完整信任链。
在设备启动过程中,无论是在哪个阶段,都会在进入下一个阶段之前先验证下一个阶段的完整性和真实性。
这个是不是就是牵扯到COT,前面从受硬件保护的信任根到引导加载程序这个部分就是ATF或者android官网的trusty TEE。了解一下。
AVB的关键在于第二个部分 boot 分区和其他已验证分区。
对于要启动的 Android 版本中包含的所有可执行代码和数据,启动时验证均要求在使用前以加密形式对其进行验证,其中包括内核(从 boot 分区加载)、设备树(从 dtbo 分区加载)、system 分区和 vendor 分区等。
下一篇先来看看android镜像到底有什么,再来看看AVB的具体工作流程。