h1_key

当前位置:首页 >新闻资讯 > 技术文章>新唐>以NuMicro M2351系列为例安全起动Secure Boot的软硬件
以NuMicro M2351系列为例安全起动Secure Boot的软硬件
2023-01-06 371次

  以 NuMicro M2351系列为例安全起动Secure Boot的软硬件

  Secure Bootloader是一段被写在Mask ROM内无法被存取和更改的可开机程序代码。系统经由配置区设定为从 Secure Bootloader 启动后,便会启动 Secure Boot 验证机制,对存放在Flash Memory安全区域内的程序代码做开发者身分认证和代码完整性的验证。当 Secure 区域代码通过 Secure Boot 验证后,系统才会跳至 Secure 区域内执行被验证过的受保护代码,例如下图所示。


以NuMicro M2351系列为例安全起动Secure Boot的软硬件


  如果下一阶段的启动代码没通过 Secure Boot 验证的检测,此时 Secure Bootloader 会执行USB/UART1 command 模式,等待接收并处理从 Secure ISPTool USB/UART1 接口送进来的 command。

  另外在 Secure Bootloader 内有开放部分的 API,让程序开发人员可以直接使用这些已经在Secure Bootloader 代码内有提供的功能。



以NuMicro M2351系列为例安全起动Secure Boot的软硬件


  本文将以M2351为范例介绍Secure Bootloader 和整个 M2351 内存之间的关系开始,之后会说明如何配置启动 Secure Bootloader、Secure Bootloader 工作频率、如何启动 Secure Boot 验证以及Secure Boot 验证时必要的配置和验证流程。最后会介绍 USB/UART1 command 模式的功能和特性。


  位置和属性

  Secure Bootloader 代码被预写在 32KB Mask ROM 内,位置落在 0x0080_0000 ~ 0x0080_7FFF 间的 Secure 区域内,并被配置为 Execute-only memory (XOM) 属性,因此这段代码是无法被更改以及存取的。另外在 Secure Bootloader 运行过程中,会需要用到位于 0x2000_C000 至 0x2000_FFFF 共 16KB 的 Secure 内存。



以NuMicro M2351系列为例安全起动Secure Boot的软硬件


  起始开机区选择

  M2351 User Configuration Block 是可以配置和系统启动选项相关的配置区块。在芯片上电后,CPU 执行任何代码之前,可以预先执行照配置区内所设定的动作。

  因此透过更改配置区内 CBS (CONFIG0[7]) 和 MBS (CONFIG0[5]) 的设定,便可决定 M2351 在上电后的起始开机区域为何。

  如要规划从 Secure Bootloader 启动开机,则只需将 MBS 配置为 0 后再做系统重置即可。否则系统起始开机区会由 CBS 的设定值来决定从 APROM 或 LDROM 启动。



以NuMicro M2351系列为例安全起动Secure Boot的软硬件


  Bootloader 工作频率

  当起始开机区运行在 Secure Bootloader 时,系统的工作频率会切换为 48MHz。

  如为有支持 USB 功能的芯片型号时,Secure Bootloader 启动后会先检测外部 HXT-12MHz 频率误差是否有小于 6% 后,再决定系统工作频率的时钟源。如外部 HXT-12MHz 频率误差小于 6%,则优先以此 HXT-12MHz 来产生 PLL-48MHz 的时钟源,并将此 PLL-48MHz 当作系统工作频率和 USB 装置的工作时钟源。

  如果芯片没有支持 USB 功能,或是外部 HXT-12MHz 频率误差过大,则会转换成以内部 HIRC-12MHz 当作 PLL-48MHz 的时钟源,来当作是系统工作频率或是 USB 装置的工作时钟源。


  启动 Secure Boot 验证

  系统从 Secure Bootloader 启动后,可以开启 Secure Boot 验证的机制。这目的主要是验证下一阶段要被执行的 Secure 代码是否有通过代码开发者身分认证和代码完整性的验证。如果要启动 Secure Boot 验证,除了设定从 Secure Bootloader 开机外,还需透过设置 Secure Region Lock 或者是 All Region Lock 来对系统的 Secure 区域做保护。

  在 Secure 区域没有受到保护的情况下,Secure Bootloader 启动后是不会执行 Secure Boot 验证机制的。此时系统将会跳到 Secure Bootloader 内的 USB/UART1 command 模式,等待接收并处理 USB/UART1 command,而不会跳到其他区域内的代码作执行。

  当启动 Secure Boot 验证下一阶段要被执行的 Secure 区域代码无误后,Secure Bootloader 将会参照配置区内 CBS (CONFIG0[7]) 的设定值来决定 CPU重启之后是要执行 Secure APROM 或是 Secure LDROM 内的代码。

  如果 Secure Boot 验证过程中有错误产生,则系统也一样会跳到 Secure Bootloader内 的USB/UART1 command模式,等待接收并处理 USB/UART1 command。

  下面表格为 MBS、SCRLOCK、ARLOCK、CBS 和系统起始开机区的关系表:


