物联网安全基础知识:保护机密
尽管基于硬件的加密设备可以减少物联网 (IoT) 的漏洞,但即便使用了最强大的加密设备,如果密钥和相关数据缺乏足够的保护,安全性也会大打折扣。半导体制造商通过专用安全 IC 和在处理器中内置各种安全机制,来解决密钥和其他特权数据的保护问题。
本文将回顾密钥在加密技术中所起的关键作用,并介绍 Maxim Integrated、NXP、STMicroelectronics 和 Microchip Technology 所提供的器件中内置的不同密钥保护机制。
密钥在加密技术中的作用
如本系列第 1 部分所述,可以使用多种硬件支持的加密算法来创建唯一的消息哈希或签名,甚至可以使用更广泛的加密来将纯文本加密为密文,以及将密文解密为纯文本。尽管这些算法可以增强应用的安全性,但能否保护这些应用从根本上取决于加密算法所用的私钥和其他机密数据的安全性。
在加密技术中,密钥泄露意味着基于这些密钥构建的安全策略、协议和机制的安全性都会受到损害。早在 19 世纪,密码学家奥古斯特·柯克霍夫斯便曾指出,只要保证密钥安全,加密系统就能保持安全——这一公理现在称为柯克霍夫斯原理。更简单地说,“敌人知道系统”,这便是以信息论之父克劳德·香农的名字命名的“香农的格言”。
实际上,正是由于开发人员基于如此严格规定的著名算法构建安全系统,半导体制造商才得以放心地将其用于硬件加速型安全器件中。然而,最终保护这些系统的是这些算法所用的密钥。
保护密钥面临的挑战
尽管从概念上讲,保护加密密钥非常简单,但实际上可能带来重大挑战。要实现更高级别的安全策略,将不可避免地用到多种采用不同算法的安全协议。这些协议和算法反过来需要协议本身创建的某种静态密钥和临时密钥的组合。例如,传输层安全性 (TLS) 会话在验证期间使用静态密钥,并将共享的临时会话密钥用于安全消息交换。
事实上,美国国家标准技术研究院 (NIST) 确定了 19 种不同类型的密钥以及另外 11 种需要保护的相关信息,例如椭圆曲线域参数和中间结果。NIST 进一步建议,为了实现更强大的安全性,应在特定时段内保护与密钥使用相关的信息,如表 1 所示。该表仅显示完整的 NIST 建议[1]中列出的前几种密钥类型。
密钥和相关数据需要受到保护,这就意味着,开发人员在物联网应用中使用密钥时需要格外小心。对于物联网设备,更大的挑战可能在于如何在此数据处于多种状态(静止、传输中和使用中)下分别加以保护。保护静态数据需要安全的存储机制;保护传输中的数据需要在通过网络或系统总线传输时有用于保护密钥的方法;保护使用中的数据则需要在将密钥用于执行加密算法时防止密钥公开的机制。幸运的是,开发人员可以找到各种各样的安全设备,使用多种不同的机制来保护机密数据。
如何在启用加密技术的半导体中保护密钥
启用高级加密技术的半导体解决方案通常会提供某种安全的非易失性存储器,用于存储密钥和其他机密数据,但就总体方法的性质而言,存在明显不同的两大类安全设备:专用安全 IC 和启用加密技术的处理器。
安全 IC 设计为自足式子系统,可从主机处理器(通常通过串行总线通信)分担算法执行任务。例如,Maxim Integrated 的 DS28C36 安全验证器提供了 I2C 端口以及两个通用 I/O (GPIO),可用于向主机处理器发送验证成功或失败的信号(图 1)。
软件集成通常也很简单。例如,NXP 的 Plug & Trust 中间件库将其 SE050 和 A71CH 安全元件设备的硬件功能抽象为几个函数调用(图 2)。
创建新密钥(同样参见图 2 左图)后返回一个 keyId。稍后要使用该密钥,开发人员可通过其 keyId 引用该密钥(图 3,右图),而不是通过系统总线公开实际密钥值。使用 NXP 的 Plug & Trust 中间件,开发人员可以将兼容 Arduino 的 NXP Kinetis Freedom K64F 评估板与 NXP OM-SE050ARD 扩展板搭配使用来开发 SE050,或与 NXP OM3710/A71CHARD 板搭配使用来开发 AC71CH,从而快速实现安全应用。
诸如 Maxim Integrated 的 DS28C36、NXP 的 SE050、NXP 的 AC71CHTK2/TOBC2VJ 之类专用安全 IC 以及此分类中的其他器件均具有多种明显的优势。除了提供相对简单的方法为设计添加安全的功能外,将功能集成到专用安全 IC 中还能限制公开机密数据和操作。例如,Maxim Integrated 的 DS28C36 集成了硬件加密加速器、真随机数发生器、8 千字节 (Kb) 安全 EEPROM 以及其他功能模块。DS28C36 在验证椭圆曲线数字签名算法 (ECDSA) 固件签名时,可确保保护静态、传输中和使用中的数据,因为私钥、相关的数据(参见图 1)以及使用这些密钥的操作均封闭在器件内(图 3)。
基于处理器的密钥保护
并非每个物联网设计都能容纳专用的安全 IC。某些要求可能决定了必须使用其他加密方法,或存在与封装、物料清单 (BOM)、成本或客户规格有关的设计限制。针对这类设计,启用安全性的处理器,如 STMicroelectronics 的 STM32WB55 和 Microchip Technology 的 ATSAML11,提供了加密算法硬件加速引擎和机密数据保护机制的组合。虽然本文重点介绍密钥保护,但这些处理器及其他处理器还提供了其他多种精巧的安全功能,我们将在本系列的第 3 部分介绍这些功能。
在 STMicroelectronics 的双核 STM32WB55 无线设备中,Arm® Cortex®-M4 CPU (CPU1) 用作主机处理器,通过一个专用的处理器间通信控制器 (IPCC) 和信号量机制 (HSEM),与无线电子系统的专用 Arm Cortex-M0+ 微控制器 (CPU2) 通信。在 CPU2 子系统内,安全存储器为高级加密标准 (AES) 硬件加速器所用的密钥提供了客户密钥存储 (CKS) 区域(图 4)。
STM32WB55 架构可保护 CKS 密钥不被调试端口或主机 CPU1 处理器运行的非安全例程访问。与此同时,在主机 CPU1 上运行的可信应用程序则可通过使用密钥索引引用密钥的方式,使用 AES 加密技术中的特定 CKS 密钥。AES 硬件模块通过内部总线从 CKS 区域接收所需的密钥,从而确保密钥传输在 CPU2 子系统内保持受保护的状态。
在基于 Arm Cortex-M23 的 ATSAML11 处理器中,Microchip Technology 依赖于 Arm TrustZone 技术内置的安全功能。TrustZone 使用基于硬件的机制来强制隔离可信和不可信资源。
在 ATSAML11 处理器中,Microchip 使用 TrustZone 实现定义归属单元 (IDAU) 实施安全策略,包括按安全和非安全应用程序代码对存储器子区域进行差异化的访问控制。256 字节安全随机存取存储器 (RAM) 区域称为 TrustRAM,提供了用于临时密钥的额外安全存储。
安全的配置
专用的安全 IC 和处理器为开发人员提供了保护物联网设备中的密钥和相关数据所需的机制。但是,由于在最初使用密钥或证书加载或配置安全 IC 或处理器的过程中会出现故障,导致经常出现安全漏洞,致使密钥容易被盗。网络罪犯通过黑市迅速出售这类盗取的密钥和受损的证书,从而使黑客能够利用看似有效的凭据渗透安全网络。
本系列文章的第 4 部分将讨论制造商针对特定的物联网云服务(包括 Amazon Web Services、Microsoft Azure、Google Cloud 等)使用密钥和证书预先配置的安全设备和开发工具包。但在生产部署中,开发人员通常更倾向于或需要使用自己的定制密钥和证书。
为支持定制配置,大多数半导体制造商通过自己的设施或与配置合作伙伴合作提供配置服务。例如,Microchip 为设备配置的定制密钥是使用第三方合作伙伴提供的配置套件(包括 Trustonic 和 IAR Systems 的 Secure Thingz)中包含的安全包装工具创建的(图 5)。
做好生产准备后,OEM 开发人员使用安全包装工具以加密形式向 Microchip 工厂提供密钥和证书,这些密钥和证书只能由合作伙伴安全编程设施内的硬件安全模块进行解密。这种方法可满足在非安全网络上交换生产信息的需求,同时最终产生了具有安全配置的密钥和固件的生产就绪设备。
使用 PUF 技术的自配置
在启用安全性的处理器和专用 IC 中,物理不可克隆功能 (PUF) 技术的使用越来越多,这或许提供了一种甚至更安全的配置方法。利用 PUF 技术,安全设备可以使用根据每个设备的唯一特征派生的密钥,而不是将密钥显式加载到设备中。
PUF 技术依赖于制造差异和其他物理过程,致使该值对设备本身而言是唯一的,并且在正常系统操作下可以重复。如下所述,该结果值可用作唯一的加密私钥,从根本上为每个启用 PUF 的设备提供了内置的密钥。
除了实现自配置外,PUF 技术还增加了另一层安全性。若试图渗透设备以公开设备唯一值,则会改变用于生成该设备唯一值的特征,从而改变生成的值。
尽管存在不同的 PUF 机制,但启用 PUF 技术的设备的基本方法大体相同。例如,Maxim Integrated 在其 MAX32520 安全微控制器以及一些安全 IC 中使用的 ChipDNA PUF 功能,需依赖于一系列模拟 PUF 元件和控制逻辑来生成密钥(图 6)。
在 Maxim Integrated 的 DS28C39 ECDSA 安全验证器中,ChipDNA PUF 输出将用作 ECDSA 操作的私钥,以及保护相关数据的私钥(图 7)。
在启用 PUF 技术的 LPC55S 处理器系列中,NXP 基于根据 SRAM 阵列的初始随机状态生成的输出使用 PUF 技术(图 8)。
在这些设备中,PUF 的使用从注册操作开始,该操作生成唯一的数字指纹和相关的激活码,在执行新的注册操作之前这些指纹和激活码会一直有效。激活码存储在设备的受保护闪存中,设备利用该激活码,通过在上电时以一致方式生成的 SRAM 启动数据来重建数字指纹。
有了数字指纹,开发人员便可以对自己的密钥进行加密,或生成密钥。在此过程中,设备将返回一个密钥码。通过提供激活码、密钥码和索引,开发人员可以使设备从适当的片上密钥插槽解密所需的私钥,并将其交付给密码软件库。密钥插槽 0 提供一种特殊的密钥解密方法,通过内部总线将密钥直接交付给处理器的 AES 硬件加密引擎(图 9)。
LPC55S 的 PUF 数字签名在密钥加密和解密中起着密钥加密密钥 (KEK) 的作用,该密钥传统上用于增强对静态或传输中的机密数据的保护。使用 KEK 有助于缓解保护机密数据所需的对更大安全存储及相关内部机制的需求。
开发人员可以使用 KEK 对定制密钥和相关数据进行加密,并将加密结果存储在非安全的非易失性存储器中。这种方法使开发人员即使在安全存储空间有限的设备中也能保护各种类型的密钥和相关数据。有了 PUF 生成的 KEK,开发人员便可以实现能够在整个开发周期中保护应用的安全物联网设备。
总结
带有加密加速器的专用安全 IC 和安全处理器的出现,极大地增强了开发人员构建安全系统的能力。但是,安全系统严重依赖于私钥及其他与加密机制和协议相关的数据的安全性。安全设备通过采用多种不同的机制,可以为静态、传输中和使用中的机密数据提供保护。利用这些设备,开发人员可以构建更安全的物联网解决方案,而不会影响其他设计要求。
作者:Stephen Evanczuk