0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

HAB boot的启动流程与实现步骤

我快闭嘴 来源:MCU频道 作者:MCU频道 2022-08-12 09:39 次阅读

问题简介

在《深扒HAB boot 启动安全性》中,小编介绍了HAB boot的启动流程(如图1所示),其中的1、2、3验证步骤本质上就是验签过程。

2ac58412-1971-11ed-ba43-dac502259ad0.png图1

验签过程在公钥可信的情况下,可用于检测数据的完整性(Integrity),身份认证(Authentication)和不可否认(Non-repudiation/Undeniable),而hab4_pki_tree.sh和hab4_pki_tree.bat脚本又保证生成的公钥与私钥对,证书是可信的,所以能“完美闭环”,使得HAB boot的安全性得到保证。

在应用手册AN12079中,介绍了实现HAB boot的步骤,大致可分为:

  • 生成证书与密钥
  • 对bootable image进行签名
  • 打包签名后的bootable image生成SB文件

签名过程需借助elftosb工具和BD文件,其中BD文件包含了实现签名的命令,

options{
flags=0x08;
startAddress=0x60000000;
ivtOffset=0x1000;
initialLoadSize=0x2000;

entryPointAddress=0x60004645;
}

sources{
elfFile=extern(0);
}

constants{
SEC_CSF_HEADER=20;
SEC_CSF_INSTALL_SRK=21;
SEC_CSF_INSTALL_CSFK=22;
SEC_CSF_INSTALL_NOCAK=23;
SEC_CSF_AUTHENTICATE_CSF=24;
SEC_CSF_INSTALL_KEY=25;
SEC_CSF_AUTHENTICATE_DATA=26;
SEC_CSF_INSTALL_SECRET_KEY=27;
SEC_CSF_DECRYPT_DATA=28;
SEC_NOP=29;
SEC_SET_MID=30;
SEC_SET_ENGINE=31;
SEC_INIT=32;
SEC_UNLOCK=33;
}

section(SEC_CSF_HEADER;
Header_Version="4.2",
Header_HashAlgorithm="sha256",
Header_Engine="DCP",
Header_EngineConfiguration=0,
Header_CertificateFormat="x509",
Header_SignatureFormat="CMS"
)
{
}

section(SEC_CSF_INSTALL_SRK;
InstallSRK_Table="............Users
xa07025secure_provisioning000000000000000000000000000gen_hab_certsSRK_hash.bin",
InstallSRK_SourceIndex=0
)
{
}

section(SEC_CSF_INSTALL_CSFK;
InstallCSFK_File="............Users
xa07025secure_provisioning000000000000000000000000000crtsCSF1_1_sha256_2048_65537_v3_usr_crt.pem",
InstallCSFK_CertificateFormat="x509"
)
{
}

section(SEC_CSF_AUTHENTICATE_CSF)
{
}

section(SEC_CSF_INSTALL_KEY;
InstallKey_File="............Users
xa07025secure_provisioning000000000000000000000000000crtsIMG1_1_sha256_2048_65537_v3_usr_crt.pem",
InstallKey_VerificationIndex=0,
InstallKey_TargetIndex=2)
{
}

section(SEC_CSF_AUTHENTICATE_DATA;
AuthenticateData_VerificationIndex=2,
AuthenticateData_Engine="DCP",
AuthenticateData_EngineConfiguration=0)
{
}


section(SEC_SET_ENGINE;
SetEngine_HashAlgorithm="sha256",
SetEngine_Engine="DCP",
SetEngine_EngineConfiguration="0")
{
}

section(SEC_UNLOCK;
Unlock_Engine="SNVS",
Unlock_features="ZMKWRITE"
)
{
}


在运行类似下面的命令后,bootable image的组成会有如图2所示的变化。

./elftosb.exe-fimx-V-cimx-flexspinor-normal-signed.bd-oivt_application_signed.binled_demo_evk_flexspi_nor_0x60002000.srec
2aeb1498-1971-11ed-ba43-dac502259ad0.jpg图2

在仔细查看BD文件后,我们会发现里面有加载SRK公钥,IMG1和CSF1证书等命令,却没有了关于私钥的相关命令?那么私钥是如何参与bootable image的签名过程的呢?

私钥在哪里?

图3的左边部分表示elftosb.exe执行如下命令后,首先application和CSF(Command Sequence File)会进行Hash运算生成摘要,跟着私钥会对其加密生成签名。

./elftosb.exe-fimx-V-cimx-flexspinor-normal-signed.bd-oivt_application_signed.binled_demo_evk_flexspi_nor_0x60002000.srec
2b10134c-1971-11ed-ba43-dac502259ad0.jpg图3

