物联网安全基础知识 — 第 2 部分:保护机密

作者:Stephen Evanczuk

投稿人:DigiKey 北美编辑

编者按:尽管物联网设备得到了大量普及,但保护这些设备的安全依然持续引人关注;在某种程度上,若要在工业物联网 (IIoT) 和任务关键型应用中采用联网设备,相关的安全挑战可能会成为阻碍。这是因为如果攻击成功,则可能导致企业和个人数据泄露。保护物联网应用的安全可能是一项非常艰巨的任务,因为开发人员必须精心协调多种安全机制、协议和策略,而它们组合起来似乎非常复杂。在现实中,物联网设备的安全可以建立在一些相对简单的原则之上,并使用硬件安全设备加以支撑。只要遵循完善的安全实践,这些问题都能得到解决。本系列文章由多个部分组成,文中将提供一些实用的指导,来帮助开发人员确保从一开始就遵循相关的最佳实践。第 1 部分探讨底层安全设计的加密算法。第 2 部分(本文)探讨私钥、密钥管理和安全存储在安全物联网设计中所起的作用。第 3 部分检查安全处理器的内建机制,以缓解物联网设备所面临的其他类型威胁。第 4 部分明确并展示如何在高级处理器中应用安全机制,帮助确保进行必要的隔离,以缓解对物联网设备运行时环境进行的攻击。第 5 部分介绍如何在将物联网设备连接到物联网云资源时,通过采用更高级别安全措施,让这些设备实现持续的物联网安全。

尽管基于硬件的加密设备可以减少物联网 (IoT) 的漏洞,但即便使用了最强大的加密设备,如果密钥和相关数据缺乏足够的保护,安全性也会大打折扣。半导体制造商通过专用安全 IC 和在处理器中内置各种安全机制,来解决密钥和其他特权数据的保护问题。

本文将回顾密钥在加密技术中所起的关键作用,并介绍 Maxim IntegratedNXPSTMicroelectronicsMicrochip Technology 所提供的器件中内置的不同密钥保护机制。

密钥在加密技术中的作用

如本系列第 1 部分所述,可以使用多种硬件支持的加密算法来创建唯一的消息哈希或签名,甚至可以使用更广泛的加密来将纯文本加密为密文,以及将密文解密为纯文本。尽管这些算法可以增强应用的安全性,但能否保护这些应用从根本上取决于加密算法所用的私钥和其他机密数据的安全性。

在加密技术中,密钥泄露意味着基于这些密钥构建的安全策略、协议和机制的安全性都会受到损害。早在 19 世纪,密码学家奥古斯特•柯克霍夫斯便曾指出,只要保证密钥安全,加密系统就能保持安全——这一公理现在称为柯克霍夫斯原理。更简单地说,“敌人知道系统”,这便是以信息论之父克劳德·香农的名字命名的“香农的格言”。

实际上,正是由于开发人员基于如此严格规定的著名算法构建安全系统,半导体制造商才得以放心地将其用于硬件加速型安全器件中。然而,最终保护这些系统的是这些算法所用的密钥。

保护密钥面临的挑战

尽管从概念上讲,保护加密密钥非常简单,但实际上可能带来重大挑战。要实现更高级别的安全策略,将不可避免地用到多种采用不同算法的安全协议。这些协议和算法反过来需要协议本身创建的某种静态密钥和临时密钥的组合。例如,传输层安全性 (TLS) 会话在验证期间使用静态密钥,并将共享的临时会话密钥用于安全消息交换。

事实上,美国国家标准技术研究院 (NIST) 确定了 19 种不同类型的密钥以及另外 11 种需要保护的相关信息,例如椭圆曲线域参数和中间结果。NIST 进一步建议,为了实现更强大的安全性,应在特定时段内保护与密钥使用相关的信息,如表 1 所示。该表仅显示完整的 NIST 建议[1]中列出的前几种密钥类型。

密钥类型 安全服务 安全保护 关联保护 必需保证 保护期
私有签名密钥 源验证
完整性验证
支持不可抵赖性
完整性
机密性
使用或应用
域参数(使用时)
公共签名验证密钥
拥有 从生成到加密周期结束
公开签名验证密钥 源验证
完整性验证
支持不可抵赖性
完整性 使用或应用
密钥对所有者
域参数(使用时)
公开签名验证密钥
有效性 从生成到没有需要验证的受保护数据
对称验证密钥 源验证
完整性验证
完整性
机密性
使用或应用
其他验证的实体
验证的数据
从生成到没有需要验证的受保护数据
私有验证密钥 源验证
完整性验证
完整性
机密性
使用或应用
公开验证密钥
域参数(使用时)
拥有 从生成到加密周期结束
公共验证密钥 源验证
完整性验证
完整性 使用或应用
密钥对所有者
验证的数据
私有验证密钥
域参数(使用时)
有效性 从生成到没有需要验证的受保护数据
对称数据加密/解密密钥 机密性 完整性
机密性
使用或应用
其他验证的实体
纯文本/加密的数据
从生成到数据生命期结束或加密周期结束(以较晚者为准)
对称密钥包装密钥 支持 完整性
机密性
使用或应用
其他验证的实体
加密的密钥
从生成到加密周期结束或没有需要保护的包装密钥(以较晚者为准)

