你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

TPM 证明

本文描述了在设备预配服务 (DPS) 中使用受信任的平台模块 (TPM) 证明来预配设备时涉及的概念。 本文涉及设备部署准备工作中提及的所有角色。

受信任的平台模块 (TPM) 是一种硬件安全模块 (HSM)。 本文假定你使用单独的、固件式的或集成式的 TPM。 软件模拟 TPM 适用于原型制作或测试,但其提供的安全级别不同于单独的、固件式的或集成式的 TPM。 建议不要在生产中使用软件 TPM。

本文仅适用于特定的设备,这些设备使用提供 HMAC 密钥支持的 TPM 2.0,同时使用认可密钥。 TPM 是一种行业通用的 ISO 标准,由 Trusted Computing Group 提出。有关 TPM 的详细信息,可参阅完整的 TPM 2.0 规范ISO/IEC 11889 规范。本文还假定你熟悉公钥和私钥对以及如何将其用于加密。

设备预配服务设备 SDK 处理本文中为你介绍的所有事项。 如果是在自己的设备上使用 SDK,则不需实现 TPM 支持。 本文以概念的方式介绍设备预配时在 TPM 安全芯片上发生的情况,并说明了其安全性高的原因。

概述

TPM 使用名为认可密钥 (EK) 的方式作为信任的安全根本。 EK 特定于 TPM,更改它相当于把设备变为新设备。

TPM 还有另一类密钥,称为存储根密钥 (SRK)。 SRK 可以由 TPM 的所有者在取得 TPM 的所有权后生成。 获取 TPM 的所有权就是以 TPM 特有的方式表明“某人在 HSM 上设置密码”。如果将 TPM 设备出售给新的所有者,新的所有者可以在获取 TPM 的所有权后生成新的 SRK。 重新生成 SRK 可确保以前的所有者无法使用 TPM。 由于 SRK 特定于 TPM 的所有者,因此可以通过 SRK 将数据封装到该所有者的 TPM 本身中。 SRK 为所有者提供存储密钥所需的沙盒,并允许在出售设备或 TPM 的情况下撤销访问权限。 这类似于搬进新屋中:获取所有权就是换门锁,扔掉上一位屋主留下的所有家具 (SRK),但不能更改新屋的地址 (EK)。

设备设置后,具有 EK 和 SRK 可供使用。

显示获取 TPM 所有权的示意图。

获取 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_pub 和 SRK_pub。 服务将加密的 nonce 传回给设备,要求设备解密该 nonce,然后使用它为 SAS 令牌签名,以便再次进行连接并完成预配。

设备请求预配

Nonce 质询

设备获得 nonce 后,会使用 EK 和 SRK 的专用部分将 nonce 解密到 TPM 中;nonce 加密的顺序是将 EK 的信任(不可变)委托给 SRK(在新的所有者获取 TPM 所有权后可以更改)。

解密 nonce

验证 nonce 并接收凭据

然后,设备可以使用解密的 nonce 给 SAS 令牌签名,并使用签名的 SAS 令牌重新建立到设备预配服务的连接。 完成 Nonce 质询以后,服务就会允许设备进行预配。

设备重新建立与设备预配服务的连接,以便验证 EK 所有权