Android AVB 分析专栏文章导读

Android AVB 分析专栏文章导读


如果你希望从较高层次快速了解 Android AVB 原理,网上任何一篇介绍 AVB 的文章都可以满足。

本《Android AVB 分析》专栏以实战+原理的方式,展示 Android AVB 的实现和工作方式,中间通过多个实验手动验证数据,以实战的方式展示包括 hash 计算, hashtree 计算, FEC 计算,镜像格式和签名验证, dm-verity 设备的创建,使用 FEC 纠错等操作,让你对 Android AVB 有一个较为深入和全面的把握,适合一线工作的工程师,以及希望学习 AVB 原理的学生。

整个专栏前面 10 篇免费公开,10 篇后较为深入的介绍 dm-verity 的原理和 FEC 功能,如果您需要深入 dm-verity 以及 FEC 纠错等,可以考虑订阅本专栏付费部分。

不论有没有订阅付费专栏,都欢迎加我微信拉你进 AVB 讨论群和大家一起讨论,一群人讨论学习远比一个人闷头研究轻松很多,详细练习方式见文末。

1. 快速入口

2. 简要介绍

  • Android AVB 挑战,100 个问题你能回答几个?
    • 链接:https://blog.csdn.net/guyongqiangx/article/details/146452369
    • 内容:基于 AVB 基础原理,源码相关,镜像布局,相关工具,镜像数据的签名和验证,dm-verity 的底层机制, FEC 纠错原理和能力,AVB 的打开和关闭,Rollback 原理,数据存储位置等 10 个方面提出了 100 道题,用来检验对 AVB 的熟悉程度。
  • Android AVB 分析(一)AVB 到底该如何学习?
    • 链接:https://blog.csdn.net/guyongqiangx/article/details/146457755
    • 内容:
      • AVB 是什么?
      • AVB 包含了哪些东西?
      • AVB 该怎么学?
      • AVB 学习参考资料推荐
  • Android AVB 分析(二)AVB 2.0 自述文档(注释提问版)
    • https://blog.csdn.net/guyongqiangx/article/details/146997926
    • 内容:
      • Android AVB 自带的 README.md 文档中文翻译
      • 基于 README.md 文档的解释,强哥的注释和提出的问题
  • Android AVB 分析(三)boot.img 到底包含了哪些数据?
    • 链接:https://blog.csdn.net/guyongqiangx/article/details/144479713
    • 内容:
      • 如何编译 AOSP 参考平台的源码,以及收集 avbtool 日志
      • 分析 Android 编译中 avbtool 对 boot.img 所做的操作
      • 使用 avbtool 查看 boot.img 信息
      • 详细分析 boot.img 的镜像文件结构
      • 手动查看 boot.img 的 AVB Footer 和 VBMeta 数据
      • 手动验证 boot.img 带 Salt 的哈希值(Digest)
  • Android AVB 分析(四)system.img 到底包含了哪些数据?
    • 链接:https://blog.csdn.net/guyongqiangx/article/details/144486051
    • 内容:
      • 分析 Android 编译中 avbtool 对 system.img 所做的操作
      • 使用 avbtool 查看 system.img 信息
      • 详细分析 system.img 的镜像文件结构
      • 手动查看 system.img 的 AVB Footer
      • 手动验证 system.img 带 Salt 的 hashtree 数据生成
      • 手动查看 system.img 的 FEC 数据
      • 手动查看 system.img 的 VBMeta 数据
  • Android AVB 分析(五)哈希树到底是如何生成的?
    • 链接:https://blog.csdn.net/guyongqiangx/article/details/144479669
    • 内容:
      • 使用 avbtool 给 system.img 添加 hashtree 数据
      • 使用 avbtool 查看 system.img 信息
      • system.img 的 hashtree 数据生成过程分析
      • system.img 的 hashtree 数据布局计算
      • 手动验证 system.img 的 hashtree 数据
  • Android AVB 分析(六)FEC 数据到底是如何生成的?
    • 链接:https://blog.csdn.net/guyongqiangx/article/details/144487615
    • 内容:
      • 使用 fec 工具预估 system.img 的 FEC 数据大小
      • 使用 fec 工具生成 system.img 的 FEC 数据
      • 使用 avbtool 解析 FEC 数据信息
      • 手动验证 system.img 镜像的 FEC 数据
      • 手动解析 FEC Footer
  • Android AVB 分析(七)VBMeta 数据是如何生成的?
    • 链接:https://blog.csdn.net/guyongqiangx/article/details/144655275
    • 内容:
      • boot.img 镜像中的 VBMeta 数据生成过程分析
      • system.img 镜像中的 VBMeta 数据生成过程分析
      • vbmeta.img 镜像中的 VBMeta 数据生成过程分析
      • AvbVBMetaHeader 数据解析和布局总结
  • Android AVB 分析(八)VBMeta 数据解析和签名验证实战
    • 链接:https://blog.csdn.net/guyongqiangx/article/details/144655337
    • 内容:
      • 手动解析查看 boot.img 的 AVB Footer
      • 手动标注 boot.img 的 VBMeta 数据
      • 手动验证 boot.img 的 VBMeta 数据
      • 手动提取 vbmeta 中的公钥数据
      • 使用手动提取的公钥数据验证 vbmeta 签名
  • Android AVB 分析(九)Auxiliary Data 包含了哪些描述符和公钥?
    • 链接:https://blog.csdn.net/guyongqiangx/article/details/144753748
    • 内容:
      • 介绍 Auxiliary Data Block 构成
      • VBMeta 中的 5 种描述符总结
        • AvbHashDescriptor
        • AvbHashtreeDescriptor
        • AvbChainPartitionDescriptor
        • AvbPropertyDescriptor
        • AvbKernelCmdlineDescriptor
      • 公钥数据分析
        • AvbRSAPublicKeyHeader
  • Android AVB 分析(十)AVB 有哪些相关的源码?
    • 链接:https://blog.csdn.net/guyongqiangx/article/details/144936814
    • 内容:
      • libavb 目录结构
      • 关于 AFTL的解释
      • Makefile 分析
      • libavb 库各文件功能和用途分析
      • libavb_user 库文件功能和用途
      • libavb 和 libavb_user 库的引用
      • libfs_avb 源码
      • AVB 其它相关代码
  • Android AVB 分析(十一)bootloader 是如何进行 verify boot 检查的?
    • 链接:https://blog.csdn.net/guyongqiangx/article/details/144995975
    • 内容:
      • u-boot 中 AVB 相关的 verify boot 命令
      • avb_slot_verify 函数分析
      • load_and_verify_vbmeta 函数分析
      • libavb 中其它重要的函数分析
      • 特别说明
        • vbmeta 分区和 vbmeta 数据
        • 为什么要使用 validate_vbmeta_public_key() 验证公钥?
        • 为什么要用 rollback index 去防止回滚?
  • Android AVB 分析(十二)嵌入式设备安全中的 dm-verity 简介
    • 链接:https://blog.csdn.net/guyongqiangx/article/details/145042060
    • 内容:
      • 关于 dm-verity
      • dm-verity 是如何工作的?
      • 一个简单演示 dm-verity 工作原理的例子
      • hashtree 是如何工作的?
      • dm-verity 中数据损坏
      • 为什么不使用 dm-verity?
      • dm-verity 的替代方案
        • Dm-crypt
        • IMA/EVM
        • Fs-verity
      • 补充阅读
  • Android AVB 分析(十三)dm-verity 设备是如何映射的?
    • 链接:https://blog.csdn.net/guyongqiangx/article/details/145211172
    • 内容:
      • 生成并验证 system.img 的 hashtree 和 FEC 数据
      • 基本的 dm-verity 映射实战
      • 破坏后的 dm-verity 映射实战
      • 带 FEC 的 dm-verity 映射实战
      • Android 的 system 分区 dm-verity 映射实战
  • Android AVB 分析(十四)fs_libavb 是做什么用的?
    • 链接:https://blog.csdn.net/guyongqiangx/article/details/147189681
    • 内容:
      • 计划基于 fs_libavb 代码进行详细分析,内容待完成
  • Android AVB 分析(十五)system 分区是如何挂载为 dm-verity 设备的?
    • 链接:https://blog.csdn.net/guyongqiangx/article/details/147189715
    • 内容:
      • 计划跟踪 Android 启动时 system 分区的挂载过程,内容待完成
  • Android AVB 分析(十六)5 个例子彻底理解 FEC(Reed-Solomon) 的工作原理
    • 链接:https://blog.csdn.net/guyongqiangx/article/details/145865175
    • 内容:
      • FEC 的原理
      • 一个 FEC 前向纠错的简单例子
      • FEC 前向纠错算法
      • 里德所罗门编码(RS)重要数据解释
      • 几种常见的 RS 编码
      • 基于 RS 编码的 4 个实战
        • RS(255, 223) 编码实验
        • RS(255, 253) 编码实验
        • RS(255, 253) 纠错 1 字节成功实验
        • RS(255, 253) 纠错 2 字节失败实验
        • RS(255, 253) 纠错 2 字节成功实验
  • Android AVB 分析(十七)程序员的FEC(Reed-Solomon)编码实战
    • 链接:https://blog.csdn.net/guyongqiangx/article/details/145865276
    • 内容:
      • 里德所罗门编码实践
      • 里德所罗门编码参数
      • 使用 Reed-Solomon 编码实践
      • 擦除编码(Erasure coding)
      • 关于填充的一些话
      • 里德所罗门编码总结
      • 里德所罗门编码的进一步补充阅读材料
  • Android AVB 分析(十八)Android 镜像中的 FEC 数据是如何计算出来的?
    • 链接:https://blog.csdn.net/guyongqiangx/article/details/145962808
    • 内容:
      • Android fec 工具源码
      • Android fec 工具功能
      • Android fec 工具参数
      • Android 中的 FEC 交织编码解释
      • 手动验证 Android 中的 FEC 交织编码实战
      • 手动验证 fec 工具纠错
  • Android AVB 分析(十九)Android 镜像中的 FEC 到底能纠正多少错误?
    • 链接:https://blog.csdn.net/guyongqiangx/article/details/145972996
    • 内容:
      • Android 镜像的理论纠错能力
      • 实验 1. 破坏 3396K 字节, fec 工具纠错实战
      • 实验 2. 破坏 3396K 字节, dm-verity 纠错实战
      • 实验 3. 破坏 4000K 字节, fec 工具纠错实战
      • 实验 4. 破坏 6792K 字节, dm-verity 纠错实战
      • Android 镜像纠错能力总结
  • Android AVB 分析(二十)Android 官方 FEC 文档解读
    • 链接:https://blog.csdn.net/guyongqiangx/article/details/145973033
    • 内容:
      • Android AVB 纠错概览
      • 前向纠错码和里德所罗门编码介绍
      • Android 从连续损坏的块中恢复
      • 严格强制执行的启动时验证与纠错结论

