加密概念
总体流程
你在云端控制主密钥,OpenAI 永远无法访问该密钥
你的主密钥用于加密 OpenAI 使用的数据加密密钥 (DEK)
OpenAI 使用 DEK 加密你的静态数据。DEK 由你的主密钥加密生成 eDEK(加密后的 DEK),并与数据一起存储
读取数据时,OpenAI 会提取 eDEK,并请求你的 KMS 将其还原为 DEK,进而解密数据
EKM 加密是如何运作的?
请参阅我们的文章以获取详细信息:OpenAI 企业密钥管理(EKM)概述
OpenAI 是否存储我的 DEK?
不存储。我们仅存储由你的 KMS 生成的加密后的 DEK(eDEK)。解密数据时,我们会请求你的 KMS 将 eDEK 解密回 DEK。
OpenAI 是否缓存我的 DEK?
是的,仅在内存中缓存。这是为了提升性能,避免每次加密/解密请求都访问你的 KMS。DEK 永远不会写入存储。
云端权限
OpenAI 在我的 KMS 上拥有哪些权限?
OpenAI 仅拥有你通过策略授予的权限。我们至少需要加密/解密(Encrypt/Decrypt)操作权限。请为 OpenAI 在你的云 KMS 中创建一个新密钥,而不是复用任何现有的生产用密钥。
OpenAI 何时获得访问我 KMS 的权限?
必须完成以下所有步骤:1. 你已识别 OpenAI 的身份(通过信任策略、工作负载身份等,具体取决于云提供商);2. 你已创建用于访问 KMS 的策略;3. 你已将访问该策略的权限分配给 OpenAI 的身份。如果你只创建了 KMS 而未完成这些步骤,OpenAI 将无法访问。
我必须将主密钥存储在我的云中吗?
不一定。主密钥如何管理由你决定。你可以选择使用云托管解决方案或外部存储方案。OpenAI 仅需调用 KMS 的加密/解密操作,主密钥的实际加密/解密实现细节对我们是不透明的。
密钥生命周期
DEK/eDEK 轮换(由 OpenAI 控制)
DEK/eDEK 的轮换频率是多少?
每 24 小时轮换一次加密路径上的 DEK/eDEK 密钥对
每 1 小时轮换一次解密路径上的 DEK(DEK → eDEK)
当 DEK 发生变化时,我需要做什么?
不需要。DEK/eDEK 的轮换由 OpenAI 内部完成。只要主密钥有效,任何由其加密的 eDEK 都能继续解密为 DEK,然后用于解密数据。
主密钥轮换和撤销(由你控制)
密钥轮换与撤销的频率是多少?
由你决定,因为 OpenAI 无法直接看到你的主密钥。
密钥轮换和密钥撤销有什么区别?
密钥撤销会移除对使用旧密钥加密的数据的访问权限。密钥轮换使用新密钥加密数据,但仍保留对旧数据的读取访问权限。
如果我撤销主密钥会发生什么?
如果密钥被撤销或权限移除,工作空间在缓存密钥过期后将无法正常运行。届时 OpenAI 无法解密已存数据或加密新数据,数据实际上会被“销毁”。实际上,数据已被销毁。
撤销操作多久才会生效?
OpenAI 将 DEK 缓存在内存中,以提升性能和系统韧性。撤销操作通常在 1 小时内生效,一旦缓存的密钥过期且重新验证失败。
可以安全地测试撤销吗?
不建议在生产环境中测试撤销,因为会导致现有数据永久无法访问。但客户可以(且应当)在沙盒环境中测试撤销,以验证其行为并确认自己的信任假设。
如果密钥被永久撤销,能否通过附加新密钥来恢复工作空间?
无法恢复。一旦密钥丢失,数据便无法找回。唯一的补救措施是创建新的工作空间。
如果工作空间因密钥变更无法访问,怎么办?
预期的补救措施是创建新工作空间。更新 KMS 无法恢复现有数据。
停止使用 CMEK 的回退计划是什么?
没有回退计划。一旦使用 CMEK 创建工作空间,所有数据将被客户管理的密钥加密,无法在没有密钥的情况下访问。停止使用 CMEK 的唯一方式是创建新工作空间——现有加密数据将永久无法访问。
轮换主密钥时会发生什么?
系统将生成新的加密材料,用于加密新的请求。KMS 标识符(ARN 或密钥名称)保持不变,旧数据仍然可解密。许多云提供商提供自动密钥轮换功能(AWS、GCP、Azure)。
OpenAI 是否会重新加密旧数据?
不会。新的加密材料只会用于加密新数据。
密钥轮换或撤销多久生效?
1 小时。由于 DEK/eDEK 缓存在内存中,OpenAI 会每小时与 KMS 重新验证这些条目。
切换 KMS 标识符
切换 KMS 标识符属于密钥撤销还是密钥轮换?
这是密钥撤销。一个密钥不能解密由另一个密钥加密的数据。
OpenAI 能帮我为 ChatGPT 工作空间切换 KMS 标识符吗?
如果你确认要撤销密钥,OpenAI 可以协助你切换 KMS 标识符。请注意,KMS ARN 更新后,旧数据将不可访问,数据将变得“部分可访问、部分不可访问”。
OpenAI 能帮我为 API 项目切换 KMS 标识符吗?
如果你使用的是 API,通过 API 可以轻松归档并创建新项目。因此,请改为归档那个数据已无法访问的项目,然后向 OpenAI 注册新的 EKM 配置,并使用新的 KMS 密钥创建一个新的 API 项目。
如果我想定期切换 KMS 标识符怎么办?
不推荐定期切换,因为你可能不希望定期撤销密钥。不过,如果你使用的云提供商支持 KMS 密钥别名(例如 AWS),你仍然可以这样做。你可以将 KMS 密钥别名注册到 OpenAI,然后在你的云提供商中随时更换别名指向的底层 KMS 标识符,以执行密钥撤销。
Beta 与正式版行为
在生产环境中使用加密 Beta 时是否有已知风险或系统级变化?
Beta 环境与 GA 环境功能等效,预计不会有迁移步骤。主要风险是,由于代码路径不完整,某些边缘案例功能可能尚不支持加密内容。但这些问题极为罕见且在积极解决中。无论是否存在这些潜在问题,数据均受到全面加密和保护。
从 Beta 迁移到 GA 是否需要迁移步骤?
不需要。使用加密 Beta 版的工作空间将自动获得正式版支持,无需任何用户操作。
其他技术细节
信封加密与权限
我们需要为 EKM 向 OpenAI 授予 GenerateDataKey 权限吗?
不需要。OpenAI 仅需要你 KMS 密钥上的加密和解密权限,GenerateDataKey 权限对于 EKM 集成不是必需的。
OpenAI 对客户数据使用信封加密吗?
是的。OpenAI 使用信封加密模型:
客户 KMS:管理密钥加密密钥(KEK)。OpenAI 永远无法访问或存储 KEK。
OpenAI 基础设施:生成并管理数据加密密钥(DEK)。每个 DEK 在存储前都由 KEK 加密(封装)。
数据流:
客户数据用 DEK 加密。
DEK 使用 KEK 加密,生成 eDEK。
eDEK 与加密数据一起存储。
解密数据时,OpenAI 请求 KMS 解密 eDEK,获取 DEK,再解密数据。
为什么 OpenAI 选择这种加密模型而不是让 KMS 同时管理 KEK 和 DEK?
两种常见信封加密方法:
KMS 管理 KEK 和 DEK:
优点:实现简单,无需维护加密基础设施。
缺点:每次加密/解密都要调用 KMS,增加延迟和成本,并存在单点故障风险。
KMS 管理 KEK / OpenAI 管理 DEK(我们的方法):
优点:显著降低延迟和成本,提升可扩展性和可靠性,在 KMS 故障期间仍能运行。
缺点:OpenAI 侧实现较复杂。
这种设计让 OpenAI 能够在保障安全的同时,降低客户的运营风险和成本。
DEK 多久轮换一次?
每个 DEK 大约每 60 分钟轮换一次。这提供了时间隔离——即使 DEK 以某种方式遭到泄露,影响也将仅限于该一小时内加密的数据。
KMS 请求量与可观测性
我们观察到的 KMS 请求数量远少于用户消息数量。这些数字应该一致吗?
不,它们不会直接相关。
由于 OpenAI 出于性能考虑将 DEK 缓存在内存中,因此仅在需要解密 DEK 时才会调用 KMS,而不是在每次加密或解密操作时都调用。因此,你可以预期:
KMS 请求数量少于用户交互次数。
当缓存的 DEK 过期(大约每小时一次),或需要访问较早加密的数据时,偶尔会出现请求峰值。
在检索历史数据时,会产生额外的调用,例如当用户继续一个长时间进行的对话且必须加载较早的 DEK 时。
KMS 请求的确切数量取决于缓存状态、用户行为、数据访问模式和对话长度,因此不会与消息量直接相关。
