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

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

3天内不再提示

超低功耗MCU的安全固件更新注意事项

星星科技指导员 来源:嵌入式计算设计 作者:嵌入式计算设计 2022-06-10 07:33 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

现场固件更新是基于微控制器(基于 MCU)的应用中越来越受欢迎的功能。这些更新可以将新的固件映像下载到设备的内存中,从而为产品制造商提供一种有效的方式来为已经部署在现场的产品提供服务和支持。物联网IoT) 时代正在推动嵌入式世界的连接性增加,这使其成为当今连接产品最重要的功能之一,只要它们是安全的。

物联网开发人员在部署固件更新机制时通常会考虑更快的上市时间和更低的产品维护成本,因为该功能允许他们分阶段推出功能、启用/禁用现场设备上的特性或功能、修复固件错误后产品已发布,减少对昂贵技术支持的需求,并实现更好的整体最终用户体验。但是,如果没有适当的安全措施,此功能可能会被滥用,成功利用的后果可能是灾难性的,从知识产权 (IP) 盗窃和产品克隆一直到对已部署系统的未经授权控制。例如,

固件更新及其漏洞

图 1 显示了一个典型的固件更新过程。这些步骤包括:

产品制造商在受信任的环境中创建初始固件映像并将其加载到设备中。

该产品与初始固件一起部署到现场。

当需要更新固件时,产品制造商会创建一个新的固件映像。

制造商通过不受信任的通信渠道将新固件映像直接发送给最终用户/技术人员或产品。

新固件被加载到现场的设备上。

在“传输”阶段,当新固件通过不受信任的通信通道传输时,或在“固件加载”阶段,当新固件被下载到现场设备上时,潜在的安全威胁是显而易见的。

正在下载到设备的新固件映像对应于产品制造商的 IP 和目标资产。对该资产的威胁包括:

将固件二进制映像逆向工程为汇编或更高级别的工程语言,以分析其功能和内容。

产品克隆,将来自产品制造商的固件映像加载到未经授权的设备上。

更改产品制造商分发的固件。

将未经授权的固件映像加载到设备上,这可能对应于产品制造商提供的具有已知错误或未经授权方创建的代码的较旧固件版本,或不适合特定设备的固件(固件降级)。

中断固件更新过程,使得固件仅部分更新,导致设备无法服务。

显然,上述威胁可能对产品制造商、服务提供商和最终用户造成灾难性后果,因此表明嵌入式设计人员迫切需要考虑采取措施提高固件更新机制的整体安全性。

设计工程师的安全固件更新注意事项

图 2 显示了网络连接系统的示例表示。在这种情况下,新固件映像从产品制造商(例如,新功能推出或固件错误修复)或服务提供商(例如,启用/禁用产品中的功能或服务)传输到最后局域网或广域网 (LAN/WAN) 上的节点,并且可能涉及来自最终用户应用程序的身份验证(例如,通过移动设备和 Web 应用程序)以执行固件更新。

【图2 | 安全固件更新包括由用于网络通信接口协议规定的安全措施,以及确保固件映像在数据进入网络之前得到保护的应用程序级安全性。]

为物联网系统设计固件更新功能的嵌入式系统工程师不仅需要了解需要保护的资产和潜在威胁,还需要了解其系统的功能和限制,尤其是与成本、性能或功耗有关的系统受约束的系统。作为起点,必须考虑一种有效的安全解决方案,该解决方案将密码算法和协议级措施的正确组合结合在一起。

加密算法提供了一种保护内容隐私的方法,同时确保其真实性和完整性。并非所有加密算法都是相同的,但它们基于四个加密原语,这些原语处理机密性、完整性和真实性 (CIA) 三元组的一个或多个组件。这些原语是:

加密和解密:加密是将数据(明文)转换为随机且无意义的东西(密文)的过程,而解密则执行相反的工作。这些原语提供机密性和真实性,并用于防止固件的逆向工程。

单向函数:诸如哈希之类的函数是一种数学算法,在一个方向上很容易计算,但在另一个方向上却很难。它们用于获取数字“指纹”,以确保固件在传输到现场之前的完整性。

数字签名:用于检测消息在签名后是否被更改,从而不仅提供完整性,还提供身份验证。这些使用公钥加密来生成只能使用制造商的公钥正确解密的签名。

消息验证码 (MAC):类似于数字签名,只是它使用对称密钥来加密和解密制造商生成的哈希。如果接收方解密的哈希值与为该消息计算的哈希值匹配,则该消息是有效的。通过这种方式,MAC 提供了真实性和完整性。

