密钥轮替

Cloud KMS 中的轮替

在 Cloud KMS 中,密钥轮替的过程是生成密钥的新版本并将该版本标记为主版本

创建新的密钥版本将会生成新的加密密钥材料,将该密钥版本标记为主版本会导致其用于加密任何新数据。每个密钥在任何时间点都有一个指定的主版本,默认情况下,Cloud KMS 使用该版本来加密数据。

轮替密钥不会停用或销毁以前的密钥版本。以前的密钥版本将不再是主密钥版本,但仍可用于解密数据。

轮替密钥的原因

通过轮替密钥可以轻松地遵循标准安全做法,例如支付卡行业数据安全标准 (PCI DSS) 要求。定期轮替密钥是安全性方面的一种最佳做法,原因如下:

  • 为了限制可用于对特定密钥版本进行密码分析的加密消息数。同样,为了限制可用于对特定密钥版本进行密码分析的加密字节总数。密钥生命周期建议是特定于算法的,并且基于生成的消息数或加密的总字节数。例如,伽罗瓦/计数器模式 (GCM) 中的对称密钥的推荐密钥生命周期基于加密消息的数量,如 https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-38d.pdf 中所述。

  • 为了确保系统已准备好应对需要转为使用更强大的算法的情况。如果正在进行的操作不包含密钥轮替,则系统将依赖于特定密钥,从而难以在突发事件发生后启动密钥轮替。

    同样,为了确保系统已准备好应对密钥泄露的情况。不应在突发事件实时恢复期间首次尝试密钥轮替。

  • 为了减少密钥版本被破解时不受保护的密文量。

  • 为了防止使用被破解或疑似被破解的密钥版本。

密钥轮替频率

加密密钥可以通过两种方式进行轮替:

  • 定期轮替:定期轮替使用的加密密钥,限制受单个密钥保护的数据量。定期轮替可用于实现内部业务合规。
  • 不规则轮替:可疑事件后的临时轮替,作为额外的权宜之计。使用先前的密钥版本加密的数据也可能需要重新加密。

设置定期轮替计划(例如每 90 天)操作简单,可提升安全性。定期轮替可限制使用单个密钥加密的数据量,避免在需要不规则轮替时密钥被锁定,同时允许停用密钥版本以限制对旧数据的访问。

更严格和复杂的实现还可以指定停用计划,以在一定时间段之后重新加密旧数据并停用密钥(例如,为长达 5 年的数据启用 20 个密钥版本)。这一过程很难安全且正确地实施。

不建议仅依靠不规则轮替,您可以根据需要将不规则轮替与定期轮替计划结合使用。

自动轮替

通过提供轮替计划,Cloud KMS 将自动为您轮替密钥。密钥的轮替计划可以使用 gcloud 命令行工具或通过 Google Cloud Platform Console 进行设置。

轮替计划由轮替周期和下次轮替时间定义。轮替周期是两次自动生成新密钥版本之间的时间,且必须至少为一天。下次轮替时间是计划下次轮替的日期,必须是未来的时间。自动轮替将在下次轮替时间开始,并在此后的每个轮替周期发生。

如果仅指定下次轮替时间(而未指定轮替周期),则密钥将安排在该日期轮替一次,并在此时清除该字段。仅指定轮替周期而未指定下次轮替时间会导致错误。

通过 CreateCryptoKeyVersionUpdateCryptoKeyVersion 手动执行的密钥轮替不会影响密钥的轮替计划。

使用 gcloud 命令行工具启用自动轮替时,可以指定任意时长的轮替周期。在 GCP Console 中启用自动轮替时,轮替周期提供常用选项(例如 30 天),但您也可以将其设置为自定义天数。

手动轮替

手动轮替可用于不规则密钥轮替,也可用于在 Cloud KMS 外部管理的定期密钥轮替。您可以使用 gcloud 命令行工具或通过 GCP Console 手动轮替密钥。

轮替注意事项

  • 使用上述密钥轮替命令时,密钥轮替不会使用新生成的密钥版本重新加密已经加密的数据。 如果您怀疑存在未经授权使用密钥的情况,则应当重新加密受该密钥保护的数据,然后停用安排销毁先前的密钥版本。
此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
Cloud KMS 文档