加密概念
高層流程
你可在你的雲端控制一個主金鑰,而 OpenAI 永遠不會見到它
你的主金鑰會用來加密由 OpenAI 使用的資料加密金鑰(DEK)
OpenAI 會使用 DEK 將你的靜態資料加密。DEK 會由你的主金鑰加密,產生 eDEK(已加密的 DEK),並與你的資料一同儲存
要讀取資料時,OpenAI 會取用 eDEK,要求你的 KMS 將其解密為 DEK,然後再解密你的資料
EKM 加密如何運作?
詳情請參閱我們的文章:OpenAI Enterprise Key Management (EKM) Overview
OpenAI 會儲存我的 DEK 嗎?
不會——我們儲存的是由你的 KMS 產生的已加密 DEK(eDEK)。要解密資料時,我們會要求你的 KMS 將 eDEK 解密回 DEK。
OpenAI 會快取我的 DEK 嗎?
會——但只在記憶體中。這是為了提升效能,避免每次資料加密/解密請求都要存取你的 KMS。DEK 絕不會寫入儲存裝置。
雲端權限
OpenAI 對我的 KMS 會有哪些權限?
只有你透過所設定政策授予我們的權限。我們至少只需要 Encrypt/Decrypt 操作。另請在你的雲端 KMS 中為 OpenAI 建立新金鑰,不要重用任何現有且用於生產用途的金鑰。
OpenAI 何時會取得存取我的 KMS 的權限?
必須完成以下所有步驟:1. 你已識別 OpenAI 的身分(例如依雲端服務供應商而定,透過信任政策、工作負載身分等),2. 你已建立存取 KMS 的政策,以及 3. 你已將存取該政策的權限授予 OpenAI 的身分。若你只是建立了 KMS 而未完成上述所有步驟,OpenAI 並無存取權。
我一定要將主金鑰儲存在我的雲端嗎?
不一定——如何管理你的主金鑰由你決定。你可以使用雲端管理方案,或使用將金鑰分開儲存的外部方案。OpenAI 只需要對你的 KMS 呼叫 encrypt/decrypt 操作——至於主金鑰實際如何執行加密/解密,對我們而言屬於不透明的實作細節。
金鑰生命週期
DEK/eDEK 輪換(由 OpenAI 控制)
DEK/eDEK 多久輪換一次?
加密路徑每 24 小時一次(要求一對 DEK/eDEK 金鑰)
解密金鑰路徑每 1 小時一次(DEK -> eDEK)
當 DEK 改變時,我需要做任何事嗎?
不用——DEK/eDEK 輪換會在 OpenAI 內部完成。只要你的主金鑰仍然有效,任何以你的主金鑰加密的 eDEK 都可繼續解密成 DEK,然後用來解密你的資料。
主金鑰輪換與撤銷(由你控制)
金鑰輪換和金鑰撤銷多久發生一次?
這由你決定,因為 OpenAI 無法得知你的主金鑰情況。
金鑰輪換和金鑰撤銷有何分別?
金鑰撤銷會移除對使用舊金鑰加密資料的存取權。金鑰輪換則會用新金鑰加密資料,但會保留讀取舊資料的能力。
如果我撤銷主金鑰,會發生甚麼事?
如果金鑰被撤銷或權限被移除,當快取金鑰到期後,工作區最終將無法運作。屆時,OpenAI 將無法再解密已儲存資料或加密新資料。實際上,資料會被「粉碎」。
撤銷會多快生效?
OpenAI 會在記憶體中快取 DEK 以提升效能和韌性。撤銷通常會在一小時內生效,待快取金鑰過期並且重新驗證失敗後便會如此。
是否可以安全地測試撤銷?
不建議在生產工作區中測試撤銷,因為這會令現有資料永久無法存取。不過,客戶可以(亦應該)在沙盒環境中測試撤銷,以驗證行為正確並確認其信任假設。
如果金鑰被永久撤銷,可否透過附加新金鑰來恢復工作區?
不可以。一旦金鑰遺失,資料按設計便無法取回。唯一補救方法是建立一個新的工作區。
如果工作區因金鑰變更而無法存取,我們應該怎麼做?
預期的補救方法是建立新的工作區。更新 KMS 並不能恢復現有資料。
如果我們決定停止使用 CMEK,回退方案是甚麼?
目前沒有回退方案。一旦工作區以 CMEK 建立,所有相關資料都會使用客戶管理金鑰加密,沒有這些金鑰便無法存取。停止使用 CMEK 的唯一方法是建立新的工作區——現有已加密資料將永久無法存取。
當我輪換主金鑰時,會發生甚麼事?
系統會產生新的加密材料作加密用途,因此新的加密請求會使用新金鑰。不過,KMS 識別碼(ARN 或金鑰名稱)保持不變,而舊資料仍可解密。許多雲端服務供應商都提供自動金鑰輪換功能(AWS、GCP,Azure)。
當我輪換主金鑰時,OpenAI 會重新加密較舊資料嗎?
不會。新的加密材料只會用於加密新資料。
金鑰輪換或金鑰撤銷需要多久才會生效?
1 小時。這是因為 DEK/eDEK 會在記憶體中快取,而我們會每小時以你的 KMS 重新驗證這些項目。
切換 KMS 識別碼
切換 KMS 識別碼屬於金鑰撤銷還是金鑰輪換?
屬於金鑰撤銷。一把金鑰無法解密由另一把金鑰加密的資料。
OpenAI 可以協助我為 ChatGPT 工作區切換 KMS 識別碼嗎?
如果你確認目的是撤銷你的金鑰,我們可以協助你為 ChatGPT 工作區這樣做。請注意,當 KMS ARN 更新後,較舊資料將仍然無法存取,因此變更後你最終會同時有可存取及不可存取的資料混在一起。
OpenAI 可以協助我為 API 專案切換 KMS 識別碼嗎?
如果你使用 API,API 很容易讓你封存並建立新專案,因此請改為封存其資料反正已無法存取的專案,向 OpenAI 註冊新的 EKM 設定,並使用新的 KMS 金鑰建立新的 API 專案。
如果我想自行定期切換 KMS 識別碼,該怎麼辦?
不建議這樣做,因為你大概不會想定期撤銷自己的金鑰。不過,如果你使用支援 KMS 金鑰別名的雲端服務供應商(AWS example),你仍可這樣做。你可以向 OpenAI 註冊該 KMS 金鑰別名,然後在你的雲端服務供應商上,隨時替換該別名所指向的底層 KMS 識別碼,以發出金鑰撤銷。
Beta 與 GA 行為比較
在生產環境使用加密 beta 版時,是否有任何已知風險或系統層面的變更?
beta 環境在功能上等同 GA,預期無須任何遷移步驟。主要風險是某些邊緣情況功能可能因程式碼路徑未完整而暫未支援加密內容。這些情況很少見,而且正積極處理中。無論是否有這些潛在問題,資料都會完整加密並受到保護。
從 beta 過渡到 GA 會有任何遷移步驟嗎?
不會。使用加密 beta 版的工作區將在無需任何使用者操作下自動獲得 GA 支援。
其他技術細節
信封式加密與權限
就 EKM 而言,我們需要向 OpenAI 授予 GenerateDataKey 權限嗎?
不需要。OpenAI 只需要你的 KMS 金鑰具備 Encrypt 和 Decrypt 權限。EKM 整合不需要 GenerateDataKey 權限。
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 部分中斷期間持續運作(最長至 DEK 快取 TTL)。
缺點:在 OpenAI 端的實作稍為複雜。
這個設計讓 OpenAI 能在盡量降低營運風險和客戶成本的同時,提供強而有力的安全保證。
DEK 多久輪換一次?
每個 DEK 大約每 60 分鐘輪換一次。這提供了時間隔離——即使 DEK 不知何故遭到洩露,影響也只會限於該一小時時段內加密的資料。
KMS 請求量與可觀測性
我們看到的 KMS 請求遠少於使用者訊息數量。這些數字應該相符嗎?
不會,兩者不會直接對應。
由於 OpenAI 基於效能考量會在記憶體中快取 DEK,因此只有在需要解密 DEK 時才會呼叫 KMS——而不是每次加密或解密操作都呼叫。結果是,你應可預期:
KMS 請求會少於使用者互動次數。
當快取的 DEK 到期(約每小時一次)或需要存取較舊的已加密資料時,會出現偶發尖峰。
當擷取歷史資料時,例如使用者延續一段長時間進行中的對話而必須載入較舊 DEK,便會有額外呼叫。
KMS 請求的確實數量取決於快取狀態、使用者行為、資料存取模式及對話長度,因此不會與訊息量直接對應。
