随着物联网技术通过联网智能设备实现的更高智能,使我们的生活更加舒适,保护这些设备存储和传输的信息变得越来越重要。嵌入式MCU是基于物联网的产品的核心,选择合适的MCU是满足客户当前和未来需求的关键。
专为物联网应用设计的MCU需要具有足够的处理能力、基于硬件的安全性和软件算法,以提供安全可靠的解决方案。安全MCU应提供多级安全元素,以支持各种安全算法,如高级加密标准(AES)、数据加密标准(DES)和安全哈希算法(SHA)。MCU需要提供完整的安全链、安全启动过程、基于硬件的信任根、硬件中的真随机数生成功能以及用户应用程序代码身份验证等功能。开发人员还需要考虑,在硬件中实现安全功能时,与等效固件实现相比,所需的时间和精力更少。本文重点介绍MCU所需的关键安全功能,以便为开发人员设计安全的物联网系统奠定坚实的基础。
安全启动
安全启动过程是安全嵌入式MCU支持的最关键元素。这是一个引导过程,可确保仅在设备上执行经过身份验证的代码。安全启动有助于防止在系统启动过程中将恶意和未经授权的代码加载到设备中。使用闪存存储固件的嵌入式MCU可以利用安全启动过程来确保未经授权的用户无法修改固件代码。安全启动通过向启动过程添加加密检查来保护系统,并且可以通过多种方式实现,包括数字签名、受信任的闪存加载程序、启动文件加密等。应用程序固件身份验证是安全启动的重要组成部分。
安全启动采用信任链方法。它以设备信任的安全根开始,例如ROM或闪存中的不可修改代码。然后,此代码对另一段代码进行身份验证。新验证的代码对任何后续代码进行身份验证,依此类推,从而创建信任链。它的工作原理很简单:你信任 A,A 信任 B,所以你信任 B。
[图2 |安全实施链]
为了说明如何构建信任链概念,请考虑以下序列(参见图 2),该序列用于使用 PSoC 6 BLE 实现信任链,PSoC 6 BLE 是赛普拉斯为物联网应用设计的嵌入式 MCU:
信任代码的根在ROM代码中,因此无法修改。根使用 AES-CMAC 消息身份验证对存储在监督闪存 (SFlash) 中的闪存启动代码进行身份验证。
成功通过身份验证后,控制权将传递给闪存引导代码。现在,闪存启动是安全启动过程中信任链的一部分。
Flash 启动代码使用数字签名验证存储在主闪存中的用户应用程序。
成功验证数字签名后,控制权将转移到应用程序。
安全启动使用 ROM 例程对闪存中的用户数据进行身份验证。安全启动是一个涉及加密的过程,它允许 IoT 设备开始执行经过身份验证并因此受信任的软件。这可确保系统从已知的受信任状态打开电源。安全启动流需要分两个步骤。第一步,ROM 引导通过比较存储在电子保险丝中的加密代码来计算加密值,从而对闪存引导进行身份验证。在第二步中,闪存启动使用存储在 SFLASH 中的公钥验证应用程序的数字签名。
基于硬件的安全性
对于许多物联网应用,安全性只是必须与能源效率、可靠性和低成本相平衡的一个考虑因素。在许多情况下,基于硬件的方法提供了最有效、最可靠和最具成本效益的方式来确保安全性。硬件比使用主处理器的等效软件方法消耗更少的功率。基于软件的安全性的另一个问题是,如果没有使用集成电路保护系统的基于硬件的安全性,IP可能会被盗。这只是物联网应用的MCU具有复杂的集成硬件安全功能的原因之一,例如加密模块、代码保护IP和其他基于硬件的机制。
基于硬件的安全性还消除了应用软件补丁来持续保护系统的需要。与固件实现相比,基于硬件的安全性还具有提供更快的性能和更低的功耗的额外好处。例如,图 3 中显示的物联网处理器具有一个加密模块,可提供加密功能的硬件实现和加速。要传输的数据在传输之前使用加密算法进行加密。仅允许使用处理器间调用访问此加密块,并且不允许在寄存器级别直接访问以确保安全性。此加密硬件块执行重要功能,例如:
对称密钥加密和解密
沙斯
消息身份验证代码 (MAC) 函数
真随机数和伪随机数
循环冗余校验
各种实用程序功能,如启用/禁用、中断设置、标志等
[图3 |具有加密硬件和安全启动的可编程 SoC 架构]
对称密钥加密和解密
创建和管理密钥是加密过程的重要组成部分。使用对称密钥时,同一密钥用于加密和解密。AES 是对称密钥加密方法的一个示例。
AES 功能包括符合 AES 标准的分组密码和反向分组密码。分组密码(AES 指令)将 128 位明文数据块加密为 128 位密文数据块。逆分组密码(AES_INV指令)将 128 位密文数据块解密为 128 位明文数据块。
安全哈希算法
哈希是一种算法,它接受任何大小的数据并将其转换为固定长度的数据。哈希和加密之间的主要区别在于哈希是不可逆的。SHA 是一系列加密哈希函数,用于保护数据安全(参见图 4)。SHA 由按位运算、模块化加法和压缩函数组成。此函数获取任意长度的消息,并在执行一系列数学定义的操作后将其减少为固定长度的残差或消息摘要,这保证了消息中的任何更改都将更改哈希值。它用于消息身份验证,方法是传输附加哈希值的消息,并在收件人端使用相同的算法重新计算消息哈希值。如果哈希不同,则消息已损坏。这些算法与数字签名算法 (DSA) 或数字签名标准 (DSS) 一起使用。
[图4 |SHA 示例]
消息身份验证代码函数
MAC 方案使用密钥和消息(参见图 5)。收件人必须知道密钥才能计算 MAC 值。这有助于消息的接收者验证消息的发件人是否具有共享密钥,并且没有密钥的人发送或更改了消息。首先,发送方计算 MAC 值并将其附加到传输的消息中。收到消息后,将再次计算 MAC,并根据随消息传输的 MAC 值进行检查。如果它们不匹配,则接收方知道消息已被更改。哈希算法的一个示例是 SHA,它们可用于生成 MAC 值。甚至诸如AES之类的分组密码也可用于生成MAC值。MAC方法既保证了数据的完整性,也保证了真实性。
[图5 |MAC 示例]
真随机数生成
真随机数生成 (TRNG) 是一项重要的加密函数。TRNG 块生成一个统计随机的数字,并基于一些物理随机变化,无法通过再次运行进程来复制。将其与伪随机数生成(PSRNG)进行比较,后者不是真正的随机,因为它依赖于初始种子值。如果种子可以复制,则生成的序列也可以复制。高度安全的系统将利用真随机数而不是伪随机数生成。目前,很少有MCU提供基于硬件的TRNG。在某些应用中,PSRNG 可能是首选,因此同时具有 TRNG 和 PSRNG 的 MCU 提供了最大的灵活性。
外部存储器安全
为了支持更高的智能和应用,物联网系统需要越来越多的内存。MCU供应商小心翼翼地提供最佳级别的内部存储器,因为芯片尺寸会根据存储器而增加,这也会增加成本。为了满足不断增长的内存大小需求,MCU供应商提供了从外部扩展内存的选项。这有助于物联网设计人员根据应用要求设计他们选择的内存大小。但是,这带来了保护存储在外部存储器中的敏感代码和数据并确保只能由经过身份验证的用户访问的挑战。
为了保护外部数据和代码,MCU支持具有外部存储器接口的加密功能。因此,数据可以在存储在外部存储设备中之前进行加密。同样,检索数据时也会解密数据。图6显示了一个安全MCU,其中串行存储器接口(SMIF)具有内置加密功能,可在数据写入外部存储器时保护数据。
[图6 |MCU架构中的串行存储器接口(SMIF)模块]
图 7 显示了 SMIF 就地执行 (XIP) 模式。这是加密组件支持对数据写入进行动态加密和对数据读取进行动态解密的地方。这可确保在将数据存储在外部存储设备之前加密时不会发生敏感数据泄漏。
[图7 |XIP 模式下的 SMIF 示例]
通信层安全性
低功耗蓝牙 (BLE) 是物联网应用中最受欢迎的无线标准之一。物联网设计人员必须确保无线链路上的数据通信是安全的。最新的BLE协议更新配备了多种安全和隐私功能,以涵盖加密,信任,数据完整性和用户数据的隐私。例如,BLE链路层提供各种加密算法,如CRC和AES,以实现可靠和安全的数据交换(见图8)。BLE无线电还必须设计为支持BLE协议提供的这些BLE安全功能。增强的加密和身份验证将仅允许受信任的用户跟踪设备位置并自信地配对设备。
[图8 |PSoC 6 BLE – BLE子系统框图]
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !