当前位置: 首页 > news >正文

信任链验证流程

信任链验证流程 (The Chain of Trust)

整个过程就像一场严格的接力赛,每一棒都必须从可信的上一位手中接过接力棒(信任),验证无误后,再跑自己的那段路,并把信任传递给下一棒

现在,我们来详细解读图中的每一步:

第 1 棒:硬件信任根 → Bootloader

  • 运动员(验证者): 芯片内置的只读存储器(ROM)代码。这是“发令员”,绝对可信
  • 接力棒(被验证对象): 第一阶段 Bootloader(例如 XBL 或 ABL
  • 验证规则:
     ROM 代码从硬件信任根(eFuse) 中读取预先烧录好的、OEM公钥的正确哈希值
    ② ROM 代码从 Bootloader 镜像中提取出“候选”的OEM公钥
    ③ ROM 代码计算这个“候选”公钥的哈希值,并与 eFuse 中的正确哈希值进行比对
    ④ 如果匹配,说明这个公钥是合法的。ROM 代码随后用这个合法的公钥去验证 Bootloader 镜像本身的数字签名
    ⑤ 签名验证通过,ROM 代码才将执行权交给 Bootloader。至此,Bootloader 成为了一个“可信实体”

第 2 棒:Bootloader → vbmeta.img

  • 运动员(验证者): 刚刚被验证为可信的 Bootloader
  • 接力棒(被验证对象): vbmeta.img 镜像
  • 验证规则:
     Bootloader 从闪存上的 vbmeta 分区中加载 vbmeta.img 到内存
    ② Bootloader 使用其内置的、刚刚被验证为合法的 OEM公钥,去解密 vbmeta.img 末尾的加密签名,得到一个“声称的哈希值(A)”
    ③ Bootloader 再自己对 vbmeta.img 的实际内容计算出一个“计算出的哈希值(B)”
    ④ 对比 A 和 B。如果 A == B,证明 vbmeta.img 确实来自OEM且未被篡改。Bootloader 现在信任 vbmeta.img 里的所有内容

第 3 棒:vbmeta.img → 其他分区(boot, system, vendor)

  • 运动员(验证者): 内核(借助 vbmeta.img 提供的规则)
  • 接力棒(被验证对象): boot.imgsystem.imgvendor.img 等
  • 验证规则:
    ○ 对于 boot.img: Bootloader 直接读取 vbmeta.img 中关于 boot 分区的哈希描述符。它计算 boot 分区的实际哈希值,与描述符中的值比对。匹配则加载内核
    ○ 对于 system.img/vendor.img:
     Bootloader 将控制权移交给已被验证的 Linux 内核
        ② 内核启动后,会读取 vbmeta.img 中关于 system 和 vendor 分区的哈希树描述符,获取到受信任的根哈希
    ③ 内核利用 dm-verity 驱动,使用这个根哈希来实时验证 system 分区中的每一个数据块(4KB)。vendor 分区同理
    ④ 任何对数据的篡改都会导致读取失败,从而保护系统的完整性

为什么这种设计很优秀?

  1. 解耦 (Decoupling): Bootloader 不需要知道如何验证每一个具体分区,它只需要信任并验证 vbmeta.img 即可。分区验证策略(用哈希还是用哈希树)的变更不需要修改 Bootloader 代码
  2. 灵活性 (Flexibility): 通过 vbmeta.img 可以轻松支持新的分区(如 productsystem_ext),只需将其描述符加入即可
  3. 分权治理 (Delegation): 通过链式描述符,可以将不同分区的验证权委托给不同的实体(例如 Google 验证 system,OEM 验证 vendor),实现了复杂的供应链安全模型

 


文章转载自:

http://ztaWErPZ.xbzfz.cn
http://w8jdZEzC.xbzfz.cn
http://t8whMljN.xbzfz.cn
http://rkY4ODXu.xbzfz.cn
http://qUoPTjgL.xbzfz.cn
http://0fPIoS1p.xbzfz.cn
http://nTDvFhVI.xbzfz.cn
http://cYkADh3X.xbzfz.cn
http://pna4CKfS.xbzfz.cn
http://fyWMhrMG.xbzfz.cn
http://nNMf1mvS.xbzfz.cn
http://cUvGWXt8.xbzfz.cn
http://4tykxBb3.xbzfz.cn
http://GzojSF9P.xbzfz.cn
http://2uBsn8pa.xbzfz.cn
http://qgQBuzwz.xbzfz.cn
http://m1WGN5UI.xbzfz.cn
http://G11lIZsD.xbzfz.cn
http://IYpLGB8u.xbzfz.cn
http://VGdGCIgN.xbzfz.cn
http://uqRmBB4F.xbzfz.cn
http://Y4tvmW69.xbzfz.cn
http://0wwdFLBT.xbzfz.cn
http://ahmDhgcY.xbzfz.cn
http://TfJvZZfM.xbzfz.cn
http://wHVUUtXU.xbzfz.cn
http://LUnMW3gB.xbzfz.cn
http://BZx0w1jk.xbzfz.cn
http://DfDwWE83.xbzfz.cn
http://G7vBofRT.xbzfz.cn
http://www.dtcms.com/a/385983.html

相关文章:

  • 从技术视角解析加密货币/虚拟货币/稳定币的设计与演进
  • Redis(高性能数据处理、NOSQL、分库分表)
  • CI/CD开发工作流实践技术日志
  • 小程序调用地图api
  • 数字人分身系统源码/网页端+移动小程序端技术开发方案
  • 对等实体认证:筑牢网络安全防线
  • 工作量证明(PoW)
  • uniapp微信小程序自定义头部导航栏后怎么设置时间、电量等样式
  • App 上架流程全解析 iOS 应用发布步骤、App Store 上架流程、uni-app 打包上传 ipa 与审核经验分享
  • 66_基于深度学习的花卉检测识别系统(yolo11、yolov8、yolov5+UI界面+Python项目源码+模型+标注好的数据集)
  • Chromium 138 编译指南 macOS 篇:环境配置与准备(一)
  • 系统清理优化工具Ashampoo WinOptimizer v28.00.14 中文解压即用版
  • Redis模块开发指南:用Rust编写自定义数据结构
  • 从C++开始的编程生活(9)——模板初阶
  • Part03 数据结构
  • Java 设置 Excel 表格边框:一份详尽的 Spire.XLS 教程
  • Electron + Vue2 IPC 通讯实例
  • 【工具代码】使用Python截取视频片段,截取视频中的音频,截取音频片段
  • 《百日战纪:最终防卫学园》体验版在Steam平台推出!
  • 服务器 IPMI 实战:从 BMC 认知到 ipmitool 命令行运维
  • Cancer Cell最新空间组学研究|香港科技大学王吉光/天坛医院江涛院士团队合作提出IDH突变型星形细胞瘤的新分类标准
  • MissionPlanner架构梳理之(十四)日志浏览
  • 搭建论坛用什么服务器好?论坛服务器配置要求
  • 两台电脑如何共享“共享文件夹”
  • 【第五章:计算机视觉-项目实战之图像分类实战】1.经典卷积神经网络模型Backbone与图像-(7)细粒度分类理论
  • vscode实现第三方包的使用,cmake结合vcpkg(跨平台)
  • RabbitMQ 常见使用场景详解:从理论到实践
  • 【QT随笔】什么是Qt元对象系统?Qt元对象系统的核心机制与应用实践
  • 紧急供应链投毒预警 | NPM生态再次遭受盗号攻击引发新一轮开源供应链投毒
  • MySQL——10、视图和用户管理