影响密码算法选择的一些因素包括性能要求、系统的安全需求、内存占用、能源消耗以及安全社区(例如美国国家标准与技术研究院(National Institute of Standards and Technology)等组织对算法的可靠性和接受程度。 NIST))。

除了加密算法之外,还应考虑针对固件降级等威胁的协议级措施。如前所述,固件降级是一种攻击,其中将旧的有缺陷的固件映像(加密或未加密)重新发送到设备以将其恢复到易受攻击的状态。固件和密钥的版本检查可以确保在更新期间仅对新版本进行编程

攻击者还可以使用多种方法(断电、物理连接故障、传输过程中的位翻转等)中断固件更新过程。这可能导致设备执行不完整或无效的固件映像,使其无用或处于受损状态。为了解决这种情况,固件更新机制需要确保不执行不完整或损坏的映像,并在必要时将系统恢复为有效的、以前使用过的映像。

用于连接嵌入式系统的加密引导加载程序

固件更新通常由设备引导加载程序处理。引导加载程序是驻留在设备内存中的一段代码,能够对应用程序内存空间进行重新编程。然而,寻找或创建具有网络连接系统所需安全性的嵌入式引导加载程序可能具有挑战性。例如,系统可能需要更新加密密钥的能力,因此加密功能和引导加载程序协议应支持在固件更新过程中升级密钥并提高网络安全性。引导加载程序协议还应支持验证固件更新版本和数据包跟踪,以检查是否接收到特定固件更新映像的所有数据包。

如前所述,加密算法的选择至关重要,因为它不仅设置系统的安全级别,而且还影响其性能、内存占用和功耗。考虑到这一点,AES-CCM 代表了嵌入式引导加载程序的最佳解决方案。AES-CCM 是一种基于两个加密原语的加密引导加载程序 (Crypto-Bootloader):用于加密的 AES 计数器模式 (AES-CTR) 和用于完整性和真实性验证的密码块链接消息验证码 (CBC-MAC)。由于 AES-CCM 提供的低开销,它在提高安全性和低内存占用、高吞吐量和高效功耗之间提供了完美平衡(图 3)。

【图3 | AES-CCM 算法用于加密固件数据,例如固件版本号、数据包编号和数据包总数。此信息与对称数据加密密钥一起输入算法,以加密数据并生成加密 MAC 标签,该标签代表德州仪器 Crypto-Bootloader 核心命令的一部分。]

选择实现引导加载程序的 MCU 也不容忽视。设计人员应考虑具有硬件加密引擎、内存保护单元 (MPU)、低功耗外设和内存技术等功能的 MCU,这些技术允许快速读/写周期以提高吞吐量。德州仪器 (Texas Instruments)的MSP430FR5969 MCU就是此类 MCU 的一个示例,它集成了 AES-256 协处理器以加速加密算法、MPU 和 MPU-IP 封装 (MPU-IPE) 模块,以增强对存储器区域的保护和封装,如以及高达 64 KB 的 FRAM 内存,可实现高性能和超低功耗。在 MSP430FR5969 器件上实施的 Crypto-Bootloader 解决方案封装了此处概述的大部分安全功能和注意事项。

保护物联网固件

总之,越来越多的网络嵌入式产品正在创造潜在的高级安全威胁,使现场固件更新更容易受到远程攻击和利用。因此,嵌入式设计人员必须考虑通过提供适当安全级别的解决方案来保护其固件更新机制,同时平衡物联网产品的成本、功耗和性能限制。

作者:Bhargavi Nisarga ,Luis Reynoso

