Windows 如何使用受信任的平台模块

Windows 操作系统将基于硬件的安全性更深入地置于许多功能中,从而最大限度地提高平台安全性,同时提高可用性。 为了实现其中许多安全增强功能,Windows 广泛使用了受信任的平台模块 (TPM) 。 本文概述了 TPM,介绍了它的工作原理,并讨论了 TPM 为 Windows 带来的好处,以及使用 TPM 在设备上运行 Windows 的累积安全影响。

TPM 概述

TPM 是增强计算机安全性和隐私的加密模块。 通过加密和解密保护数据、保护身份验证凭据以及证实系统上运行的软件是与计算机安全性相关联的基本功能。 TPM 对所有这些方案等有所帮助。

从历史上看,TPM 是焊接到计算机主板上的离散芯片。 此类实现使计算机的原始设备制造商 (OEM) 能够独立于系统其余部分评估和认证 TPM。 尽管离散 TPM 实现仍然很常见,但它们对于较小或电源消耗低的集成设备可能有问题。 某些较新的 TPM 实现将 TPM 功能集成到与其他平台组件相同的芯片集中,同时仍然提供类似于离散 TPM 芯片的逻辑分离。

TPM 是被动的:它们接收命令并返回响应。 若要实现 TPM 的完整优势,OEM 必须仔细地将系统硬件和固件与 TPM 集成,以向其发送命令并对它的响应作出反应。 TPM 最初旨在为平台的所有者和用户提供安全和隐私权益,但较新版本可为系统硬件本身提供安全和隐私权益。 但是,在将 TPM 用于高级方案之前,必须对其进行预配。 Windows 会自动预配 TPM,但如果重新安装操作系统,可能需要显式重新预配 TPM,然后才能使用 TPM 的所有功能。

受信任的计算组 (TCG) 是发布和维护 TPM 规范的非盈利性组织。 TCG 存在的目的是开发、定义和推广供应商中立的全球行业标准,这些标准支持可互操作的受信任计算平台的基于硬件的信任根。 TCG 还使用公开提供的规范提交流程发布了 TPM 规范作为国际标准 ISO/IEC 11889,该流程是联合技术委员会 1 在国际标准化组织 (ISO) 和国际电工委员会 (IEC) 之间定义的。

OEM 实现 TPM 作为受信任计算平台中的组件,如 PC、平板电脑和手机。 受信任的计算平台使用 TPM 来支持仅靠软件无法实现的隐私和安全方案。 例如,仅软件无法可靠地报告系统启动过程中是否存在恶意软件。 TPM 和平台之间的紧密集成增加了启动过程的透明度,并支持通过启用可靠的测量和报告启动设备的软件来评估设备运行状况。 作为受信任计算平台的一部分实现 TPM 可提供信任的硬件根,也就是说,它的行为方式受信任。 例如,如果存储在 TPM 中的密钥具有禁止导出密钥的属性,则该密钥 确实不能离开 TPM

TCG 将 TPM 设计为低成本、大批量出售的安全解决方案,可应对不同客户细分的要求。 不同 TPM 实现的安全属性有所不同,就像不同部门的客户和法规要求有所不同一样。 例如,在公共部门采购中,一些政府明确了 TPM 的安全要求,而另一些政府则没有。

TPM 和技术的认证计划一般会随着创新速度的提高而不断发展。 尽管拥有 TPM 显然比没有 TPM 更好,但Microsoft的最佳建议是确定组织的安全需求,并研究与行业采购相关的任何法规要求。 结果是使用的方案、保证级别、成本、方便性和可用性之间达到一种平衡。

Windows 中的 TPM

Windows 的安全功能与 TPM 的优点相结合,可提供实用的安全和隐私权益。 以下部分从 Windows 中与 TPM 相关的主要安全功能开始,然后介绍关键技术如何使用 TPM 来启用或提高安全性。

平台加密提供程序

Windows 包括名为加密 API:下一代 (CNG) 的加密框架,它的基本方法是采用不同的方法,但使用常见应用程序编程接口 (API) 实现加密算法。 使用加密的应用程序可以使用常见 API,而无需了解如何实现比算法本身更少的算法的详细信息。