以NuMicro M2351系列为例安全起动Secure Boot的软硬件

  Secure Boot 配置说明


  前面章节大致说明了如何将系统配置从 M2351 Secure Bootloader 启动,并开启 Secure Boot验证的功能。

  下面的子章节将说明执行 Secure Boot 验证时的必要配置。

  SBK – Secure Boot Key

  Secure Boot Key (SBK) 是一把对被 Secure Boot 验证的 Secure 区域代码 SHA-256 Hash 值做加密的 AES 加密安全密钥。

  SBK安全密钥有效长度为 256-bits,只能被写入一次,无法被读出

  如要更新此SBK安全密钥,只能做全芯片擦除后再做更新的操作

  一定要有配置过SBK,后续的Secure Boot验证流程才可能会成功

  IB – Information Block

  Information Block (IB) 为一块被写在 Secure APROM 后面的数据区块。

  区块内容记录着被 Secure Boot 验证的受保护代码存放位置,以及一组 256-bits 的数字检查码。此 256-bits 数字检查码为受保护代码的 SHA-256 Hash 值再使用 Secure Boot Key (SBK) 做 AES-256 加密后的结果。

  IB被记录在 Secure APROM 最后的 144 bytes

  最多可配置 6 组受Secure Boot验证的代码区域,

  IB内容内有一组checksum数据,可让Secure Bootloaer判断这组IB数据的正确性

  如果没有正确的IB数据区块,Secure Bootloader将不会执行 Secure Boot验证流程


  Secure Region Lock

  当系统安全属性有被配置为开启 Secure 区域保护时,Secure Bootloader 才会执行Secure Boot 验证。此时系统内的 Secure 区域代码将不能经由 ICE 界面被存取。

  将SCRLOCK[7:0] 或是 ARLOCK[7:0] 任一组配置区改为非 0x5A后,Secure 区域代码将无法被 ICE 界面存取

  只能做全芯片擦除后才可以解除Secure区域的保护

  在没有开启Secure区域保护的系统里, Secure Bootloader将不会执行 Secure Boot验证流程


  Secure Boot 验证流程

  下列步骤会说明 Secure Bootloader 执行 Secure Boot 验证的流程。

  判断是否有开启 Secure 区域保护功能

  判断是否有正确的IB 区块

  依据 IB区块内的资料,判断要被保护代码的SHA-256 Hash值是否正确

  如果代码的SHA-256 Hash值比对正确,CPU将会跳去执行这段代码。如果Hash值比对错误,则Secure Bootloader会进入USB/UART1 command模式,等待接收并处理 USB/UART1 command。

  下列流程图将说明 Secure Bootloader启动后执行 Secure Boot 验证到最终执行 Trusted Boot Code 的过程,以及在 Secure Boot 验证过程中出现错误时的处理方式。



