你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
本文介绍在设备预配服务(DPS)中使用受信任平台模块(TPM)验证预配设备时涉及的概念。 本文与设备准备部署相关的所有用户类型密切相关。
受信任的平台模块(TPM)是一种硬件安全模块(HSM)。 本文假设您使用的是离散、固件或集成的 TPM。 软件模拟 TPM 非常适合原型制作或测试,但它们不提供与离散、固件或集成 TPM 相同的安全级别。 不建议在生产环境中使用软件 TPM。
本文仅适用于将 TPM 2.0 与基于哈希的消息身份验证代码(HMAC)密钥支持及其认可密钥配合使用的设备。 TPM 是受信任的计算组的行业范围内 ISO 标准,你可以在 完整的 TPM 2.0 规范 或 ISO/IEC 11889 规范中阅读有关 TPM 的详细信息。本文还假定你熟悉公钥和私钥对,以及它们如何用于加密。
设备预配服务设备 SDK 可处理本文中所述的所有内容。 如果在设备上使用 SDK,则无需实现 TPM 支持。 本文以概念的方式介绍设备预配时在 TPM 安全芯片上发生的情况,并说明了其安全性高的原因。
概述
TPM 使用称为认可密钥(EK)的内容作为安全信任根。 EK 特定于 TPM,更改它相当于把设备变为新设备。
TPM 具有另一种类型的密钥,称为存储根密钥(SRK)。 TPM 的所有者在获取 TPM 的所有权后可以生成 SRK。 获取 TPM 的所有权是“有人在 HSM 上设置密码”的特定于 TPM 的方式。如果 TPM 设备出售给新所有者,则新所有者可以获取 TPM 的所有权以生成新的 SRK。 新一代的 SRK 确保以前的所有者无法使用 TPM。 由于 SRK 对 TPM 的所有者是唯一的,因此 SRK 可用于将数据密封到该所有者的 TPM 本身中。 SRK 为所有者提供一个沙盒来存储其密钥,并在设备或 TPM 销售时允许撤销访问权限。 搬进新房子时,就像接管时需要换掉房门的锁,清除前任业主(SRK)留下的所有家具一样,但你无法更改房子的地址(EK)。
设备设置后,具有 EK 和 SRK 可供使用。
获取 TPM 所有权所涉及的具体步骤因制造商、正在使用的 TPM 工具集和设备作系统而异。
设备预配服务使用 EK(EK_pub)的公共部分来标识和注册设备。 设备供应商可以在制造或最终测试期间读取EK_pub,并将EK_pub上传到预配服务,以便在设备连接到预配时识别设备。 设备预配服务不会检查 SRK 或所有者,因此“清除”TPM 会擦除客户数据,但会保留 EK(和其他供应商数据),设备预配服务在连接到预配时仍可识别设备。
证明过程
当具有 TPM 的设备连接到设备预配服务时,服务会首先将提供的 EK_pub 与注册列表中存储的 EK_pub 进行比较。 如果 EK_pub 不符,则不允许设备预配。 如果 EK_pub 相符,服务就会要求设备通过 nonce 质询证明 EK 专用部分的所有权,该质询是一种用来证明身份的安全质询。 设备预配服务生成一个 nonce,然后使用 SRK 和 EK_pub 先后对其加密。SRK 和 EK_pub 均由设备在初始注册调用过程中提供。 TPM 始终使 EK 的专用部分保持安全。 此安全性可防止伪造,并确保将 SAS 令牌安全地预配到授权的设备。
让我们详细介绍证明过程。
设备请求 IoT 中心分配
首先,设备先连接到设备预配服务,然后请求进行预配。 为此,设备向服务提供其注册 ID、ID 范畴,以及来自 TPM 的 EK 公钥和 SRK 公钥。 该服务将加密的 nonce 传回设备,并要求设备解密 nonce,并使用该密钥对 SAS 令牌进行签名以再次连接并完成预配。
Nonce 质询
设备获得 nonce 后,会使用 EK 和 SRK 的专用部分将 nonce 解密到 TPM 中;nonce 加密的顺序是将 EK 的信任(不可变)委托给 SRK(在新的所有者获取 TPM 所有权后可以更改)。
验证 nonce 并接收凭据
然后,设备可以使用解密的 nonce 对 SAS 令牌进行签名,并使用已签名的 SAS 令牌重新建立与设备预配服务的连接。 完成 Nonce 质询以后,服务就会允许设备进行预配。