表 1:此内容选自完整的 NIST 建议,列出了在指定期间应该保护的几种不同类型的密钥及相关的信息。(表格来源:Digi-Key Electronics,原始资料来源于 NIST)

密钥和相关数据需要受到保护,这就意味着,开发人员在物联网应用中使用密钥时需要格外小心。对于物联网设备,更大的挑战可能在于如何在此数据处于多种状态(静止、传输中和使用中)下分别加以保护。保护静态数据需要安全的存储机制;保护传输中的数据需要在通过网络或系统总线传输时有用于保护密钥的方法;保护使用中的数据则需要在将密钥用于执行加密算法时防止密钥公开的机制。幸运的是,开发人员可以找到各种各样的安全设备,使用多种不同的机制来保护机密数据。

如何在启用加密技术的半导体中保护密钥

启用高级加密技术的半导体解决方案通常会提供某种安全的非易失性存储器,用于存储密钥和其他机密数据,但就总体方法的性质而言,存在明显不同的两大类安全设备:专用安全 IC 和启用加密技术的处理器。

安全 IC 设计为自足式子系统,可从主机处理器(通常通过串行总线通信)分担算法执行任务。例如,Maxim Integrated 的 DS28C36 安全验证器提供了 I2C 端口以及两个通用 I/O (GPIO),可用于向主机处理器发送验证成功或失败的信号(图 1)。

Maxim Integrated 的 DS28C36 安全验证器示意图图 1:Maxim Integrated 的 DS28C36 安全验证器等安全设备提供了完整的子系统,可以简化集成,同时增强对内部密钥和操作的保护。(图片来源:Maxim Integrated)

软件集成通常也很简单。例如,NXP 的 Plug & Trust 中间件库将其 SE050A71CH 安全元件设备的硬件功能抽象为几个函数调用(图 2)。

NXP 的 Plug & Trust 中间件图片图 2:NXP 的 Plug & Trust 中间件这类软件库允许开发人员使用一些直观的函数调用来创建密钥(左图)、访问密钥(右图),以及充分利用 NXP 的 SE050 和 A71CH 安全元件设备中的底层功能。(图片来源:NXP)

创建新密钥(同样参见图 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)。

Maxim Integrated 的 DS28C36 示意图图 3:Maxim Integrated 的 DS28C36 等安全器件的集成功能意味着,私钥和相关的数据均封闭在芯片内。(图片来源:Maxim Integrated)

基于处理器的密钥保护

并非每个物联网设计都能容纳专用的安全 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)。

STMicroelectronics 的 STM32WB55 双核处理器示意图图 4:STMicroelectronics 的 STM32WB55 双核处理器仅允许无线电子系统内核 (CPU2) 直接访问密钥,但允许在主机内核 (CPU1) 上运行的可信应用程序间接使用密钥。(图片来源:STMicroelectronics)

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)。

安全包装工具示意图图 5:原始设备制造商 (OEM) 的开发人员可以使用安全包装工具来保护以后将在制造合作伙伴的安全编程工具中使用的密钥,以配置安全的微控制器(如 Microchip SAML11)。(图片来源:Microchip Technology)

做好生产准备后,OEM 开发人员使用安全包装工具以加密形式向 Microchip 工厂提供密钥和证书,这些密钥和证书只能由合作伙伴安全编程设施内的硬件安全模块进行解密。这种方法可满足在非安全网络上交换生产信息的需求,同时最终产生了具有安全配置的密钥和固件的生产就绪设备。

使用 PUF 技术的自配置

在启用安全性的处理器和专用 IC 中,物理不可克隆功能 (PUF) 技术的使用越来越多,这或许提供了一种甚至更安全的配置方法。利用 PUF 技术,安全设备可以使用根据每个设备的唯一特征派生的密钥,而不是将密钥显式加载到设备中。

PUF 技术依赖于制造差异和其他物理过程,致使该值对设备本身而言是唯一的,并且在正常系统操作下可以重复。如下所述,该结果值可用作唯一的加密私钥,从根本上为每个启用 PUF 的设备提供了内置的密钥。

