TPM 基础知识
本文介绍受信任的平台模块 (TPM 1.2 和 TPM 2.0) 组件,并说明如何使用它们来缓解字典攻击。
TPM 是一种微芯片,旨在提供与安全相关的基本功能,主要涉及加密密钥。 TPM 安装在计算机的主板上,它使用硬件总线与系统的其余部分进行通信。
包含 TPM 的设备可以创建加密密钥并对其进行加密,以便这些密钥只能由 TPM 解密。 此过程通常称为“包装”或“绑定”密钥,可帮助防止密钥泄露。 每个 TPM 都有一个主包装密钥,称为 存储根密钥,该密钥存储在 TPM 本身中。 在 TPM 中创建的存储根密钥或 认可密钥的私有部分永远不会向任何其他组件、软件、进程或用户公开。
可以指定是否可以迁移 TPM 创建的加密密钥。 如果指定可以迁移密钥,则可以向其他组件、软件、进程或用户公开密钥的公共和私有部分。 如果指定无法迁移加密密钥,则永远不会在 TPM 外部公开密钥的专用部分。
包含 TPM 的设备还可以创建一个已包装并绑定到某些平台度量的键。 仅当这些平台度量具有与创建密钥时相同的值时,才能解包这种类型的密钥。 此过程称为 密封 TPM 的密钥。 解密密钥称为 “解封”。 TPM 还可以对 TPM 外部生成的数据进行密封和解封。 使用密封密钥和软件(如 BitLocker 驱动器加密)可以锁定数据,直到满足特定的硬件或软件条件。
使用 TPM 时,密钥对的专用部分与操作系统控制的内存分开。 可以将密钥密封到 TPM,并且可以在解封并释放密钥以供使用之前,对系统状态进行某些保证 (保证,以定义系统) 的可信度。 TPM 使用自己的内部固件和逻辑线路来处理指令。 因此,它不依赖于操作系统,也不会暴露在操作系统或应用程序软件中可能存在的漏洞中。
- 有关哪些 Windows 版本支持哪些版本的 TPM 的信息,请参阅 受信任的平台模块技术概述。
- 有关可以使用组策略设置集中控制哪些 TPM 服务的详细信息,请参阅 TPM 组策略设置。
这些版本中可用的功能由受信任的计算组 (TCG) 在规范中定义。 有关详细信息,请参阅受信任的计算组网站上的“受信任的 平台模块”页 。
以下部分概述了支持 TPM 的技术:
支持证明的测量启动
测量启动功能为反恶意软件提供受信任的 (,防止欺骗和篡改所有启动组件的日志) 。 反恶意软件可以使用日志来确定之前运行的组件是可信的还是感染了恶意软件。 它还可以将测量启动日志发送到远程服务器进行评估。 远程服务器可以通过与客户端上的软件交互或通过带外机制(视情况而定)来启动修正操作。
基于 TPM 的虚拟智能卡
警告
Windows Hello 企业 版和 FIDO2 安全密钥是适用于 Windows 的新式双因素身份验证方法。 建议使用虚拟智能卡的客户迁移到 Windows Hello 企业版或 FIDO2。 对于新的 Windows 安装,建议使用 Windows Hello 企业版或 FIDO2 安全密钥。
虚拟智能卡模拟传统智能卡的功能。 虚拟智能卡使用 TPM 芯片,而不是使用单独的物理智能卡和读卡器。 这大大降低了企业中智能卡的管理和部署成本。 对于最终用户,虚拟智能卡始终在设备上可用。 如果用户需要使用多台设备,则必须为每个设备向用户颁发虚拟智能卡。 在多个用户之间共享的计算机可以托管多个虚拟智能卡,每个用户一张虚拟智能卡。
基于 TPM 的证书存储
TPM 保护证书和 RSA 密钥。 TPM 密钥存储提供程序 (KSP) 提供了 TPM 的一种强大保护私钥的简便方法。 当组织注册证书时,TPM KSP 会生成密钥。 TPM 还保护从外部源导入的证书。 基于 TPM 的证书是标准证书。 证书永远不能离开生成密钥的 TPM。 TPM 还可用于通过加密 API 进行加密操作 :下一代 (CNG) 。
TPM Cmdlet
可以使用 Windows PowerShell 管理 TPM。 有关详细信息,请参阅 Windows PowerShell 中的 TPM Cmdlet。
物理状态接口
对于 TPM 1.2,TPM 的 TCG 规范通常需要物理存在 (按一个键) 来打开、关闭或清除 TPM。 除非单个 OEM 提供这些操作,否则通常无法使用脚本或其他自动化工具自动执行这些操作。
TPM 1.2 状态和初始化
TPM 1.2 具有多个可能的状态。 Windows 自动初始化 TPM,使 TPM 处于已启用、激活和拥有的状态。
认可密钥
仅当 TPM 包含认可密钥(即 RSA 密钥对)时,受信任的应用程序才能使用 TPM。 密钥对的私钥的一半保存在 TPM 中,它永远不会在 TPM 外部显示或访问。
密钥证明
TPM 密钥证明允许证书颁发机构验证私钥是否受 TPM 保护,以及 TPM 是否为证书颁发机构信任的私钥。 证明有效的认可密钥用于将用户标识绑定到设备。 具有 TPM 证明密钥的用户证书通过 TPM 提供的密钥的非可移植性、防锤性和隔离性提供支持,从而提供更高的安全保障。
防锤
当 TPM 处理命令时,它会在受保护的环境中执行此操作。 例如,离散芯片上的专用微控制器,或主 CPU 上的特殊硬件保护模式。 TPM 用于创建未在 TPM 外部披露的加密密钥。 在提供正确的授权值后,它将在 TPM 中使用。
TPM 具有防打击保护,旨在防止暴力攻击或更复杂的字典攻击,这些攻击尝试确定使用密钥的授权值。 基本方法是,TPM 在阻止更多使用密钥和锁的尝试之前,只允许有限数量的授权失败。 为单个密钥提供故障计数在技术上并不实用,因此发生过多的授权失败时,TPM 具有全局锁定。
由于许多实体可以使用 TPM,因此一次授权成功无法重置 TPM 的反打击保护。 这可以防止攻击者创建具有已知授权值的密钥,然后使用它重置 TPM 的保护。 TPM 旨在忘记一段时间后的授权失败,因此 TPM 不会不必要的进入锁定状态。 TPM 所有者密码可用于重置 TPM 的锁定逻辑。
TPM 2.0 防锤
TPM 2.0 具有明确定义的反锤行为。 这与 TPM 1.2 形成鲜明对比,TPM 1.2 的防锤保护由制造商实施,其逻辑在整个行业中差异很大。
对于具有 TPM 2.0 的系统,Windows 将 TPM 配置为在 32 次授权失败后锁定,并且每 10 分钟忘记一次授权失败。 这意味着用户可能会快速尝试使用授权值错误的密钥 32 次。 对于 32 次尝试中的每一次,TPM 都会记录授权值是否正确。 这无意中导致 TPM 在 32 次尝试失败后进入锁定状态。
尝试在接下来的 10 分钟内使用具有授权值的密钥不会返回成功或失败。 相反,响应指示 TPM 已锁定。 10 分钟后,将忘记一个授权失败,并且 TPM 记住的授权失败数将下降到 31。 TPM 将保留锁定状态并返回到正常操作。 使用正确的授权值,如果在接下来的 10 分钟内未发生授权失败,则可正常使用密钥。 如果经过 320 分钟且未发生授权失败,TPM 不会记住任何授权失败,并且可能会再次发生 32 次失败的尝试。
Windows 不要求 TPM 2.0 系统在系统完全关闭或系统进入休眠状态时忘记授权失败。 Windows 要求在系统正常运行、处于睡眠模式或处于关闭以外的低功率状态时忘记授权失败。 如果锁定了具有 TPM 2.0 的 Windows 系统,如果系统处于打开状态 10 分钟,则 TPM 将保留锁定模式。
通过将重置锁定命令发送到 TPM 并提供 TPM 所有者密码,可以立即完全重置 TPM 2.0 的防锤保护。 默认情况下,Windows 会自动预配 TPM 2.0 并存储 TPM 所有者密码供系统管理员使用。
在某些实现中,TPM 所有者授权值集中存储在 Active Directory 中,而不是存储在本地系统上。 管理员可以执行 tpm.msc
并选择重置 TPM 锁定时间。 如果 TPM 所有者密码存储在本地,则用于重置锁定时间。 如果 TPM 所有者密码在本地系统上不可用,则管理员必须提供该密码。 如果管理员尝试使用错误的 TPM 所有者密码重置 TPM 锁定状态,则 TPM 不允许在 24 小时内再次尝试重置锁定状态。
TPM 2.0 允许在没有关联的授权值的情况下创建某些密钥。 当 TPM 锁定时,可以使用这些键。 例如,具有默认仅限 TPM 配置的 BitLocker 可以使用 TPM 中的密钥启动 Windows,即使 TPM 已锁定也是如此。
默认值背后的理由
最初,BitLocker 允许的 PIN 为 4 到 20 个字符。 Windows Hello 有自己的用于登录的 PIN,可以是 4 到 127 个字符。 BitLocker 和 Windows Hello 都使用 TPM 来防止 PIN 暴力攻击。
Windows 10 版本 1607 及更早版本使用了字典攻击防护参数。 字典攻击防护参数提供了一种平衡安全需求和可用性的方法。 例如,当 BitLocker 与 TPM + PIN 配置一起使用时,PIN 猜测数会随时间推移而受到限制。 此示例中的 TPM 2.0 可以配置为立即只允许 32 个 PIN 猜测,然后每两小时只能再进行一次猜测。 这每年最多有大约 4,415 次猜测。 如果 PIN 为四位数,则两年内可以尝试所有 9999 可能的 PIN 组合。
从 Windows 10 版本 1703 开始,BitLocker PIN 的最小长度增加到 6 个字符,以便更好地与使用 TPM 2.0 的其他 Windows 功能(包括 Windows Hello)保持一致。 增加 PIN 长度需要攻击者进行较多的猜测。 因此,缩短了每次猜测之间的锁定持续时间,使合法用户能够更快地重试失败的尝试,同时保持类似的保护级别。 如果需要使用锁定阈值和恢复时间的旧参数,请确保已启用 GPO,并将 系统配置为使用 TPM 2.0 的旧字典攻击防护参数设置。
基于 TPM 的智能卡
可以将基于 Windows TPM 的智能卡(即虚拟智能卡)配置为允许登录系统。 与物理智能卡相比,登录过程使用基于 TPM 的密钥和授权值。 以下列表显示了虚拟智能卡的优点:
- 物理智能卡只能对物理智能卡 PIN 强制锁定,并且可以在输入正确的 PIN 后重置锁定。 使用虚拟智能卡时,TPM 的防打击保护在身份验证成功后不会重置。 在 TPM 进入锁定之前允许的授权失败次数包括许多因素。
- 硬件制造商和软件开发人员可以使用 TPM 的安全功能来满足其要求。
- 选择 32 个失败作为锁定阈值的意图是避免用户锁定 TPM (,即使在学习键入新密码时,或者他们经常锁定和解锁计算机) 也是如此。 如果用户锁定 TPM,则必须等待 10 分钟或使用其他凭据登录,例如用户名和密码。