如何使用 DSC 和 MCU 确保嵌入式系统安全

描述

作者:Stephen Evanczuk

投稿人:DigiKey 北美编辑

随着向物联网 (IoT) 的迁移,安全性已不再是嵌入式应用中的选配功能,已发展成为确保系统完整性所需的必备能力。为了满足日益增多的安全规范要求,开发人员所需的解决方案不仅要满足低功耗或高性能的应用要求,还应提供基于硬件的安全功能,包括身份验证、加密、安全存储和安全启动。

本文简将要介绍嵌入式安全的原理。然后,介绍开发人员如何利用 [Microchip Technology]的高性能[数字信号控制器] (DSC)、低功耗 [PIC24F] 微控制器单元 (MCU) 以及 Microchip 的专用安全设备来满足对严格的嵌入式安全的新需求。

嵌入式安全基于四个关键原则

通过与公共互联网连接,可在复杂的应用中将智能产品结合在一起,这是独立产品所无法比拟的。然而,来自这些相同的连接途径的网络攻击威胁,不仅可能限制智能产品的价值,而且还会使这些产品、相关应用及其用户面面临几乎是无穷无尽的威胁之源。

除了需要满足消费者对系统级网络安全的持续需求外,开发人员还需要越来越多地满足国家和地区组织的各种安全规范。欧洲的《ETSI EN 303 645 消费者物联网网络安全:基本要求》和美国的《NIST IR 8259 物联网设备制造商的基础网络安全活动》是最具影响力的两个规范,建议按照以下四个关键原则执行网络安全实践:

  • 使用唯一的密码
  • 可在设备上安地全存储敏感性安全参数
  • 通过相互验证和加密通信确保通信安全
  • 能够通过安全启动和安全固件更新确保固件的完整性、真实性

要根据这些核心原则交付系统,就必须使用可信平台。这种平台能够防止黑客注入改变通信、存储、固件甚至安全机制本身的妥协代码。

可信平台利用基于硬件的不可变安全机制,从底层开始建构系统级安全,从而有助于确保系统级安全。虽然概念简单明了,但系统级安全的实施却充满挑战,因为系统任何部分的安全漏洞都可能为网络攻击提供途径。通过使用 Microchip Technology 的高性能 dsPIC33C DSC 和低功耗 PIC24F MCU,并结合 Microchip 的配套安全器件,开发人员可以更轻松地实现能够确保系统级安全的嵌入式设计。

满足性能和功率要求

Microchip 的 dsPIC33C DSC 和 PIC24F MCU 系列器件专为支持各种用例而设计,每个器件都将强大的执行平台与特定应用功能相结合,包括大量集成的模拟、波形控制和通信外设。事实上,利用 dsPIC33C DSC 上的多个脉宽调制 (PWM)、可编程增益放大器 (PGA)、模数转换器 (ADC) 和其他外设,开发人员只需增加最少的元件就能实现复杂的系统——通常只需要设计任何此类设计所需的功率器件。例如,使用 [DSPIC33CK512MP608] 单核 DSC 实现离线式不间断电源 (UPS) 设计(图 1)。

嵌入式图 1:与其他 dsPIC33C DSC 一样,DSPIC33CK512MP608 单核 DSC 集成了一整套外设,简化了如图所示的离线 UPS 等复杂系统的设计。(图片来源:Microchip Technology)

对于需要实时控制和数字信号处理功能的应用,dsPIC33C DSC 能提供 MCU 功能和 DSC 专用指令和硬件功能。对于安全关键型设计,dsPIC33C DSC 符合 IEC 60730 功能安全标准和 ISO 26262 标准,具有多种硬件功能,旨在简化汽车安全完整性等级 B (ASIL-B) 以及 SIL-2 汽车和工业安全关键型应用的功能性安全认证。

dsPIC33C DSC 专为性能至上的应用而设计,而 PIC24F MCU 则在性能和能效之间取得了平衡,适用于通用嵌入式系统、消费电子产品、工业自动化、医疗设备以及其他需要控制、连接,但不需要 DSP 功能的应用。与 dsPIC33C DSC 一样,PIC24F MCU 也是 IEC 60730 具备功能性安全的器件,且具有 B 级安全诊断库,适用于住宅应用。

如前所述,固件完整性是嵌入式网络安全的核心原则。为了帮助开发人员确保固件完整性、保护整体代码,Microchip 在 dsPIC33C DSC 器件中通过在线串行编程 (ICSP) 写入抑制和 CodeGuard 闪存安全功能,提供了闪存一次性可编程 (OTP) 功能,例如 DSPIC33CK512MP608 单核 DSC 和 [DSPIC33CH512MP508]双核 DSC,以及 PIC24F MCU 器件(例如 PIC24FJ512GU405 MCU)和其他许多配置了不同的应用特定性外设的器件。

器件固件的保护

通过 ICSP 禁止写入功能,开发人员利用闪存 OTP 可将部分闪存配置为 OTP 存储器,并对闪存进行读/写保护。Microchip 的专有 ICSP 功能允许这些器件在最终应用中运行时通过一对引脚进行串行编程。有了这项功能,制造商就可在生产电路板上完成编程。ICSP 需要使用外部编程器件来控制闪存 OTP 过程,而增强型 ICSP 则允许使用板载引导程序来控制闪存 OTP 过程。这些器件还支持运行时自编程 (RTSP),这会允许在运行时自行更新闪存用户应用的代码。

在对生产器件进行编程后,开发人员可激活 ICSP 写入抑制功能,以防止进一步的 ICSP 编程或擦除。不过,如果在 ICSP 写入禁止激活之前已将适当的闪存更新代码写入器件,即使激活了 ICSP 写入禁止,RTSP 闪存擦除和编程操作也能继续进行。因此,即使在 ICSP 写入禁止被激活的情况下,开发人员也可使用可信任的引导程序来更改闪存,从而安全地更新固件,同时还能减少从外部对生产系统中的闪存进行的任何更新尝试。

通过使用独立的启动片段和通用片段,CodeGuard Flash 安全可为程序闪存提供细粒度保护。开发人员通过在器件的 BSLIM 寄存器中设置引导片段 (BS) 限制 (BSLIM) 的地址来定义这些片段的大小;通用片段 (GS) 占用剩余内存。为进一步保护敏感信息,每个片段都包含附加分区。例如,BS 包含中断向量表 (IVT)、可选的备用中断向量表 (AIVT) 和额外指令字 (IW) 空间;配置片段 (CS) 位于 GS 的用户地址空间内,其中包含了关键的器件用户配置数据(图 2)。

嵌入式图 2:dsPIC33C DSC 和 PIC24F MCU 系列支持 BS 和 GS 等独立分区的代码保护。(图片来源:Microchip Technology)

设置片段分区后,开发人员可使用器件的固件安全 (FSEC) 寄存器,选择启用写保护,并为每个片段设置所需的代码保护级别。在运行期间,该器件可防止代码保护级别较低的片段中的代码访问代码保护级别较高的片段中的代码。在典型系统中,开发人员会对 BS 进行写保护,并将其代码保护设置为较高级别,以防从外部更改 BS(包括引导程序)。

实施安全的空中下载固件更新

软件开发人员不可避免地需要更新软件,以应对新发现的软件漏洞、竞争力加强或不断出现的安全威胁。与移动应用更新不同,在嵌入式系统中对固件执行安全更新,轻则有可能干扰当前运行的应用,重则使系统“瘫痪”。Microchip 的 dsPIC33C DSC 和低功耗 PIC24F MCU 系列提供双分区机制,有助于开发人员避免这些问题。

在标准运行模式下,这些器件将所有可用的物理内存用作连续的单分区内存空间(图 3,左),可将这种空间配置为独立的 BS 和 GS。在双分区模式下,开发人员将物理内存分成独立的活动分区和非活动分区(图 3,右)。

嵌入式图 3:开发人员可以在默认的单分区模式或双分区模式下运行 dsPIC33C DSC 和 PIC24F MCU 系列。(图片来源:Microchip Technology)

在双分区模式下运行时,这些器件可以在对非活动分区进行编程的同时,继续在活动分区中执行应用代码。编程完成后,执行引导交换 (BOOTSWP)“运行时指令”会将器件引导目标切换到更新分区。如果更新分区中的代码失效或出现缺陷,器件重置功能将自动使设备启动到原始分区(图 4)。

嵌入式图 4:在双分区模式下,dsPIC33C DSC 和 PIC24F MCU 可以在一个分区中加载应用代码,同时在另一个分区中继续执行应用代码。(图片来源:Microchip Technology)

在确保更新分区成功后,可将更新分区的闪存启动顺序 (FBTSEQ) 设置为低于原始分区的值。在随后的器件重置中,器件将启动到具有较低 FBTSEQ 值的更新分区(图 5)。

嵌入式图 5:双分区模式允许开发人员指定器件复位后启动到所需分区的顺序。(图片来源:Microchip Technology)

