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

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

3天内不再提示

将您的引导代码存储在安全的NOR闪存中

星星科技指导员 来源:嵌入式计算设计 作者:Zhi Feng 2022-10-24 15:09 次阅读

安全启动是构建安全电子系统的基础。随着微控制器的工艺几何形状不断缩小,板载嵌入式闪存正逐渐被取代。

电子系统在我们的生活中起着至关重要的作用。无论是通过智能手机进行通信,还是驾驶配备高级驾驶辅助系统(ADAS)的汽车,我们都依靠电子设备来简化甚至执行我们的日常任务。这些系统容易被黑客入侵,并且它们连接的事实放大了威胁。随着可信情报采取关键活动(例如,个人医疗监控),网络攻击和破坏的后果增长到包括身体伤害甚至死亡。在这种新的现实中,建立能够抵御此类攻击的电子系统势在必行。

安全启动是构建安全电子系统的基础。随着微控制器的工艺几何形状不断缩小,板载嵌入式闪存正逐渐被外部NOR闪存所取代。这种体系结构演变通过公开的总线接口、克隆可能性等创建了更大的攻击面。解决这一日益严重的漏洞的一种方法是使用安全NOR闪存进行设计,以保护存储,并帮助MCU在启动时建立安全的信任链。

安全启动 – 安全系统的基础

每个电子系统在通电时都会启动。对于嵌入式系统,这通常通过运行存储在非易失性存储器中的引导代码来实现。要启用安全引导,系统需要建立信任根,从原始硬件存储引导,并使用原始受信任的引导代码引导(请参阅图 1)。

建立信任根

当MCU开始启动时,它必须从受信任位置运行。这通常是通过小型内部ROM或受信任的嵌入式闪存实现的。此代码必须是不可变的,以便系统可以从本质上信任它。它是信任根层次结构的基础。从这里,系统可以通过对硬件进行身份验证并验证存储内容来将信任扩展到外部存储。

非对称密钥算法

为了建立信任根,ROM代码通常依赖于预先存储的密钥。如果使用非对称密钥算法,则此密钥通常是公钥。MCU 使用此公钥来验证第二阶段引导加载程序的签名,该签名位于外部闪存设备上。与实际引导加载程序一起存储的签名是引导加载程序的摘要值,并使用与公钥以加密方式配对的私钥进行签名。如果MCU使用公钥成功验证引导加载程序签名,并从当前引导加载程序计算相同的摘要值,则可以确定引导加载程序代码未被更改。通过这种方式,建立了信任根。这个经过验证的第二阶段引导加载程序现在可以安全地执行。

对称密钥算法

通常,对称密钥算法的执行速度比对称算法慢。因此,在启动时间至关重要的应用程序中,用户通常选择对称密钥算法。使用对称密钥,主机MCU和外部闪存共享相同的密钥。在现场部署之前(即在制造过程中),可以在安全环境中提前建立此共享密钥。随后,共享密钥可用于通过在软件上使用基于密钥的哈希值来快速验证第二阶段引导加载程序。

poYBAGNWOmSAVWDyAAGtsbin1pU094.png

图 1:建立信任根

从原始硬件存储启动

如果整个引导代码存储在 MCU 内的嵌入式闪存上,则从原始硬件存储引导可能不是主要问题。这是因为在不损坏MCU主机的情况下更换嵌入式闪存是不可能的。然而,随着行业向22 nm MCU迈进,在MCU中嵌入闪存变得越来越困难。超过28nm的技术可能被迫将引导代码存储在外部闪存中。因此,要安全引导,主机必须考虑是否已更换外部闪存。

为了防止黑客克隆具有原始内存内容的硬件,主机MCU可以在制造过程中执行与引导存储设备的配对过程。之后,只有此配对的存储设备才能提供用于引导的引导代码。因此,必须在设备上使用安全的硬件标识符来提供此类配对功能。标识符可以是不能篡改或克隆的非常强的设备 ID。因此,配对后的认证过程可以基于这样的标识符。

使用受信任的原始启动代码启动

识别原始硬件存储后,下一步是验证引导代码,以确保其未被篡改或修改。有多种方法可以做到这一点,每种方法都需要不同的处理能力并提供相应的安全级别。

简单保护

与大多数传统的NOR闪存一样,用户可以在引导代码所在的内存范围内启用块或基于扇区的保护。这种保护还可以防止意外写入并从受保护区域擦除。简单保护中没有安全元素,因此这种保护对于更改代码的故意攻击很弱。黑客可以轻松发出命令来取消对区域的保护并修改启动代码。即使保护方案包含密码,也可能被复杂的攻击所破解,因为密码本质上是静态的。