尽管 CNG 听起来像常见的起始点,但它展示了 TPM 提供的一些优势。 在 CNG 接口下,Windows 或第三方提供加密提供程序 (,即算法的实现) 单独实现为软件库,或者以软件与可用系统硬件或非Microsoft硬件的组合实现。 如果通过硬件实现,则加密提供程序与 CNG 软件接口后的硬件进行通信。

Windows 8 中引入的平台加密提供程序公开了以下特殊的 TPM 属性,仅限软件的 CNG 提供程序无法或无法有效提供这些属性:

  • 密钥保护。 通过限制对它们的使用,平台加密提供程序可以在 TPM 中创建密钥。 操作系统可以在 TPM 中加载和使用密钥,而无需将密钥复制到系统内存中,这些密钥很容易受到恶意软件的攻击。 平台加密提供程序还可以配置 TPM 保护的密钥,使其不可移动。 如果 TPM 创建某一密钥,该密钥是唯一的,并且仅位于该 TPM 中。 如果 TPM 导入密钥,则平台加密提供程序可以使用该 TPM 中的密钥,但该 TPM 不是用于创建更多密钥副本或允许在其他地方使用副本的源。 相比之下,防止复制密钥的软件解决方案会遭受反向工程攻击,即当密钥在内存中使用时,有人可计算出解决方案存储密钥或复制密钥的方式。

  • 字典攻击防护。 TPM 保护的密钥可能需要 PIN 等授权值。 借助字典式攻击保护,TPM 可以阻止通过尝试大量猜测以确定 PIN 的攻击。 猜测多次后,TPM 会返回一条错误,指出一段时间内不得再次进行猜测。 软件解决方案可能提供类似的功能,但它们不能提供相同级别的保护,尤其是在系统重启、系统时钟更改或硬盘上计数失败猜测的文件回滚时。 此外,借助字典式攻击保护,PIN 等授权值可以更短且更容易记住,同时在使用软件解决方案时,仍提供与更复杂的值一样级别的保护。

这些 TPM 功能为平台加密提供程序提供的优势明显优于基于软件的解决方案。 在 Windows 设备上使用证书时,可以看到这些优势的实际方法。 在包含 TPM 的平台上,Windows 可以使用平台加密提供程序提供证书存储。 证书模板可以指定 TPM 使用平台加密提供程序保护与证书相关联的密钥。 在混合环境中,某些计算机可能没有 TPM,证书模板可能首选平台加密提供程序,而不是标准 Windows 软件提供程序。 如果证书配置为无法导出,则证书的私钥将受到限制,并且无法从 TPM 导出。 如果证书需要 PIN,则 PIN 会自动获得 TPM 的字典攻击防护。

虚拟智能卡

警告

Windows Hello 企业 版和 FIDO2 安全密钥是适用于 Windows 的新式双因素身份验证方法。 建议使用虚拟智能卡的客户迁移到 Windows Hello 企业版或 FIDO2。 对于新的 Windows 安装,建议使用 Windows Hello 企业版或 FIDO2 安全密钥。

智能卡是通常存储单个证书和相应私钥的物理设备。 用户将智能卡插入内置或 USB 读卡器,然后输入 PIN 进行解锁。 然后,Windows 可以访问该卡的证书,并使用私钥进行身份验证或解锁受 BitLocker 保护的数据卷。 智能卡很流行,因为它们提供需要用户具有的某种事物(即智能卡)和用户知道的某些信息(如智能卡 PIN)的双因素身份验证。 但是,智能卡可能很昂贵,因为它们需要购买和部署智能卡和智能卡读卡器。

在 Windows 中,虚拟智能卡功能允许 TPM 模仿永久插入的智能卡。 TPM 成为 用户拥有的内容, 但仍需要 PIN。 虽然物理智能卡在锁定卡和需要重置之前会限制 PIN 尝试次数,但虚拟智能卡依赖于 TPM 的字典攻击保护来防止出现过多的 PIN 猜测。