通过 ICSP 写入抑制和 CodeGuard 闪存安全实现的闪存 OTP 能为静态和“运行时代码”安全提供关键支持,但全面的嵌入式安全需要额外的机制,包括安全密钥存储、代码验证和安全通信。

使用配套安全器件来确保嵌入式系统安全

通过将 dsPIC33C DSC 和 PIC24F 微控制器与 Microchips 的[ATECC608]CryptoAuthentication 或 TrustAnchor100 ([TA100]) CryptoAutomotive 安全 IC 相结合,开发人员可以更轻松地部署全套基于硬件的安全功能。

这些安全 IC 提供基于硬件的防篡改安全机制,包括安全存储、硬件加速型加密引擎、真随机数生成器以及加密算法所需的其他机制。这些 IC 配套器件而设计,可以方便地添加到 DSC 或 MCU 系统设计中,从而完整地实施全嵌入式系统安全(图 6)。

嵌入式图 6:ATECC608 或 TA100 等安全 IC 补充了 dsPIC33C DSC 和 PIC24F MCU 的安全功能,简化了安全嵌入式系统的实施。(图片来源:Microchip Technology)

执行像安全固件更新这样的关键运行说明了 dsPIC33C DSC 和 PIC24F 微控制器与这些配套安全 IC 之间的互补性安全功能。在完成固件更新运行之前,开发人员使用代码签名技术来验证代码的真实性、完整性。在这里,开发人员使用他们的开发系统创建一个更新包,其中包含代码、代码元数据和用于验证的签名(图 7)。

嵌入式图 7:代码签名是一种重要的协议,通常用于验证代码在目标系统上更新前的真实性和完整性。(图片来源:Microchip Technology)

在目标系统上,基于硬件的签名验证避免了验证协议受损的风险,而过去使用的那种基于软件的签名验证则可能出现这种情况。取而代之的是配套的安全 IC,如 Microchip 的 ATECC608 和 TA100 可快速、安全地执行签名验证操作,而不会有泄露的风险(图 8)。

嵌入式图 8:在目标系统中,为了确保在引导程序更新固件之前进行代码验证,ATECC608 或 TA100 等安全 IC 提供的基于硬件的验证功能是至关重要的。(图片来源:Microchip Technology)

为了加快实施安全系统,Microchip 提供了包含软件和硬件的组合开发工具。

加快软件和硬件开发

[MPLAB X 集成开发环境] 为开发人员提供了完整的软件开发环境,而 [MPLAB XC C 编译器]则为现有工具链提供开发支持。为了加快这两种环境下的开发速度,Microchip [MPLAB 代码配置器] 可让开发人员使用图形界面自动生成初始化程序、构建驱动程序、分配引脚和实施库,还有助于加快与任何嵌入式软件开发项目相关的许多关键性底层设置步骤和流程。

为了加快实施合适的安全引导程序,Microchip 的 [用于 dsPIC33 DSC 和 PIC24 MCU 的引导程序]提供了一个图形界面,帮助开发人员快速配置和生成其应用所需的定制引导程序。相关的引导程序主机应用会进一步简化向目标器件传输应用代码的过程。

在硬件开发方面,Microchip 提供了多个相关开发板,可用于构建基于 dsPIC33C DSC 或 PIC24F MCU 的系统。事实上,Microchip 的 [PIC-IoT EV54Y39A 开发板]和 [PIC-IoT AC164164 开发板](图 9)集成了安全 IC,且这些 IC 分别预置了亚马逊网络服务 (AWS) 和谷歌云的安全凭证。

嵌入式图 9:PIC-IoT AC164164 等开发板集成了预先为 AWS 或谷歌云提供凭据的安全 IC,以帮助加快嵌入式安全开发。(图片来源:Microchip Technology)

对于定制设计,Microchip 提供基于 dsPIC33CH512MP508 双核 DSC 的 dsPIC33CH Curiosity 开发板 ([DM330028-2])。此外,开发人员还可以将 Microchip 基于 dsPIC33CH128MP508 的插件模块 [(MA330040]) 连接到 Microchip Explorer 嵌入式评估板 [(DM240001-2]),以加快安全嵌入式系统的开发。

结束语

嵌入式系统安全依赖基于硬件的机制,这些机制能够支持包括固件完整性、身份验证、加密和安全存储在内的核心网络安全原则。Microchip 的 dsPIC33C DSC 和 PIC24F MCU 简化了代码保护,而其 ATECC608 和 TA100 安全 IC 则提供了有效安全平台所需的额外安全机制。组合使用这些设备,开发人员可以满足物联网嵌入式解决方案以及汽车、工业、消费和医疗应用对系统级安全的需求。

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分