校验和验证

如果校验和是根据原始引导代码计算得出的,则可以在后续引导中使用它来验证代码是否未被修改。此过程必须由主机完成;因此,它要求主机从引导设备读取整个引导代码并计算校验和,然后才能开始使用它运行。请注意,主机不能依赖内存设备来提供校验和值,因为在攻击期间可能会修改校验和值。

使用加密存储引导代码

加密的引导代码可以使用密钥存储在 NOR 闪存上。MCU内部可能有硬件,可以在启动时透明地解密数据。由于引导代码纯文本未在总线上公开,因此无法进行窃听。只要用于加密的密钥未被泄露,此方法就是安全的。但是,如果加密密钥泄露,则必须重新刷新外部闪存上的启动代码内容。这个过程可能很繁琐,甚至不可能在现场已有的设备上实施。

闪存设备辅助验证

如果器件提供此类功能,则无需MCU将整个引导加载程序读入RAM进行验证,而是将验证任务卸载到NOR闪存。在引导时间敏感型系统中,卸载验证任务可以帮助MCU更快地开始执行引导加载程序。看门狗定时器可用于在验证失败的情况下重置系统。使用这种方法,MCU可以在闪存设备验证代码时开始处理一些紧急任务。当然,在验证完成之前,只能运行不安全的函数。这意味着主机必须实现一个安全的中断处理程序,该处理程序可以通过中断事件从 NOR 闪存获取验证结果。

安全非闪存

传统的NOR闪存能够提供简单的数据保护,无论是否使用密码。这使得使用传统的NOR闪存实现安全启动功能变得困难。赛普拉斯公司提供的下一代安全NOR闪存集成了安全功能,可实现更强级别的安全启动。

设备识别复合引擎

DICE 由可信计算组 (TCG) 指定,它提供了一种方法,用于根据每个设备的唯一设备密钥派生强大且安全的设备 ID。在存储引导代码的设备上使用 DICE,系统可以在引导时建立信任根基础。

DICE 建立在唯一设备机密 (UDS) 的基础上。UDS 是每个设备上的真正随机数,没有任何关联。UDS 在客户的设施中生成,并存储在设备上的机密位置,一旦写入,就无法读取 UDS。由证书提供的设备标识派生自 UDS。因此,一旦MCU与特定的闪存设备配对,就不可能克隆包含相同UDS的设备。

安全存储区域

安全 NOR 闪存可以配置为在设备内具有多个独立的安全区域。具有不同访问级别的区域可用于存储可能需要不同安全级别的固件或软件。还可以将单个区域配置为常规数据的不安全存储。随着安全级别的提高,由于加密措施,来自设备的读取吞吐量会降低。通过提供各种访问级别,用户可以决定系统每个部分的性能和安全性之间的权衡。

如果固件引导加载程序存储在配置为需要身份验证的区域中,则用户可以确保固件未被任何未经授权的各方修改。如果固件包含用户不希望在SPI总线上公开的敏感数据,则可以将其存储在需要加密的区域,以便仅将加密数据传输到总线上。

快速安全启动

某些应用(如汽车系统)需要及时安全启动。在现代复杂系统中,引导代码或应用软件可能非常大,以至于MCU需要大量时间来读取和验证整个软件。在这种情况下,安全NOR闪存可以在启动期间卸载MCU,以验证存储在设备上的软件。这是通过在MCU和设备之间提前存储共享的秘密信息来实现的。在启动过程中,可以快速验证此共享密钥,以确保设备和存储软件的原创性。该器件还可以在MCU开始处理一些基本任务时对软件应用代码进行身份验证。因此,可以缩短整个启动时间,以满足汽车应用的严格要求。

汽车、工业和通信领域的现代电子系统需要高度安全的闪存存储。设计人员面临着构建能够抵御网络攻击的安全可靠的系统的挑战。安全存储器,如赛普拉斯串行和并行NOR闪存,实现安全功能,使外部存储能够支持快速安全的启动。

审核编辑:郭婷

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

    关注

    48

    文章

    7469

    浏览量

    150934
  • 代码
    +关注

    关注

    30

    文章

    4732

    浏览量

    68275
  • adas
    +关注

    关注

    309

    文章

    2165

    浏览量

    208498