对于基于 TPM 的虚拟智能卡,TPM 保护证书私钥的使用和存储,以便在使用证书私钥时无法复制证书私钥,也无法在其他位置存储和使用证书私钥。 使用属于系统的组件(而不是单独的物理智能卡)可以降低总拥有成本。 丢失的卡留在家的卡的情况不适用,并且保留了基于智能卡的多重身份验证的优势。 对于用户,虚拟智能卡易于使用,仅需要 PIN 即可解锁。 虚拟智能卡支持的情景与物理智能卡支持的方案相同,包括登录 Windows 或通过身份验证访问资源。

Windows Hello 企业版

Windows Hello 企业版提供旨在替换密码的身份验证方法,因为该密码可能难以记住且容易受到威胁。 此外,用于身份验证的用户名/密码解决方案通常在多个设备和服务上重复使用相同的凭据组合。 如果这些凭据遭到入侵,则会在多个位置泄露这些凭据。 Windows Hello 企业版将在每个设备上预配的信息组合在一起, (即加密密钥) 用于对用户进行身份验证的其他信息。 在具有 TPM 的系统上,TPM 可以保护密钥。 如果系统没有 TPM,则基于软件的技术会保护密钥。 用户提供的其他信息可以是 PIN 值或者(如果系统具有必要的硬件)生物识别信息,例如指纹或面部识别。 为了保护隐私,生物识别信息仅在预配的设备上用于访问预配的密钥:它不会在设备之间共享。

身份验证新技术的采用需要标识提供者和组织部署和使用该技术。 Windows Hello 企业版允许用户使用其现有Microsoft帐户、Active Directory 帐户、Microsoft Entra 帐户,甚至支持 快速 ID Online V2.0 身份验证的非Microsoft标识提供者服务或信赖方服务进行身份验证。

标识提供者可以灵活地选择它们在客户端设备上预配凭据的方式。 例如,组织可以只预配具有 TPM 的那些设备,以便该组织了解 TPM 可保护凭据。 要想区分 TPM 和运行方式类似 TPM 的恶意软件,需要以下 TPM 功能(请参阅图 1):

  • 认可密钥。 TPM 制造商可以在 TPM 中创建名为认可密钥的特殊密钥。 由制造商签名的认可密钥证书显示认可密钥存在于制造商制作的 TPM 中。 解决方案可以将证书与包含认可密钥的 TPM 配合使用,以确认某个方案确实涉及特定 TPM 制造商 (的 TPM,而不是充当 TPM) 的恶意软件。

  • 证明标识密钥。 为了保护隐私,大多数 TPM 方案不会直接使用实际认可密钥。 相反,它们使用证明标识密钥,而标识证书颁发机构 (CA) 使用认可密钥及其证书来证明一个或多个证明标识密钥实际上存在于真实 TPM 中。 标识 CA 颁发证明标识密钥证书。 多个标识 CA 通常会看到可唯一标识 TPM 的同一个认可密钥证书,但可以创建任意数量的证明标识密钥证书来限制在其他方案中分享的信息。

TPM 功能。 图 1:TPM 加密密钥管理

对于 Windows Hello 企业版,Microsoft 可以担任标识 CA 的角色。 Microsoft 服务可以为每台设备、每个用户和每个标识提供者颁发证明标识密钥证书,以确保保护隐私并帮助标识提供者确保在预配 Windows Hello 企业版凭据之前满足设备 TPM 要求。

BitLocker 驱动器加密

BitLocker 提供保护静态数据的全卷加密。 最常见的设备配置将硬盘驱动器拆分为几个卷。 操作系统和用户数据位于保留机密信息的一个卷中,而其他卷保留启动组件、系统信息和恢复工具等公用信息。 (这些其他卷很少使用,因此它们不需要对用户可见。) 如果没有更多保护,则包含操作系统和用户数据的卷未加密,则有人可以启动另一个操作系统,并轻松绕过预期的操作系统强制实施文件权限来读取任何用户数据。

在最常见的配置中,BitLocker 会加密操作系统卷,以便在关机后计算机或硬盘丢失或被盗的情况下,卷中的数据保持机密性。 当计算机处于打开状态、正常启动并转到 Windows 登录提示时,前进的唯一路径是用户使用其凭据登录,从而允许操作系统强制实施其正常文件权限。 但是,如果启动过程发生更改(例如,从 USB 设备启动其他操作系统),则无法读取和访问操作系统卷和用户数据。 TPM 和系统固件共同协作以记录系统启动方式的测量,包括加载的软件和配置详细信息,例如是从硬盘驱动器还是 USB 设备发生启动。 BitLocker 依赖 TPM,以允许仅在按预期方式发生启动时使用密钥。 系统固件和 TPM 经过精心设计,可共同协作以提供以下功能:

  • 用于度量的硬件信任根。 TPM 允许软件向其发送记录软件或配置信息测量的命令。 可以使用实质上将大量数据转换为小型、在统计学上唯一的哈希值的哈希算法计算此信息。 系统固件具有名为用于测量的信任核心根 (CRTM) 的隐式受信任的组件。 CRTM 对下一个软件组件无条件地进行哈希处理并通过将命令发送到 TPM 记录测量值。 连续组件(系统固件或操作系统加载程序)通过测量它们在运行这些之前加载的任何软件组件继续进行此过程。 由于每个组件的度量值在运行之前发送到 TPM,因此组件无法从 TPM 中擦除其度量值。 (但是,系统重启时可清除测量。)结果是,在系统启动过程的每个步骤中,TPM 都会保留启动软件和配置信息的测量。 启动软件或配置中的任何更改都会在该步骤和后续步骤中产生不同的 TPM 测量。 由于系统固件无条件地启动测量链,所以它为 TPM 测量提供基于硬件的信任根。 在启动过程中的某些时候,记录所有已加载软件和配置信息的值减少,且测量链停止。 TPM 允许创建的密钥仅在保留测量的平台配置注册表具有特定值时可以使用。

  • 仅在启动度量准确时使用的键。 BitLocker 在 TPM 中创建的密钥仅在启动测量匹配预期值时可以使用。 当 Windows 引导管理器从系统硬盘驱动器上的操作系统卷运行时,计算启动过程中的步骤的预期值。 Windows 引导管理器以未加密的形式存储在引导卷上,它需要使用 TPM 密钥,以便它可以从操作系统卷将数据读取解密到内存,并且使用加密的操作系统卷继续启动。 如果启动其他操作系统或更改配置,TPM 中的度量值将不同,TPM 不会允许 Windows 启动管理器使用密钥,并且启动过程无法正常进行,因为无法解密操作系统上的数据。 如果有人尝试使用不同的操作系统或其他设备启动系统,则 TPM 中的软件或配置度量将错误,并且 TPM 将不允许使用解密操作系统卷所需的密钥。 作为防止失败的措施,如果测量值意外更改,用户始终可以使用 BitLocker 恢复密钥访问卷数据。 组织可以将 BitLocker 配置为将恢复密钥存储在 Active Directory 域服务 (AD DS) 中。

设备硬件特征对于 BitLocker 及其保护数据的能力很重要。 一个注意事项是,当系统处于登录屏幕时,设备是否提供攻击途径。 例如,如果 Windows 设备有一个允许直接访问内存的端口,以便有人可以插入硬件并读取内存,则攻击者可以在 Windows 登录屏幕时从内存中读取操作系统卷的解密密钥。 为了缓解此风险,组织可以配置 BitLocker,以使 TPM 密钥需要正确的软件测量和授权值。 系统启动过程在 Windows 引导管理器处停止,并提示用户输入 TPM 密钥的授权值或插入包含值的 USB 设备。 此过程可阻止 BitLocker 将密钥自动加载到内存,因为它在内存中可能易受攻击,但用户体验不太理想。

较新的硬件和 Windows 可以更好地协同工作,以禁用通过端口的直接内存访问并减少攻击途径。 结果是,组织可以部署更多系统,而无需用户在启动过程中输入其他授权信息。 正确的硬件允许 BitLocker 与“仅限 TPM”配置一起使用,为用户提供单一登录体验,而无需在启动期间输入 PIN 或 USB 密钥。