除了实现自配置外,PUF 技术还增加了另一层安全性。若试图渗透设备以公开设备唯一值,则会改变用于生成该设备唯一值的特征,从而改变生成的值。

尽管存在不同的 PUF 机制,但启用 PUF 技术的设备的基本方法大体相同。例如,Maxim Integrated 在其 MAX32520 安全微控制器以及一些安全 IC 中使用的 ChipDNA PUF 功能,需依赖于一系列模拟 PUF 元件和控制逻辑来生成密钥(图 6)。

Maxim Integrated 的 ChipDNA PUF 技术示意图图 6:在 Maxim Integrated 的 ChipDNA PUF 技术中,片上控制逻辑使用一系列 PUF 元件的随机状态来生成一致的设备专属密钥。(图片来源:Maxim Integrated)

在 Maxim Integrated 的 DS28C39 ECDSA 安全验证器中,ChipDNA PUF 输出将用作 ECDSA 操作的私钥,以及保护相关数据的私钥(图 7)。

Maxim Integrated 的 DS28C39 ECDSA 安全验证器示意图图 7:Maxim Integrated 的 DS28C39 ECDSA 安全验证器使用由其片上 ChipDNA PUF 电路生成的私钥。(图片来源:Maxim Integrated)

在启用 PUF 技术的 LPC55S 处理器系列中,NXP 基于根据 SRAM 阵列的初始随机状态生成的输出使用 PUF 技术(图 8)。

NXP 的 LPC55S 处理器系列示意图图 8:在 PUF 实现中,NXP 的 LPC55S 处理器系列使用 SRAM 中的启动数据生成数字指纹和相关的激活码,随后可将其用于恢复数字指纹、进行加密或生成私钥。(图片来源:NXP)

在这些设备中,PUF 的使用从注册操作开始,该操作生成唯一的数字指纹和相关的激活码,在执行新的注册操作之前这些指纹和激活码会一直有效。激活码存储在设备的受保护闪存中,设备利用该激活码,通过在上电时以一致方式生成的 SRAM 启动数据来重建数字指纹。

有了数字指纹,开发人员便可以对自己的密钥进行加密,或生成密钥。在此过程中,设备将返回一个密钥码。通过提供激活码、密钥码和索引,开发人员可以使设备从适当的片上密钥插槽解密所需的私钥,并将其交付给密码软件库。密钥插槽 0 提供一种特殊的密钥解密方法,通过内部总线将密钥直接交付给处理器的 AES 硬件加密引擎(图 9)。

LPC55S 的 PUF 数字签名在密钥加密和解密中起着密钥加密密钥 (KEK) 的作用,该密钥传统上用于增强对静态或传输中的机密数据的保护。使用 KEK 有助于缓解保护机密数据所需的对更大安全存储及相关内部机制的需求。

NXP 的 LPC55S 处理器系列示意图图 9:NXP 的 LPC55S 处理器系列使用其数字指纹作为 KEK,对其密钥存储区中保护的并以编程方式通过相关的激活码、密钥码和索引引用的密钥进行解密。(图片来源:NXP)

开发人员可以使用 KEK 对定制密钥和相关数据进行加密,并将加密结果存储在非安全的非易失性存储器中。这种方法使开发人员即使在安全存储空间有限的设备中也能保护各种类型的密钥和相关数据。有了 PUF 生成的 KEK,开发人员便可以实现能够在整个开发周期中保护应用的安全物联网设备。

总结

带有加密加速器的专用安全 IC 和安全处理器的出现,极大地增强了开发人员构建安全系统的能力。但是,安全系统严重依赖于私钥及其他与加密机制和协议相关的数据的安全性。安全设备通过采用多种不同的机制,可以为静态、传输中和使用中的机密数据提供保护。利用这些设备,开发人员可以构建更安全的物联网解决方案,而不会影响其他设计要求。

免责声明:各个作者和/或论坛参与者在本网站发表的观点、看法和意见不代表 DigiKey 的观点、看法和意见,也不代表 DigiKey 官方政策。

关于此作者

Stephen Evanczuk

Stephen Evanczuk 拥有 20 多年的电子行业编辑经验,主题涉猎广泛,涵盖硬件、软件、系统以及包括物联网在内的各种应用。他拥有神经网络领域的神经科学博士学位,曾经从事航空航天领域大规模分布式安全系统和算法加速方法方面的工作。目前,他不是在撰写技术和工程文章,就是在研究深度学习在识别和推荐系统方面的应用。

关于此出版商

DigiKey 北美编辑