Split-Trust Encryption Tool (STET) 提供分配機制,可安全地在 Google Cloud 內外傳輸金鑰資料,並以可驗證的加密方式保護資料,避免 Google Cloud 內部人員存取。
為此,我們採用了兩個金鑰管理系統 (KMS),一個是內部系統,另一個是外部系統。Google Cloud即使其中一個 KMS 遭到入侵,第二個 KMS 也能確保資料隱私。
以下是一系列範例,說明如何將資料傳輸至 Cloud Storage,並使用 Compute Engine VM 進行運算。這些範例會逐步說明如何提高安全性,協助您瞭解 STET 如何融入安全流程。
第 1 級:Cloud Storage
將資料擷取至 Google Cloud時,您可以使用 Cloud Storage,讓雲端工作負載存取資料。您可以將資料從內部部署運算環境上傳至 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 級:機密運算
機密 VM 執行個體會加密記憶體,進一步防範使用中的資料遭到未經授權的存取。在許多威脅模型中,機密 VM 執行個體比標準執行個體更值得信賴,因此可用於處理機密工作負載。
如果您的威脅模型依賴機密運算,其中一個問題是確保工作負載在機密 VM 執行個體中執行。遠端認證:工作負載可藉此向遠端證明自己是在 Confidential VM 執行個體中執行,並確認工作負載設定和環境的許多其他屬性。由於認證是由平台產生,工作負載無法建立與實際環境不符的虛假認證。
KMS 可以要求並評估這些認證,再允許存取金鑰。這項規定可確保只有預期工作負載能解密資料,即使一般憑證遭到盜用也一樣。
第 5 級:信任分割
使用單一 KMS 時,該 KMS 會獨自控管加密金鑰。如果 KMS 運算子取得加密資料的密文,他們就能解密成明文。如果 KMS 由完全值得信賴的實體運作,或許可以接受這項風險,但有些威脅模型需要從 KMS 移除單方面控制權。
使用 STET 時,您可以選擇將這項信任關係拆分為兩個 KMS 系統,這樣一來,兩個 KMS 系統都不會有足夠的資訊來解密資料。需要兩個 KMS 運算子互相勾結 (並存取密文),才能解密您的資料。
如果您使用機密 VM,STET 也會使用儲存在需要認證的 KMS 中的金鑰,協助加密及解密資料。
總而言之,STET 可確保只有資料來源 (例如內部部署系統) 和資料消費者 (例如在機密 VM 執行個體中執行的工作負載) 能夠存取純文字資料。
如要進一步瞭解如何使用 STET,請參閱 GitHub 存放區和快速入門指南。
搭配 STET 的 Confidential Space
如果您使用 Confidential Space,STET 就能在存取儲存在 Cloud KMS 中的金鑰加密金鑰 (KEK) 時,使用 Confidential Space 的驗證權杖做為驗證證據。
STET 會處理工作負載的 Cloud KMS 金鑰存取權,並支援使用 Confidential Space 對加密工作流程、解密工作流程,或加密和解密工作流程執行驗證。
您可以建立 STET 設定,其中包含工作負載身分集區 (WIP) 名稱、Cloud KMS URI 和解密資訊等。STET 接著會使用該資訊整合至您的 Confidential Space 設定。
詳情請參閱 GitHub 存放區和私密空間整合指南。