那么elftosb.exe是从哪里加载私钥的呢?答案就是在与证书所处文件夹crts同一层目录下的keys文件夹中,且elftosb.exe会加载与BD文件中的公钥证书所对应的私钥文件,比如上述BD文件的公钥证书是CSF1_1_sha256_2048_65537_v3_usr_crt.pem和IMG1_1_sha256_2048_65537_v3_usr_crt.pem,那么对应的私钥文件就是CSF1_1_sha256_2048_65537_v3_usr_key.pem和IMG1_1_sha256_2048_65537_v3_usr_key.pem,当然,你也可以移除keys文件夹来进行验证。

2b3281ac-1971-11ed-ba43-dac502259ad0.png图4

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Boot
    +关注

    关注

    0

    文章

    142

    浏览量

    35252
  • 启动流程
    +关注

    关注

    0

    文章

    14

    浏览量

    6449

原文标题:消失的私钥-HAB boot

文章出处:【微信号:MCU频道,微信公众号:MCU频道】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    u-boot启动流程分析

    今天给大家全面的分析一下u-boot启动流程。整理这篇文章花费时间较长,中间很长时间未更新,希望这篇文章对大家有所帮助。
    发表于 07-12 15:16 454次阅读
    u-<b class='flag-5'>boot</b><b class='flag-5'>启动</b><b class='flag-5'>流程</b>分析

    U-BOOT启动流程分享

    Bootloader移植(下)U-BOOT 启动流程u-boot启动三个2启动
    发表于 01-18 10:17

    U-boot的完整启动流程是怎样的?

    U-boot的完整启动流程是怎样的?
    发表于 03-03 06:18

    为什么U-boot显示的HAB事件数据不符合HAB的数据表?

    HAB 状态:0x00 u-boot=> hab_status安全启动已禁用HAB 配置:0x00,H
    发表于 03-16 07:42

    i.MX8M Mini安全启动HAB错误怎么解决?

    ,是 imx8mm-evk-qca-wifi 机器)。我已经到达步骤 1.8“验证 HAB 事件”。我执行hab_status命令,但出现 HAB 错误: U-
    发表于 03-28 08:35

    IMX8M没有HAB事件,而SRK_HASH未定义是为什么?

    我正在 IMX8M 上试验 HAB,我正在使用我想在启动时验证的 U-boot 映像。HAB 激活后,hab_status命令会生成 4 个
    发表于 04-03 07:26

    如何在imx6q实现HAB

    大家好, 目前我在 imx6q 板上工作。试图在其中实现 HAB,所以我在 u-boot 的配置文件中总结了 CONFIG_IMX_HAB 。使用 CST 工具创建签名的 u-
    发表于 04-04 08:44

    imx6q安全启动HAB错误的原因?

    大家好, 我正在使用 imx6q 设备来实现安全启动。我已经签署了 u-boot 并按照以下步骤操作。但是出现 6 个错误..安全启动已禁用
    发表于 04-06 06:49

    U-Boot启动及移植分析

    bootloader 开发是嵌入式系统必不可少而且十分重要的部分,U-Boot 为功能强大的bootloader 开发软件。本文详细分析了U-Boot启动流程,并结合其源码,阐述了
    发表于 09-01 16:34 27次下载

    嵌入式U-BOOT启动流程及移植

    摘要:嵌入式系统一般没有通用的bootloader,u-boot是功能强大的bootloader开发软件,但相对也比较复杂。文中对u-boot启动流程作了介绍,详细给出了u-
    发表于 02-25 16:00 59次下载

    支持多种闪存启动的U_Boot实现方法的改进_卞芸

    支持多种闪存启动的U_Boot实现方法的改进_卞芸
    发表于 03-20 09:11 0次下载

    Spring Boot启动 Eureka流程

    在上篇中已经说过了 Eureka-Server 本质上是一个 web 应用的项目,今天就来看看 Spring Boot 是怎么启动 Eureka 的。 Spring Boot 启动 E
    的头像 发表于 10-10 11:40 420次阅读
    Spring <b class='flag-5'>Boot</b><b class='flag-5'>启动</b> Eureka<b class='flag-5'>流程</b>

    安全启动Secure Boot流程

    安全启动-Secure Boot 除了NSPE和SPE两个环境的沟通流程之外,secure boot也是Trusted Firmware很重要的设计环节。 Secure
    的头像 发表于 11-02 16:45 614次阅读
    安全<b class='flag-5'>启动</b>Secure <b class='flag-5'>Boot</b><b class='flag-5'>流程</b>

    启动(Cold boot流程及阶段划分

    restart--冷启动 reset--热启动 ATF冷启动实现分为5个步骤: • BL1 - AP Trusted ROM,一般为Boot
    的头像 发表于 11-07 15:17 772次阅读
    冷<b class='flag-5'>启动</b>(Cold <b class='flag-5'>boot</b>)<b class='flag-5'>流程</b>及阶段划分

    springboot启动流程

    。 Spring Boot启动流程可以分为以下几个步骤:初始化启动环境、加载自动配置类、创建 Spring 上下文、
    的头像 发表于 11-22 16:04 355次阅读