设备加密

设备加密是 BitLocker 的消费者版本,并且它采用了相同的基础技术。 其工作原理是,如果客户使用Microsoft帐户登录,并且系统满足新式待机硬件要求,则 BitLocker 驱动器加密会在 Windows 中自动启用。 恢复密钥备份在 Microsoft 云中,并且消费者可以通过其 Microsoft 帐户进行访问。 新式待机硬件要求告知 Windows 硬件适用于部署设备加密,并允许使用“仅限 TPM”配置来获得简单的使用者体验。 此外,新型待机硬件旨在降低测量值更改的可能性,并提示客户输入恢复密钥。

对于软件测量,设备加密依赖提供软件组件(基于来自 OEM 或 Microsoft 等制造商的代码签名)的颁发机构的测量,而不是软件组件本身的精确哈希。 这将允许组件的服务,而无需更改结果测量值。 对于配置测量,使用的值基于启动安全策略,而不是在启动过程中记录的很多其他配置设置。 这些值也较少改变。 结果是,以一种用户友好的方式在相应硬件上启用设备加密,同时还会保护数据。

测量的启动

Windows 8 引入了测量的启动,作为操作系统通过 Windows 操作系统的初始化在 TPM 中记录软件组件和配置信息的测量链的一种方式。 在以前的 Windows 版本中,度量链停止在 Windows 启动管理器组件本身,并且 TPM 中的度量值对了解 Windows 的启动状态没有帮助。

Windows 启动过程分阶段进行,通常涉及非Microsoft驱动程序,以与特定于供应商的硬件通信或实现反恶意软件解决方案。 对于软件,测量启动记录 TPM 中 Windows 内核、Early-Launch 反恶意软件驱动程序和启动驱动程序的度量值。 对于配置设置,Measured Boot 会记录安全相关信息,例如反恶意软件驱动程序使用的签名数据和有关 Windows 安全功能的配置数据 (,例如 BitLocker 是打开还是关闭) 。

测量的启动确保 TPM 测量完全反映 Windows 软件和配置设置的起始状态。 如果安全设置和其他保护已正确设置,则可以信任它们,以在此后维护正在运行的操作系统的安全。 其他方案可以使用操作系统的启动状态来确定正在运行的操作系统是否应受信任。

TPM 测量旨在避免将任何隐私敏感信息记录为测量。 作为额外隐私保护,测量的启动在 Windows 的初始起始状态处停止测量链。 因此,度量集不包括有关正在使用哪些应用程序或如何使用 Windows 的详细信息。 可以与外部实体共享度量信息,以表明设备正在强制执行适当的安全策略,并且未从恶意软件开始。

TPM 提供的以下方法可供各方案使用启动过程中在 TPM 中记录的测量:

  • 远程证明。 使用证明标识密钥,TPM 可以生成语句并加密签名, (或 引用) TPM 中的当前度量值。 Windows 可以为各种方案创建唯一的证明标识密钥,以防止单独的评估程序协作跟踪同一设备。 引用中的其他信息以加密方式混杂,以限制共享信息和改善隐私保护。 通过将引用发送到远程实体,设备可以证明用于启动设备并初始化操作系统的软件和配置设置。 证明标识密钥证书可进一步保障引用来自真实 TPM。 远程证明是在 TPM 中记录测量、生成引用并将应用信息发送到评估测量以建立设备信任的其他系统的过程。 图 2 说明了此过程。

当为 Windows 增加新的安全功能时,测量的启动会将安全相关的配置信息添加到 TPM 中记录的测量中。 测量的启动允许反映系统固件和 Windows 初始化状态的远程证明方案。

使用 TPM 创建启动软件和配置证据的过程。 图 2:用于使用 TPM 创建启动软件和配置证据的过程

设备运行状况证明

一些 Windows 改进可帮助安全解决方案实现远程证明方案。 Microsoft提供运行状况证明服务,该服务可为来自不同制造商的 TPM 创建证明标识密钥证书,并分析测量的启动信息以提取简单的安全断言,例如 BitLocker 是打开还是关闭。 可以使用简单的安全断言评估设备运行状况。

