MODSEMI

News

新闻资讯

首页   
  • 新闻资讯
  •  | 
  • 媒体报告
  • MOD8ID加密芯片应用笔记之:SecureBoot

    来源:MODSEMI 发布日期:2022-08-09 11:20:30 浏览:256

    Secure Boot(ECC)

    SecureBoot是一种确保嵌入式产品(系统)获得授权的方法,通常应用于硬件和或软件授权。安全性取决于两点:攻击者无法更改boot;并且攻击者无法获得密钥,可以阻止对硬件设备的非法篡改,克隆,升级。

    MOD8ID安全加密芯片包含专业的硬件安全功能,旨在防止此类攻击者获取设备中存储的机密信息。能完美支持SecureBoot功能,应用于嵌入式软件保护,OTA安全升级,。本文基于MOD8ID的SecureBoot的实现。

    MOD8ID SecureBoot应用笔记

    Host即待保护的主控端,HOST需要实现:

    • 需要执行SHA256计算(计算image文件摘要)。

    • 使用IO保护功能时:需要能够生成临时随机数(一次性使用)。

     

    Secure Boot安全模型的操作流程如下表所示:请参考MOD8ID DEMO工程源码,相关SDK请联系MODSEMI技术专家获取

    Host主控端


    MOD8ID

    备注

    发行过程




    ① 根据方案选定的算法创建授权私钥和认证公钥

    secure_boot_public_key



    ② 根据方案选定的算法创建IO保护密钥

    io_protection_key


    可选。建议启用IO保护,可用主IO保护密钥和MOD8-SN进行密钥分散,达到一机一密的目的。

    ③ 个人化

    app_load_configuration

    app_write_key

    •写入芯片配置、锁配置区;

    •写入IO保护密钥、认证公钥,锁数据区;

    锁定操作不可逆。

    ④ 创建授权签名:计算image文件摘要,对摘要进行签名

    digest

    signature


    签名随image一起保存、发行。

    认证过程




    ① Boot中计算image文件摘要

    digest

     



    ② Boot中读取授权签名

    signature



    ③ 认证

    app_secureboot

    •验证MAC

    •验证签名

    •返回结果


    ④ 认证结果处理




     

    测试数据:

    授权私钥(ECC P-256):2B8B53733302CC1E7462610EB9FE8B067921DC204DAC7CB97B8FE4E768DE0732

    认证公钥(ECC P-256):99708DE6A8985409A9A57F4595E69ACA41CEF4EBADF1C66730CC1ABA800C5A8F 93F88951F17E1D3D4DA0815F5938D817E3C6A0FC828B026D6C60F0231A471ABC

    IO保护密钥:68747470733A2F2F7777772E6D6F6473656D692E636F6D2F73686F77732F372F

    image文件摘要SHA256):A4F537970F7478BA105A1C3A91BA436091AA7DB9AED09F0101AD215D38E3FE8A

    image文件签名ECC P-256):5D9ECB1A4F4B03C3027FE23E520A73EB82BB73D08D1410010D77D803D9EEDA48 F3F9642C1DCD40731772B4798E49934E99E900749C32734F88D157862F6D28D1

     

    数组格式:

    const uint8_t io_protection_key[] = {

        0x68, 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x77, 0x77, 0x77, 0x2E, 0x6D, 0x6F, 0x64, 0x73,

        0x65, 0x6D, 0x69, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x73, 0x68, 0x6F, 0x77, 0x73, 0x2F, 0x37, 0x2F,

    };

    const uint8_t secure_boot_public_key[] = {

        0x99, 0x70, 0x8D, 0xE6, 0xA8, 0x98, 0x54, 0x09, 0xA9, 0xA5, 0x7F, 0x45, 0x95, 0xE6, 0x9A, 0xCA,

        0x41, 0xCE, 0xF4, 0xEB, 0xAD, 0xF1, 0xC6, 0x67, 0x30, 0xCC, 0x1A, 0xBA, 0x80, 0x0C, 0x5A, 0x8F,

        0x93, 0xF8, 0x89, 0x51, 0xF1, 0x7E, 0x1D, 0x3D, 0x4D, 0xA0, 0x81, 0x5F, 0x59, 0x38, 0xD8, 0x17,

        0xE3, 0xC6, 0xA0, 0xFC, 0x82, 0x8B, 0x02, 0x6D, 0x6C, 0x60, 0xF0, 0x23, 0x1A, 0x47, 0x1A, 0xBC,

    };

        uint8_t digest[] = {

            0xA4, 0xF5, 0x37, 0x97, 0x0F, 0x74, 0x78, 0xBA, 0x10, 0x5A, 0x1C, 0x3A, 0x91, 0xBA, 0x43, 0x60,

            0x91, 0xAA, 0x7D, 0xB9, 0xAE, 0xD0, 0x9F, 0x01, 0x01, 0xAD, 0x21, 0x5D, 0x38, 0xE3, 0xFE, 0x8A,

        };

        uint8_t signature[] = {

            0x5D, 0x9E, 0xCB, 0x1A, 0x4F, 0x4B, 0x03, 0xC3, 0x02, 0x7F, 0xE2, 0x3E, 0x52, 0x0A, 0x73, 0xEB,

            0x82, 0xBB, 0x73, 0xD0, 0x8D, 0x14, 0x10, 0x01, 0x0D, 0x77, 0xD8, 0x03, 0xD9};




    标签:MOD8ID(9) 物联网安全(3) 安全解决方案(1) 物联网认证芯片(1) IOT安全(1) 视频加密(3) 固件保护(1) 安全芯片(2) ATECC608(2)  

    返回列表