收藏 人收藏

    评论

    相关推荐

    物联网行业存储方案详解_SPI NOR Flash

    SPI NOR FLASH存储初始响应和启动时提供高可靠性,并具有低时延。这一特性对于物联网设备至关重要,因为物联网设备通常需要快速启动并稳定运行,以确保数据的实时传输和处理。 2、直接执行
    的头像 发表于 09-24 14:39 211次阅读
    物联网行业<b class='flag-5'>存储</b>方案详解_SPI <b class='flag-5'>NOR</b> Flash

    NAND闪存NOR闪存有什么区别

    NAND闪存NOR闪存是两种常见的闪存存储器技术,它们多个方面存在显著的差异。以下将从技术原
    的头像 发表于 08-10 16:14 2046次阅读

    闪存的哪些扇区可用于用户数据存储

    有 2 个 ESP8266 模块被砖砌了(无法使用下载工具下载任何应用程序)。 我非常感谢完整的内存映射和一些示例代码,解释了如何安全地使用板载闪存
    发表于 07-12 08:13

    RTOS SDK1.5引导加载程序完成之后,扇区1闪存数据都会损坏,为什么?

    问题。 问题是,每次引导加载程序完成之后,在用户程序以某种未知的方式启动之前,扇区 1 (address=0x1000) 闪存数据都会损坏。 众所周知,rBoot 使用两个
    发表于 07-10 07:10

    FX3第二阶段引导加载程序需要第二微秒延迟,否则SPI闪存读取失败,为什么?

    我使用的 FX3 配置了 SPI 启动和IS25WP128闪存。 我可以用它成功启动第二阶段引导加载程序。 我的第二阶段引导加载程序,它
    发表于 07-03 08:22

    安全服务加密存储代码怎么查

    安全服务加密存储代码的查询与实现是一个复杂的过程,涉及到多个方面,包括数据加密、密钥管理、访问控制等。 1. 引言 随着云计算的快速发展,越来越多的企业和个人数据
    的头像 发表于 07-02 09:28 303次阅读

    华为高端全闪存荣获DCIG年度存储数据安全首位推荐

    全球知名技术评估机构DCIG近日发布的《DCIG 2024-25高端全闪存存储安全TOP5》报告,华为OceanStor Dorado 18000高端全
    的头像 发表于 05-24 10:04 482次阅读

    Flash存储芯片:NOR Flash、NAND Flash、UFS和eMMC的比较与解析

    NOR Flash的制造工艺相对落后,密度较低,无法存储大量的数据。   用途 NOR Flash被广泛用于嵌入式系统的引导存储器,可以
    发表于 04-03 12:05

    CYUSB3KIT-003如何集成一个NOR闪存

    我有一个 CYUSB3KIT-003。 我需要集成一个 NOR 闪存,我可以从中将固件读取到 RAM,然后 NOR 闪存的一部分内存应该EVAL_2K4W_ACT_BRD_S7作为大容
    发表于 03-05 07:23

    请问如何激活Traveo II (TVIIBH4M) 引导加载程序?

    问题? 此外,是否有编写引导加载程序固件的参考/示例? 备注:我代码存储 CM0+ 上,我正在使用 Flash API 的屏蔽模式
    发表于 02-01 07:56

    2024年1月,预计NOR Flash价格将上涨5%

     NOR Flash是一种基于NOR门结构的闪存NOR是逻辑门电路的“或非”门。NOR Fl
    发表于 12-27 14:37 796次阅读

    嵌入式系统Nor Flash引导存储器和固件存储有何关系?

    嵌入式系统需要可靠且快速的引导存储器来系统启动期间加载初始引导代码和操作系统。
    的头像 发表于 12-05 14:08 674次阅读

    Nor Flash编程和擦除操作实践与指南

    闪存编程也不涉及数据写入存储单元,为确保准确编程,Nor Flash 支持字节级编程,允许写入或修改单个字节,而无需擦除整个块。
    的头像 发表于 12-05 14:03 2101次阅读

    Nor Flash的基本概念 Nor Flash的内部结构解析

    Nor Flash是一种非易失性存储技术,用于存储数据和代码。它是一种闪存存储器,类似于NAND
    的头像 发表于 12-05 13:57 3097次阅读

    NOR FLASH对计算机存储有何作用?

    NOR FLASH是一种非易失性存储技术,对计算机存储具有重大影响,闪存其独特的特性和功能影响着计算机存储系统的各个方面
    的头像 发表于 12-05 10:32 800次阅读