其它计划中的文章:

  • Android AVB 分析 (二一) 关于 Android AVB 配置

  • Android AVB 分析 (二二) LOCKED 状态数据保存在哪里?

  • Android AVB 分析 (二三) Rollback Index 是如何起作用的?

  • Android AVB 分析 (二四) 如何关闭 AVB 功能?

  • Android AVB 分析 (二五) remount 操作到底发生了什么?

3. 其它

我创建了一个 Android AVB 讨论群,主要讨论 Android 设备的 AVB 验证问题。

我还几个 Android OTA 升级讨论群,主要讨论 Android 设备的 OTA 升级话题。

欢迎您加群和我们一起交流,请在加我微信时注明“Android AVB 交流”或“Android OTA 交流”。

仅限 Android 相关的开发者参与~

公众号“洛奇看世界”后台回复“wx”获取个人微信。

# 课程背景2021年ARM又推出了ARMv9架构,系统软件架构也在悄无声息地发生变化。在这种架构中,强调的是隔离技术,包括资源的隔离、运行时隔离,特权操作系统的权限也变得越来越小…不管您是什么领域,ARM服务器、汽车电子、手机或者是其它设备终端,安全都是其中的一个重要环节。我们常说的安全一般是只网络安全/业务安全/App安全,这些安全依赖的正是操作系统安全,操作系统安全所依赖的就是安全架构技术,在该安全架构中,首当要学习的就是Trustzone/TEE技术。只有设备安全/操作系统安全/APP安全/网络安全/服务器安全整个一条链都安全了,那么你的业务才算得上的安全.不管您是做什么的,您做不做安全或虚拟化,掌握整个系统软件架构也是一件必要的事情。您只有掌握了安全架构,你才具有全局的视野,才能进行全局的软件设计,才称得上架构师。安全不仅仅是架构安全,安全还是一种生态,安全还产生一类标准。安全出现在产品声明周期的任何一个角落,它可能零碎地出现在硬件中、零碎地出现在软件代码中。如果你不了解安全,你可能无法进行优秀的产品设计,你甚至无法去正确的阅读代码。# 课程介绍(1) 讲解ARM最新硬件架构(ARM Core、ARM Architecture)、SOC架构(2) 讲解最新的Trustzone安全架构、TEE架构、Secureboot等(3) 讲解软件组件:TF-A(ATF)、optee_os、Linux Kernel、CA/TA应用程序等,及其交互模型、设计模型(4) 多系统交互代码导读、安全论证实践、CA/TA示例实践、安全业务设计实践(5) 我们学习的是全部硬件、全部系统,软硬结合,或者是大系统的软硬件融合# 课程收益1、安全不再神秘,能cover住全局2、熟悉ARM Architecture架构知识3、熟悉SOC架构知识4、熟悉主流的系统软件框架5、知道多系统之间是如何交互的,也能够进行系统级的设计6、深入了解当前的系统安全架构以及未来安全架构趋势7、熟悉基础的安全业务设计方法8、熟悉系统的启动流程、Secureboot等9、知道Linux Kernel在大系统中的位置,以及与其它系统交互的方法10、熟悉各类标准和规范11、学习资料的获取方法 # 课程大纲《Trustzone/TEE/系统安全开发速成班》 --当前48节课/19小时说明: 本视频会持续更新,购买时请以课程目录为主。本EXCEL一个月更新一次。章节编号课程时常第一章基础和简介1课程介绍 8:332ARM和SOC的架构简介60:13第二章软硬件基础3armv8/armv9基础概念26:204ARMv8/ARMv9的Trustzone技术77:565ARMv7的Trustzone技术8:376安全架构及其未来趋势(FF-A/SPM/CCA)6:417ARMv9 CCA机密计算框架底层核心原理简介20:448ARMv9 RME安全扩展详解61:299ATF Quick Start0161:2710Optee Quick Start49:3411系统软件Quick Start21:0412Secureboot原理深度讲解60:2813Android AVB的介绍26:0914TZC400详解17:5615TZC400代码导读之ATF13:4416RPMB详解30:0617RPMB代码导读之optee14:0318efuse详解12:1919Anti-Rollback的介绍11:33第三章软件架构20TEE的组件介绍67:5921TEE的RPC反向调用31:1422TEE的调度模型21:3223各类标准和规范22:17第四章软件架构(高级)24多系统之间的管理模型(ABI/标准)10:3025多系统之间的调度12:2126多系统之间的中断(不含虚拟化)61:4727多系统之间的中断(虚拟化)6:5728再谈多系统之间的调度(多核多线程)10:3129其它(内存管理/PSCI...)10:12第五章安全应用开发基础30安全应用开发基础5:3731TEE环境:qemu_V8环境的使用4:2032TEE环境:编写一个CA和TA程序11:0433TEE环境:编写漂亮的文档4:1434TEE环境:搭建阅读代码神器opengrok3:2635TEE环境(必看):使用集成好的qemu_v8镜像程序20:2936[CA/TA开发]CA到TA的通信9:1837[CA/TA开发]CA到TA的传参27:1638[CA/TA开发]TEE中的存储系统20:5739[CA/TA开发]TEE中的密码学系统简介12:3740[CA/TA开发]TEE中的密码学系统简介-数字摘要Hash等33:2141[CA/TA开发]TEE中的密码学系统简介-对称密码学算法AES等12:2042[CA/TA开发]TEE中的密码学系统简介-消息摘要算法HMAC等15:4843[CA/TA开发]TEE中的密码学系统简介-非对称密码学算法RSA等7:33第六章安全业务设计高级44Gatekeeper的介绍29:3245keymaster/keymint/keystore/keystore213:2746生物认证(指纹/人脸)13:5747DRM的介绍21:3748TUI的介绍17:03总计时统计(分钟)1128:12 说明:本课程会持续更新…
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

洛奇看世界

一分也是爱~

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

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

打赏作者

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

抵扣说明:

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

余额充值