分片信任加密工具 (STET) 提供了一种分发机制,该机制支持以可验证和加密方式保护登录/退出 Google Cloud 的安全密钥数据传输免受 Google Cloud 内部人员的影响。
为此,我们使用了两个密钥管理系统 (KMS),一个是Google Cloud的内部 KMS,另一个是外部 KMS。即使一个 KMS 遭到入侵,第二个 KMS 也能帮助保护您的数据隐私。
以下是一系列示例,涉及传输到 Cloud Storage 并使用 Compute Engine 虚拟机计算得出的数据。这些示例逐步介绍了越来越高的安全级别,以帮助说明 STET 如何融入您的安全流程。
第 1 级:Cloud Storage
将数据注入到 Google Cloud时,您可以使用 Cloud Storage 将数据提供给云工作负载。您可以将本地计算环境中的数据上传到 Cloud Storage 存储分区,为您的工作负载授予对该存储分区的访问权限,并让工作负载(或多个工作负载)根据需要使用这些数据。此策略避免了直接创建与工作负载的活跃连接以向其发送所需数据的复杂性。
Cloud Storage 始终会对静态数据进行加密。但是,如果要将 Cloud Storage 委托为您执行该加密,则它能够在加密之前访问未加密的数据(明文)以及用于创建加密数据的加密密钥(密文)。根据您的威胁模型,在将数据发送到 Cloud Storage 之前,最好对其进行加密,使 Cloud Storage 始终无法查看明文。
第 2 级:客户端加密
使用客户端加密功能时,您可以在数据上传到 Cloud Storage 之前对其进行加密,并仅在数据下载到工作负载后进行解密。因此,Cloud Storage 可以访问密文,但无法访问明文。Cloud Storage 会在存储之前增加另一层加密,但数据的主要保护是在上传之前执行的加密。
使用此方法时,您现在需要向工作负载授予对解密数据所需的加密密钥的访问权限。此操作本身可能是一项棘手的任务,因为加密密钥授予了移除原始加密层并可让您深入了解数据的权限。
第 3 级:外部密钥管理
解决密钥管理问题的一种常用方法是使用专用的密钥管理服务 (KMS) 保存密钥并管理其访问权限。每次尝试加密或解密时,都必须向 KMS 发送请求。KMS 可以根据各种条件授予访问权限,以确保只有有关方才能解密数据。
KMS 系统可以要求在授予加密密钥访问权限之前满足许多不同的条件,但它们通常需要与 KMS 上配置的政策匹配的凭据。因此,拥有该凭据的任一方都可以访问加密密钥,并且能够解密数据。
第 4 级:机密计算
机密虚拟机实例在运行时会加密内存,从而提供额外的保护,以防在使用过程中意外访问数据。对于许多威胁模型,机密虚拟机实例比标准实例更值得信任,从而可用于敏感工作负载。
如果您的威胁模型依赖于机密计算,则有一个问题是确保工作负载在机密虚拟机实例中运行。远程证明是一种方法,工作负载可以通过该方法向远程方证明其确实在机密虚拟机实例中运行,并确认许多有关工作负载的配置和环境的其他属性。由于证明是由平台生成的,因此工作负载无法创建不反映其实际环境的假证明。
KMS 可以先要求和评估这些证明,然后再允许访问密钥。此要求有助于确保即使常规凭据被破解,也仅允许预期的工作负载解密数据。
第 5 级:分片信任
使用单个 KMS 时,KMS 可以完全控制加密密钥。如果 KMS 运维人员要获取加密数据的密文,则他们将具备密文解密为明文所需的一切。虽然在 KMS 由完全受信任的实体操作时,这种风险可能可接受,但某些威胁模型需要从 KMS 中移除单方面控制。
借助 STET,您可以选择在两个 KMS 系统之间拆分此信任关系,并且任何一个 KMS 都没有足够的信息来解密数据。它要求两位 KMS 运维人员之间有冲突(且能够访问密文),才能解密数据。
如果您使用的是机密虚拟机,STET 还可以使用存储在需要证明的 KMS 中的密钥来加密和解密数据。
总而言之,STET 有助于确保只有有权访问明文数据的实体才是数据数据初始所有者(例如,本地系统)和数据使用者(例如,在机密虚拟机实例中运行的工作负载)。
如需详细了解如何使用 STET,请参阅 GitHub 代码库和快速入门指南。
带有 STET 的 Confidential Space
如果您使用机密空间,则 STET 在访问存储在 Cloud KMS 中的密钥加密密钥 (KEK) 时,可以使用机密空间中的认证令牌作为认证证据。
STET 会处理对工作负载的 Cloud KMS 密钥的访问权限,并支持使用 Confidential Space 对加密工作流、解密工作流或加密和解密工作流同时执行证明。
您可以创建 STET 配置,其中包含工作负载身份池 (WIP) 名称、Cloud KMS URI 和解密信息等信息。然后,STET 会使用这些信息来集成到您的“私密空间”设置中。
如需了解详情,请参阅 GitHub 代码库和“机密聊天室”集成指南。