审核编辑:郭婷

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

    关注

    68

    文章

    20329

    浏览量

    254859
  • 嵌入式
    +关注

    关注

    5209

    文章

    20645

    浏览量

    336925
  • 德州仪器
    +关注

    关注

    123

    文章

    2035

    浏览量

    145469
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    探秘C8051F96x:超低功耗MCU的卓越之选

    探秘C8051F96x:超低功耗MCU的卓越之选 在电子工程师的世界里,寻找一款性能卓越、功耗极低的微控制器(MCU)是一项持续的追求。Silicon Labs的C8051F96x系列
    的头像 发表于 04-15 14:40 132次阅读

    STM32L15x系列超低功耗MCU深度剖析:特性、应用与设计考量

    的STM32L15x系列MCU以其超低功耗和丰富的功能特性,在众多应用领域中展现出强大的竞争力。本文将深入剖析STM32L15x系列MCU的特性、功能、电气特性以及应用设计中的注意事项
    的头像 发表于 04-09 17:20 632次阅读

    AD4129 - 8:超低功耗16位Sigma - Delta ADC的技术解析与应用指南

    能的超低功耗16位Sigma - Delta ADC,为众多应用场景提供了理想的解决方案。本文将深入探讨AD4129 - 8的特性、工作原理、寄存器配置以及实际应用中的注意事项。 文件下载
    的头像 发表于 03-25 11:25 265次阅读

    ADuCM4050:超低功耗ARM Cortex - M4F MCU的卓越之选

    ADuCM4050:超低功耗ARM Cortex - M4F MCU的卓越之选 在当今的电子产品设计领域,对于微控制器(MCU)的性能和功耗要求越来越高。ADI公司的ADuCM4050
    的头像 发表于 03-24 14:45 209次阅读

    STM32L051x6/8:超低功耗32位MCU的卓越之选

    STM32L051x6/8:超低功耗32位MCU的卓越之选 在当今的电子设计领域,低功耗、高性能的微控制器(MCU)需求日益增长。STMicroelectronics推出的STM32L
    的头像 发表于 03-18 16:40 745次阅读

    STM32L052x6/8:超低功耗32位MCU的卓越之选

    STM32L052x6/8:超低功耗32位MCU的卓越之选 在电子设备不断追求低功耗、高性能的今天,一款合适的微控制器(MCU)至关重要。ST公司的STM32L052x6/8系列
    的头像 发表于 03-12 17:00 674次阅读

    RL78/G15 MCU低功耗设计的理想之选

    。今天,我们就来深入探讨一下这款MCU的特点、性能以及在实际应用中的注意事项。 文件下载: Renesas Electronics RL78,G15低功耗微控制器.pdf 一、RL78/G15
    的头像 发表于 12-29 15:20 2138次阅读

    请问CW32L052C8T6这种安全低功耗MCU安全固件部分怎么实现?

    请问,CW32L052C8T6这种安全低功耗MCU安全固件部分怎么实现?
    发表于 12-05 07:19

    驱动板PCB布线的注意事项

    PCB Layout 注意事项 1)布局注意事项: ●● 整体布局遵循功率回路与小信号控制回路分开布局原则,功率部分和控制部分的 GND 分开回流到输入 GND。 ●● 芯片的放置方向优先考虑驱动
    发表于 12-02 07:40

    芯源的MCU使用电池过程中有哪些注意事项

    目前大多数MCU都是用电池进行供电,芯源的MCU使用电池过程中有哪些注意事项?应该如何设计电池供电呢?
    发表于 11-20 07:24

    L083最低功耗是多少,应该如何进行低功耗设计?有哪些注意事项

    L083最低功耗是多少,应该如何进行低功耗设计?有哪些注意事项
    发表于 11-12 07:29

    极海APM32E030 MCU中高速时钟的配置和相关注意事项

    每一家MCU厂家的SDK写法和寄存器功能都有所不同,如果不熟悉的话就会配置错误,导致MCU运行不稳定。接下来就以APM32E030的手册和SDK,解读下高速时钟的配置和相关注意事项
    的头像 发表于 11-04 09:19 4871次阅读
    极海APM32E030 <b class='flag-5'>MCU</b>中高速时钟的配置和相关<b class='flag-5'>注意事项</b>

    Microchip PIC32CM Lx 系列:面向高安全超低功耗应用的微控制器

    电子、工业和医疗市场中的挑战。这些MCU在一个超低功耗器件中实现了出色的触摸、安全和智能模拟集成。PIC32CM Lx MCU的运行速度最高可达48MHz,存储器配置最高可达512KB
    的头像 发表于 10-13 15:02 1143次阅读
    Microchip PIC32CM Lx 系列:面向高<b class='flag-5'>安全</b>与<b class='flag-5'>超低功耗</b>应用的微控制器

    emWin AppWizard 开发注意事项有哪些?

    emWin AppWizard 开发注意事项
    发表于 09-04 06:18

    IGBT器件的防静电注意事项

    IGBT作为功率半导体器件,对静电极为敏感。我将从其静电敏感性原理入手,详细阐述使用过程中防静电的具体注意事项与防护措施,确保其安全稳定运行。
    的头像 发表于 05-15 14:55 2155次阅读