您是否使用 Microsoft Azure RTOS、ATECC608 或 TA100 安全元件,并希望为物联网 (IoT) 设备实施安全启动和 TLS 相互身份验证?如果是这样,那么您来对地方了。
从嵌入式设备到 Azure 云安全性的 IoT 信任链由多个层组成。在这篇博文中,我们将重点介绍建立最基本的概念,即信任根,它由安全启动功能和使用 Microsoft Azure 实时操作系统 (RTOS) 和 ATECC608 TrustFLEX 安全身份验证集成电路 (IC) 的 TLS 相互身份验证组成。
首先,当您的物联网设备使用标准微控制器(MCU)时,如何实现某种程度的安全启动?这就是像 ATECC608 或 TA100 这样的安全元件可以派上用场的地方。当然,在这种情况下没有bootROM,但是在没有安全启动和安全启动之间,安全元素内有一个隔离的公钥进行验证,威胁模型和业务条件可能会有利于基于安全元素的设计。在本例中,我们将使用传统的 SAME54 Arm Cortex-M4®® MCU 和 ATECC608 TrustFLEX 安全元件附加板,用于代表物联网终端节点的硬件。现在,如果您的终端节点需要多线程,并且需要 Azure RTOS 才能从所有与 Azure 相关的嵌入式 API 中受益,那么 MCU 和安全元件之间的通信在此 RTOS 环境中如何工作?我们需要看看PKCS#11。
什么是PKCS#11以及它如何适应Azure RTOS
PKCS#11 代表公钥加密标准编号 11。它是一个接口,用于触发将利用机密(密钥)的加密操作。简单来说,它是操作系统和硬件安全模块(HSM)之间的标准接口。在我们的例子中,HSM是ATECC608,你猜对了,操作系统是Azure RTOS。
Microsoft Azure 已方便地将 PKCS#11 接口集成到其 Azure RTOS 中。
加密命令将通过 Azure RTOS 到 PKCS#11,但需要一个中间库:Microchip CryptoAuthLib。该库使安全元件与MCU或处理器无关。CryptoAuthLib 已经支持来自 PKCS#11 接口的调用,并将其转换为对 ATECC608 TrustFLEX 或 TA100 安全元件的低级命令,如下图所示。
安全启动和 Azure 实时操作系统
嵌入式系统需要使用与签署代码的私钥关联的公钥执行椭圆曲线数字签名算法 (ECDSA) 验证。ATECC608 TrustFLEX TLS 配置中的公钥如下所示。下载信任平台设计套件 (TPDS) 时,无需 NDA 即可访问它。
需要了解的是,Microsoft Azure提供“设备更新”服务,您可以在其中使用预先生成的公钥/私钥对,其中私钥在HSM中受到理想保护,设备更新执行代码的签名操作并创建签名作为输出。与签名关联的公钥将使用Microchip安全密钥配置服务预配(安全编程)到Microchip ATECC608 TrustFLEX插槽15中。TPDS 将引导您完成入职流程。签署代码的私钥不应离开公司 HSM,也不应提供给任何合同制造商 (CM)。请记住,安全是一种共担责任模型。现在我们有一个签名代码,CM将在制造过程中从每个MCU中的设备更新加载该代码。我们将使用配备 HSM 的工厂在其安全元件(ATECC608 TrustFLEX 或 TA100)中配置公钥。CM 还将组装已配置的安全元素,并且密钥不会暴露给供应链。现在,物联网设备公司可以灵活选择CM。
相互身份验证
处理安全启动后,嵌入式设备和 Azure IoT 中心之间将进行相互身份验证。在将数据推送到 Azure IoT 中心之前,嵌入式设备需要信任云,反之亦然。IoT 设备将与设备预配服务 (DPS) 相互进行身份验证。Microchip 提供的清单文件(其中包含与 TLS 相互身份验证请求的私钥关联的证书)上传到 DPS 中。DPS 现在拥有公钥列表,可以验证在嵌入式系统的安全元件内颁发的签名,以最终确定信任链。信任链由安全启动和相互身份验证组成,其中安全启动的公钥和 TLS 相互身份验证的私钥受到保护,并与代码、人员和制造商隔离,一直到嵌入式设备的开发和部署。然后,DPS 通过 Azure RTOS 支持和提供的 NetX TLS 基于受信任的 IoT 设备自信地与 Azure IoT Hub 通信。
TLS 相互身份验证依赖于公钥基础结构 (PKI),该基础结构可以是静态的,也可以是托管的。对于静态PKI,Azure可容纳任何根证书公司,如Digicert,GlobalSign等。对于托管PKI,Microchip安全合作伙伴公司(如Crypto Quantique,KeyFACTOR和Kudelski)提供设备管理服务。他们的 API 可以直接插入 Azure 云环境,以吊销、轮换和审核证书。
当涉及到用于TLS安全元素的TrustFLEX时,它们可以做比前面提到的两个用例更多的功能,并解决各种用例,例如:
用于设备管理和所有权转让的私钥轮换
用户访问权限和受控固件版本更新的公钥轮换
固件 IP 保护
附件和一次性认证
总而言之,可以使用 PKCS#11 实现访问整个项目(包括 Azure RTOS),以使用预配置的 ATECC608 TrustFLEX 和 Microchip 安全预配服务实现安全启动和相互身份验证。
审核编辑:郭婷