以NuMicro M2351系列为例安全起动Secure Boot的软硬件

  USB/UART1 Command 模式说明


  M2351 Secure Bootloader 除了可执行 Secure Boot 验证外,另一个功能为进入 USB/UART1 command 模式做代码的更新和配置区的设定。

  透过 PC 端的 Nuvoton NuMicro® Secure ISPTool 即可和 Secure Bootloader 内的 USB/UART1 command 模式做传输。

  本章节将会对 USB/UART1 command 模式做基本的介绍。


  USB 界面

  在 M2351 Secure Bootloader 提供的 USB command 模式内,用户无需做任何事先的配置,只要透过 USB 线和 PC 端的 Secure ISPTool 做连接后即可正常工作。

  UART1 界面

  在使用 M2351 Secure Bootloader 提供的 UART1 command 模式前,则需将目前芯片 UART1 的脚位和 PC 串口做连接,之后便可和 Secure ISPTool 做正常联机。

  可透过更改配置区CONFIG3[2:0] 来决定 UART1 command模式的脚位:

  000:UART1_TXD (PB.7),UART1_RXD (PB.6)

  001:UART1_TXD (PA.9),UART1_RXD (PA.8)

  010:UART1_TXD (PF.0), UART1_RXD (PF.1)

  011:UART1_TXD (PB.3),UART1_RXD (PB.2)

  Others:UART1_TXD (PA.3),UART1_RXD (PA.2)

  UART1/USB Command 流程

  下列流程图说明在 Secure Bootloader 程序内的 UART1/USB Command 模式和 PC 端的 Secure ISPTool 联机后的主要处理流程。



以NuMicro M2351系列为例安全起动Secure Boot的软硬件


  以上透过 M2351 Secure Boot 验证的程序为例,详细解释系统开发商如何确保必须要受到保护的开机代码没有被更改,意即可以确认系统启动后的行为都在程序开发者的规划内,进而可以达到数据不被窃取的目的。另由于M2351系列为带TrustZone功能,对Non-secure 程序开发者而言,另可以使用 Secure Bootloader 提供的 Non-secure callable API 来实现对 Non-secure 内存的读写和其他配置区的设定。不需要 Secure 程序开发者额外提供这些应用的 API 给 Non-secure 程序开发者使用。

  而终端产品的应用可能是没有预留 ICE 脚位的。此时如果有需要做代码的更新,即可以执行 Secure Bootloader Non-secure callable API 所提供的 USB/UART1 command模式和 PC 端的Nuvoton NuMicro® Secure ISPTool 来实现代码的更新。

  • 新唐汽车级高压工艺AFE产品的应用分析
  • 新唐汽车级高压工艺AFE产品应用分析,当今新能源汽车电池行业正在经历多维度多方向的快速发展,针对动力电池的电池管理系统(BMS)也有各自的发展路图,然后一些市场的共性选择说明了较为明确的发展方向。
    2023-11-01 426次
  • 新唐 iTOF 技术方案3D 视觉应用场景多元化
  • 视觉传感器作为机器获取信息的主要载体,模仿人类视觉体验,正从二维(2D)走向三维(3D),并在某些方面超越人类视觉,为丰富多彩的创新应用提供发展驱动力。3D视觉解决方案主要分为三大类:立体视觉,结构光,飞行时间(TOF:Time- of -Flight)3D传感结合人工智能(AI),正在改变着各行各业的运行模式和人类的生活方式。
    2023-10-27 361次
  • 新唐基于M031G调顶光模块解决方案
  • 新唐基于M031G调顶光模块解决方案,调顶是指:在波分复用系统中,在发射端为每个波长上叠加一小幅度的低频正弦或余弦调制作为标识,不同的波长采用不同的频率标识。此低频正弦或者余弦的信号叠加到光波长时,是对于光波长的顶部有一个调制幅度,故也称为调顶信号。
    2023-10-24 390次
  • 新唐科技CODEC在TBOX中的设计应用
  • 新唐科技CODEC在TBOX中的设计应用,TBOX主要应用于新能源汽车的智能车载互联终端,结合物联网 (IoT) 技术,数据通讯,远程监控和高效可靠的控制功能,实现智能化安全驾控。
    2023-08-03 464次
  • 新唐M2354系列产品RTU应用首选
  • NuMicro® M2354 系列是基于 Arm® Cortex®-M23 内核的微控制器产品系列。运行频率高达 96 MHz,集成 1024 KB FLASH 和 256 KB SRAM。该系列工作电源电压范围为 1.7V 至 3.6V,工作温度范围从 -40°C 到 +105°C,支持 LQFP48、LQFP64、LQFP128 等多种封装。
    2023-07-27 353次

    万联芯微信公众号

    元器件现货+BOM配单+PCBA制造平台
    关注公众号,优惠活动早知道!
    10s
    温馨提示:
    订单商品问题请移至我的售后服务提交售后申请,其他需投诉问题可移至我的投诉提交,我们将在第一时间给您答复
    返回顶部