托管 HSM 中的安全域概述

托管 HSM 是一个单租户、已通过美国联邦信息处理标准 (FIPS) 140-2 验证且高度可用的硬件安全模块 (HSM),其中包含客户控制的安全域。

要想运行,托管 HSM 必须具有一个安全域。 安全域是一个加密的 Blob 文件,其中包含 HSM 备份、用户凭据、签名密钥和托管 HSM 独有的数据加密密钥等项目。

托管 HSM 安全域具有以下用途:

  • 通过以加密方式将每个托管 HSM 关联到由你独自控制的信任根密钥来建立“所有权”。 这可确保 Azure 无法访问托管 HSM 上的加密密钥材料。

  • 为托管 HSM 实例中的密钥材料设置加密边界。

  • 允许你在发生灾难时完全恢复托管 HSM 实例。 涵盖以下灾难场景:

    • 在灾难性故障中,托管 HSM 实例的所有成员 HSM 实例均被破坏。
    • 客户软删除了托管 HSM 实例,并且在强制实施的保留期过后清除了资源。
    • 客户通过执行备份(其中包含托管 HSM 实例和所有数据)存档了某个项目,然后删除了与该项目关联的所有 Azure 资源。

如果没有安全域,灾难恢复无法实现。 Azure 无法恢复安全域,并且无法在没有安全域的情况下访问密钥。 因此,保护安全域对于实现业务连续性以及确保不会以加密方式将你锁定在系统之外至关重要。

安全域保护最佳做法

实施以下最佳做法,帮助确保保护安全域。

下载已加密的安全域

安全域是在初始化期间,在托管 HSM 硬件和服务软件 enclave 中生成的。 预配托管 HSM 后,必须至少创建 3 个 RSA 密钥对,并在请求安全域下载时将公钥发送到服务。 你还需要指定将来解密安全域所需的最小密钥数(仲裁)。

托管 HSM 将初始化安全域,并通过使用 Shamir 的机密共享算法提供的公钥对其进行加密。 下载安全域后,托管 HSM 将进入已激活状态,并准备好供你使用。

存储安全域密钥

安全域的密钥必须保存在脱机存储(例如已加密的 USB 驱动器)中,每个密钥的仲裁在单独的存储设备上拆分。 该存储设备必须保管在不同的地理位置,并存放在物理保险箱或锁柜中。 对于超敏感和高保障用例,甚至可以选择将安全域私钥存储在本地的脱机 HSM 上。

定期审查有关托管 HSM 仲裁的安全策略特别重要。 安全策略必须准确;必须保留安全域及其私钥存储位置的最新记录,并且必须知道谁有权控制安全域。

以下是安全域密钥处理禁止事项:

  • 绝对不能允许某个人以物理方式访问所有仲裁密钥。 换言之,m 必须大于 1(理想情况下应该 >= 3)。
  • 切勿将安全域密钥存储到具有 Internet 连接的计算机上。 连接到 Internet 的计算机面临各种威胁,例如病毒和恶意黑客。 可以通过脱机存储安全域密钥来大幅降低风险。

建立安全域仲裁

保护安全域和防止以加密方式锁定的最佳方法是使用托管 HSM 概念仲裁来实施多人员控制。 仲裁是拆分机密阈值,它将用于加密安全域的密钥划分给多个人员保管。 仲裁强制实施多人员控制。 这样,安全域就不会依赖于可能离职或怀有恶意的单个人员。

我们建议实施由 m 人组成的仲裁,其中 m 大于或等于 3。 托管 HSM 的安全域的最大仲裁大小为 10。

尽管更大的 m 大小可以提供更高的安全性,但它在处理安全域方面会造成额外的管理开销。 因此,必须慎重选择安全域仲裁并至少确保 m>= 3。

此外,应定期审查和更新安全域仲裁大小(例如,在人员变动的情况下)。 保持对安全域持有者进行记录尤其重要。 记录中应记载每一次所有权移交或更改。 策略应严格遵循仲裁和文档要求。

由于这些密钥允许访问托管 HSM 最敏感和最关键的信息,因此安全域私钥必须由组织中受信任的要职人员持有。 安全域持有者应充当独立的角色,并分散在组织中不同的地理位置。

例如,一个安全域仲裁可能包含四个密钥对,其中每个私钥由一个不同的人员持有。 至少需要由两个人员来共同重建一个安全域。 可将这些组成部分分配给关键人员,例如:

  • 业务部技术主管
  • 安全架构师
  • 安全工程师
  • 应用程序开发人员

每个组织的情况各不相同,可以根据其需求强制实施不同的安全策略。 我们建议定期审查安全策略以确保合规,并就仲裁及其大小做出决策。 你的组织可以选择审查的时间,但我们建议至少每季度开展一次安全域审查,并在出现以下情况时进行审查:

  • 某位仲裁成员离职。
  • 某种新的或正在兴起的威胁导致你决定增大仲裁大小。
  • 实施仲裁的过程发生了变化。
  • 属于安全域仲裁成员的 USB 驱动器或 HSM 丢失或遭到入侵。

安全域遭到入侵或丢失

如果安全域遭到入侵,恶意行动者可能会使用它来创建自己的托管 HSM 实例。 恶意行动者可以使用对密钥备份的访问权限来开始解密托管 HSM 上的密钥保护的数据。

丢失的安全域被认为已遭到入侵。

在安全域遭到入侵后,所有通过当前托管 HSM 加密的数据必须使用当前密钥材料进行解密。 必须预配新的 Azure 密钥保管库托管 HSM 实例,并且必须实施指向新 URL 的新安全域。

由于无法将密钥材料从一个托管 HSM 实例迁移到包含不同安全域的另一个实例,因此必须在经过深思熟虑后实施安全域,并且必须根据准确且定期审查的记录为其提供保护。

总结

安全域及其对应的私钥在托管 HSM 操作中发挥着重要作用。 这些项目类似于各种安全措施的组合,管理不善可能很容易给强大的算法和系统造成损害。 如果攻击者知道了安全措施组合,则即使是最强大的安全措施也不能提供安全保障。 正确管理安全域及其私钥对于有效使用托管 HSM 至关重要。

在制定和实施所需的策略、系统与标准来满足和增强组织安全目标之前,强烈建议查看 NIST 专刊 800-57 来了解密钥管理最佳做法。

后续步骤