移动设备管理 (MDM) 解决方案可以从 Microsoft Health 证明服务为客户端接收简单的安全断言,而无需应对引用或详细 TPM 测量的复杂性。 MDM 解决方案可以通过隔离运行状况不好的设备或阻止访问云服务(例如 Microsoft Office 365)来对安全信息采取行动。

Credential Guard

Credential Guard 是 Windows 中的一项新功能,可帮助保护已部署 AD DS 的组织中的 Windows 凭据。 从历史上看,用户的凭据 ((例如登录密码) )经过哈希处理以生成授权令牌。 用户使用令牌来访问他们被允许使用的资源。 令牌模型的一个弱点是,有权访问操作系统内核的恶意软件可以浏览计算机的内存,并获取当前使用的所有访问令牌。 然后,攻击者可以使用获取的令牌登录到其他计算机并收集更多凭据。 这种攻击称为“传递哈希”攻击,这是一种恶意软件技术,可感染一台计算机以感染整个组织中的多台计算机。

与 Microsoft Hyper-V 将虚拟机 (VM) 彼此隔离的方式类似,Credential Guard 使用虚拟化来隔离在操作系统内核无法访问的内存区域中哈希凭据的进程。 此独立内存区域在启动过程中会进行初始化和保护,以便较大操作系统环境中的组件无法对其进行篡改。 Credential Guard 使用 TPM 通过 TPM 度量来保护其密钥,因此,只有在初始化单独的区域时,才能在启动过程步骤中访问这些密钥;它们不适用于普通操作系统内核。 Windows 内核中的本地安全颁发机构代码通过传递凭据和反过来接收一次性授权令牌,与隔离的内存区域交互。

生成的解决方案提供深层防御,因为即使恶意软件在操作系统内核中运行,它也无法访问独立内存区域中实际生成授权令牌的机密。 该解决方案无法解决密钥记录器的问题,因为此类记录器捕获的密码实际上通过普通的 Windows 内核,但与其他解决方案(例如用于身份验证的智能卡)结合使用时,Credential Guard 会大大增强 Windows 中凭据的保护。

总结

TPM 为 Windows 添加了基于硬件的安全优势。 安装在包含 TPM 的硬件上时,Window 可提供显著改进的安全优势。 下表总结了 TPM 的主要功能的主要优势。

功能 在具有 TPM 的系统上使用时的优势
平台加密提供程序 - 如果计算机遭到入侵,则无法从设备复制与证书关联的私钥。
- TPM 的字典攻击机制保护 PIN 值以使用证书。
虚拟智能卡 无需部署物理智能卡或读卡器即可实现类似于物理智能卡的安全性。
Windows Hello 企业版 - 无法在其他位置复制设备上预配的凭据。
- 在预配凭据之前确认设备的 TPM。
BitLocker 驱动器加密 企业可以使用多个选项来保护静态数据,同时平衡安全要求与不同设备硬件。
设备加密 借助Microsoft帐户和正确的硬件,使用者的设备可以无缝地受益于静态数据保护。
测量的启动 硬件信任根包含启动度量值,可帮助在远程证明期间检测恶意软件。
设备运行状况证明 MDM 解决方案可以在授予对资源或云服务(如 Office 365)的访问权限之前轻松执行远程证明并评估客户端运行状况。
Credential Guard 深度防御会提高,因此即使恶意软件在一台计算机上具有管理权限,也很难入侵组织中的其他计算机。

尽管上述某些功能 (具有更多的硬件要求,例如虚拟化支持) ,但 TPM 是 Windows 安全性的基石。 Microsoft和其他行业利益干系人继续改进与 TPM 相关的全球标准,并找到更多使用它来为客户提供实实在在利益的应用程序。 Microsoft在其适用于物联网的 Windows 版本中包括了对大多数 TPM 功能的支持, (称为 Windows IoT 核心版的 IoT) 。 可能在不安全的物理位置部署并连接到 Azure IoT 中心等云服务进行管理的 IoT 设备可以使用 TPM 通过创新方法来解决其不断涌现的安全要求。