AVB
文章平均质量分 85
TrustZone_
一个搞技术的读书人,妄图分享最干货的技术知识与世界运转的底层逻辑。公ZH:TrustZone
展开
-
AVB数据解析:Android verified boot 2.0 vbmeta 数据结构解析
验证启动(Verified Boot)是Android一个重要的安全功能,主要是为了访问启动镜像被篡改,提高系统的抗攻击能力,简单描述做法就是在启动过程中增加一条校验链。,而各家实际做法和研发能力不尽相同,为了让设备厂商更方便的引入 Verified boot 功能,,好处是既保证了基于该框架开发的verified boot 功能能够满足 CDD 要求,也保留了各家 OEM 定制启动校验流程的弹性。这个弹性体现在哪里?原创 2023-03-01 21:39:36 · 3025 阅读 · 0 评论 -
一文搞懂AVB的使用
在看本文之前,请乖乖的答应我去看这个专利最开始的几篇,先知道一下AVB是什么东西,用在什么场景。再来看这个是怎么使用的。没有规律的撸撸AVB代码:AVB中CPP到C今天有点头晕,老早就溜了,回来闲着无事,便记录一下最近学习AVB的东西。之前在这个专栏里写了很多的东西,也转载记录了一些前辈的优秀博客,这里自己最近也在看代码,于是就再来梳理一下。之前也有涉及到源码,或者有涉及到应用,总是将两者拆分开的。于是这里记录一个小点,AVB怎么用。你要去跟踪的时候你的打印应该加在哪里?原创 2022-12-26 22:29:32 · 4282 阅读 · 0 评论 -
AVB(二):DTO 支持
设备树叠加层 (DTO) 扩展了现有的扁平化设备树 (FDT) 实现,让用户空间可以通过加载用于修改原始数据的额外叠加层 FDT,在运行时修改内核中的初始设备树数据。Android 不要求在运行时从用户空间更新 DT blob,而是建议供应商借助 libfdt 或 libufdt 在引导加载程序中添加设备树补丁程序。Android 对 DTO 的支持因 Android 版本而异:大多数 Android 设备都会在构建时将 DT blob 附加到内核,而引导加载程序会从内核加载 blob。不过,由于 DT b原创 2022-11-27 22:04:52 · 411 阅读 · 0 评论 -
AVB(一):提前装载分区
支持 Treble 的设备必须启用第一阶段装载,以确保 init 可以加载分布在 system 和 vendor 分区的安全增强型 (SELinux) 政策 Fragment。此访问权限还可实现在内核启动后尽快加载内核模块。如需执行提前装载,Android 必须有权访问模块所在的文件系统。Android 8.0 及更高版本支持在 init 的第一阶段(即初始化 SElinux 之前)装载 /system、/vendor 或 /odm。原创 2022-11-27 21:54:08 · 2242 阅读 · 0 评论 -
安卓的分区一点有用知识:super、lpunpack、lpdump
我们知道这个安卓的镜像分区有很多个。那么这个文章要介绍什么呢?三个点:一是现在的android支持动态分区,很多的东西都被放到super分区里面了,这个应该是可以配置的。然后super里面有比如system、vendor这种比较大的分区。那么就有对应的vbmeta_system、vbmeta_vendor分区去验证。现在只有两个知识点了。原创 2022-11-27 12:47:41 · 4616 阅读 · 2 评论 -
AVB校验微观版本:android avb(Android Verified Boot)验证
本文是AVB2.0文档的翻译VBMeta Digest是所有VBMeta结构的Digest,包括根结构(例如在VBMeta分区中)和链分区中的所有VBMeta结构。这个 Digest可以在构建时使用avbtool calculate_vbmeta_digest计算,也可以在运行时使用avb_slot_verify_data_calculate_vbmeta_digest()函数计算,它在内核命令行上也设置为androidboot.vbmeta。要了解详细信息,请参阅avb_slot_verify()文档。原创 2022-11-25 20:28:02 · 3762 阅读 · 0 评论 -
Android P中的AVB校验(二)
Android O/P 版本以来,谷歌加入了A/B system的特性,此时ramdisk和system是一起放在同一个system.img镜像中的。而系统起来之后也就不存在system分区了,而是直接把system镜像挂载到/根目录上。那么这个操作是怎么进行的呢?system.img默认是需要使能dm-verity来挂载的,那么这就涉及到如何使能dm-verity来挂载/根分区。还有一个重要的点,如果我们想要禁用dm-verity功能又要如何操作?这又涉及更深的层次,如果。原创 2022-11-25 16:30:29 · 2685 阅读 · 6 评论 -
Android P中的AVB校验(一)
其实对于这篇文章来说,Android P已经是时间过了,前辈的文章也是18年的。不过技术还是相通的,不过也是变通的。原文链接:https://blog.csdn.net/rikeyone/article/details/83345340。原创 2022-11-25 15:33:25 · 2765 阅读 · 0 评论 -
Android AVB的校验宏观的两个阶段
Android Verified Boot上有两个阶段,bootloader和init,每个阶段校验的内容都是不一样的。当然这个也不是绝对的,我觉得这个AVB的校验逻辑是可以用在很多的方面的,根据自己的启动方案可以设置很多的校验逻辑,这里就不展开了,说多了就不安全了。这里暂时分为两个阶段:bootloader和initAVB校验 分成两个阶段bootloader 阶段 AVB 校验以下镜像init 阶段 AVB 校验以下镜像。原创 2022-11-25 12:45:14 · 2529 阅读 · 1 评论 -
AVB源码学习(八):AVB2.0-AVB移植\公钥转换\avbtool
最后是关于AVB基础额外的文档,前辈的文档我还意犹未尽,感谢!!!android AVB2.0 AVB移植经验AVB中将公钥转换成字符数组头文件的实现AVB Digest转换成ASCII码AVB2 avbtool.py脚本常用命令前辈的AVB专栏原创 2022-11-25 11:00:54 · 868 阅读 · 0 评论 -
AVB源码学习(七):AVB2.0-Super动态分区介绍
Super分区,也叫dynamic动态分区,动态分区是 Android 的用户空间分区系统,在Android R版本开始引入。android引入了super动态分区的设计,目的是为了解决像system,vendor等分区size大小不能动态调整的问题。例如物理分区表中配置固定size后,如果软件版本对system,vendor分区size需要频繁调整时,,使用起来不是很便利。原创 2022-11-25 10:58:40 · 1684 阅读 · 0 评论 -
AVB源码学习(六):AVB2.0 Device Mapper和Dm verity详解
Device mapper是LINUX提供的一种逻辑设备到物理设备的映射框架,中间传递消息的是用户自定义的target driver插件,用户可以编写好具体的IO请求的target driver就行,用户层可以使用ioctl命令的方式向底层进行通讯。target driver主要定义对IO请求的处理规则,在device mapper中对target driver的操作已定义好了统一的接口,可实现几个常见的方法就行。同时device mapper提供了一种底层消息上报的机制。原创 2022-11-25 10:58:18 · 1735 阅读 · 0 评论 -
Android源码学习(五):AVB2.0-libavb库介绍2
上一篇的末尾我们说好好分析一下avb_vbmeta_image_verify函数,不过在这之前先让我们来了解一些AVB之镜像的签名及验证签名详解。原创 2022-11-25 10:57:18 · 1021 阅读 · 0 评论 -
AVB源码学习(四):AVB2.0-libavb库介绍1
首先要介绍一下本篇文章的两个目标,带着这两个目标我们来分析一下libavb库的实现。1、android AVB是如何完成verify校验这项任务的?2、采用了什么样的设计来完成verify校验任务?上篇内容之一:“InitAvbHandle:AVB调用exterlan/avb/libavb库完成分区的校验”原创 2022-11-25 10:56:26 · 1452 阅读 · 2 评论 -
AVB源码学习(三):AVB2.0 Init阶段安全启动流程
在引导boot kernel后进入init,主要是在init的first stage(第一阶段)进行AVB校验的。在android需要挂载的分区挂载前执行校验。需要校验的分区是在fstab中配置的,详细配置请查看AVB编译配置。我们整体上了解一下Android是怎么设计把AVB校验流程穿插进来的,重点是理解google的设计思想和理解它的巧妙之处。原创 2022-11-24 00:15:23 · 1951 阅读 · 0 评论 -
AVB源码学习(二):Uboot阶段AVB2.0校验流程
一般OEM厂商最后产线出去的手机,可能会对设备进行上锁操作。上锁后,这台设备后续。因为google对UBOOT或者UEFI阶段的AVB校验是没有标准的,各厂家都可以进行定制。虽然没有标准,但是google给出了建议的启动流程,各芯片厂家一般都会向这个靠齐原创 2022-11-23 23:33:20 · 1845 阅读 · 0 评论 -
AVB源码学习(一):AVB2.0工作原理及编译配置
在这个AVB源码系列学习之前,还是重新看一下这个AVB到底是什么?AVB是为什么诞生?1、设备中的系统分区,可以通过fastboot和烧录工具进行替换掉,替换成功后,可以正常开机,这种能接受么?2、在设备运行过程中,破坏或者篡改一部分数据,系统能知道被篡改了么?3、google发布了security patch安全补丁版本,明确告知某个版本有缺陷,OEM厂商仍然使用有缺陷的版本 或者被攻击者使用了有缺陷的版本,系统能检查的出来么?4、boot镜像的head头和内容被篡改了,系统能检查的出来么?原创 2022-11-23 21:39:03 · 4422 阅读 · 0 评论 -
Android安全启动学习(五):Android Verified Boot 2.0
AVB2.0被用于启动引导,此用法添加一个“vbmeta.img”镜像。用于,vbmeta.img包含应vbmeta.img包含用于验证的public key,但只有bootloader验证过vbmeta.img才会可信,就好比认证一样,包含可信public key和签名。因此,我们在AVB中有两个重要key,一个验证vbmeta.img的OEM key,一个验证其他分区(boot/system/vendor)的verity key。当然可以使用OEM key作为verity key。原创 2022-10-11 05:56:34 · 6504 阅读 · 0 评论 -
Android安全启动学习(四):device-mapper-verity (dm-verity)和哈希树
dm-verity是内核子系统的Device Mapper中的一个子模块,所以在介绍dm-verity之前先要介绍一下Device Mapper的基础知识。Device Mapper为Linux内核提供了一个从逻辑设备到物理设备的映射框架,通过它,用户可以定制资源的管理策略。当前Linux中的逻辑卷管理器如LVM2(Linux Volume Manager 2)、EVMS(Enterprise Volume Mageagement System)、dmraid等都是基于该机制实现的。原创 2022-10-11 05:02:00 · 3410 阅读 · 0 评论 -
Android安全启动学习(三):AVB校验的内容、怎么校验、AVB的作用
前面学习了1、AVB是什么?校验安卓镜像的,完成整个安全启动的。2、安卓的镜像有什么?主要就那三个大玩意:boot、recover、system。3、有个 vbmeta.img还记得吗?bootloader验证vbmeta的签名**,再用vbmeta的key以及hash值验证dtbo/boot/system/vendor。好了,这里开始AVB校验的学习。1、校验的内容。原创 2022-10-11 01:40:36 · 10782 阅读 · 0 评论 -
Android安全启动学习(二):android镜像有什么?
上一篇对AVB的功能有所认识,这里在知道AVB怎么工作之前,先来看看Android镜像有什么内容?竟然有这么多分区,具体功能是干啥的?cache.img(缓存镜像):用于的临时数据。vendor.img:包含所有不可分发给 Android 开源项目 (AOSP) 的二进制文件。如果没有,则可以省略此分区。misc.img:misc 分区供,存储空间不能小于 4KB。userdata.img:userdata 分区包,包括自定义数据。,原创 2022-10-11 01:03:01 · 3199 阅读 · 0 评论 -
Android安全启动学习(一):AVB校验是什么?
最近老师让学习一下AVB,这玩意很难找到资料。只有网上搜索一些零碎的资料和博客。最多的资料就是官网的。这里来整理学习一下AVB的相关资料。原创 2022-10-11 00:27:54 · 3952 阅读 · 0 评论
分享