程式碼實驗室:提示加密 SDK

1. 總覽

本程式碼實驗室會引導您使用提示加密 SDK,與 Google Cloud 受信任的執行環境 (TEE) 中提供的模型安全地通訊。

課程內容

  • 在用戶端和遠端推論伺服器之間建立經過加密驗證的加密管道。
  • 使用經過認證的 TLS 驗證伺服器身分 (軟體雜湊、硬體型號、啟動設定)。
  • 確保資料主權,在提示抵達已驗證的 Enclave 前,一律保持加密狀態。
  • 使用提示加密 SDK 與在 Confidential Space 上執行的 vLLM 互動。

軟硬體需求

  • 已啟用計費功能的 Google Cloud 專案。
  • 已安裝並驗證 Google Cloud SDK (gcloud)。
  • Python 3.10 以上版本環境。
  • 用於下載 Gemma 模型的 Hugging Face 權杖。
  • 熟悉虛擬私有雲防火牆和外部 IP 位址配額。
  • 如要在本機建構 SDK,必須編譯 _ekm.c C 擴充功能。如果未安裝 Python C 標頭,這個步驟就會失敗。安裝 python3-dev 即可解決這個問題 (例如,在 Debian/Ubuntu 中執行 sudo apt-get install python3-dev)。

2. 設定雲端資源

開始之前,請務必啟用必要 API 並設定環境。

1. 啟用必要的 API:

gcloud services enable compute.googleapis.com \
    confidentialcomputing.googleapis.com \
    logging.googleapis.com \
    artifactregistry.googleapis.com \
    cloudbuild.googleapis.com

2. 設定 Docker:

gcloud auth configure-docker gcr.io

3. 設定 Hugging Face 權杖:

export HF_TOKEN="your_token"

4. 複製存放區:

git clone https://github.com/google/prompt-encryption-sdk && cd prompt-encryption-sdk

3. 情境

我們將使用:

  • 用戶端:本機 Python 環境或標準 VM。
  • 伺服器:在 Confidential Space (TDX/SEV-SNP) 內提供開放原始碼模型 (例如 Gemma) 的 vLLM 執行個體。
  • SDK:prompt_encryption_sdk Python 程式庫。

4. 步驟 0:設定伺服器

在用戶端驗證任何內容之前,我們需要 Confidential Space 中執行的伺服器。系統會提供 Bash 指令碼來處理佈建作業。

./codelabs/setup.sh --project-id <PROJECT_ID>

setup.sh 指令碼會執行下列動作:

  1. 啟用必要的 API (Compute、機密運算、Logging、Artifact Registry、Cloud Build)。
  2. 建構及推送 Docker 映像檔 (使用經過驗證的 TLS 中介軟體包裝 vLLM)。
  3. 提供具備必要權限的服務帳戶。
  4. 建立機密 VM (啟用 H100 GPU 和 TDX 的 A3 執行個體)。
  5. 設定網路和負載平衡 (直通式網路負載平衡器)。
  6. 將輸出內容 (圖片雜湊和負載平衡器 IP) 儲存至本機檔案。

5. 步驟 1:執行經過認證的用戶端

伺服器現在安全無虞地運作中,請建立經過認證的連線。

python3 -m venv venv
source venv/bin/activate
pip install -r examples/requirements.txt
pip install -e .
./codelabs/run_client.sh <PROJECT_ID>

run_client.sh 指令碼會讀取部署詳細資料,並使用 ConfidentialSDKClient 執行 Python 要求。如果認證失敗,系統會引發 AttestationError,且不會傳送提示。

6. 步驟 2:清除

為避免產生費用,請在完成後清理資源。

./codelabs/cleanup.sh --project-id <PROJECT_ID>

7. 幕後花絮

http.post 期間會發生什麼事?

  1. TCP/TLS:已建立標準連線。
  2. 交握攔截:SDK 會在傳送主體前暫停。
  3. AttestConnection RPC:SDK 會將 Nonce 傳送至伺服器。
  4. 產生引用:伺服器要求 TEE 硬體引用。
  5. 驗證:SDK 會驗證報價簽章和政策。
  6. 繫結:SDK 會驗證管道的「匯出金鑰材料」是否與引號中繫結的會期相符。
  7. 資料傳輸:只有在所有檢查都通過時,才會傳送主體。

8. 疑難排解

  • 驗證失敗:確認政策中的 image_hash 與容器相符。
  • 連線遭拒:請確認伺服器可連線,且通訊埠 8000 已開啟。
  • 逾時:TEE 報價產生作業可能需要一些時間,請確保逾時時間足夠。

9. 恭喜

您已成功完成提示加密 SDK 程式碼研究室!您已瞭解如何在用戶端與 TEE 型推論伺服器之間建立經過加密驗證的加密管道。

後續步驟

  • 探索進階 AttestationPolicy 設定。
  • 將 SDK 整合至現有的正式版應用程式。
  • 進一步瞭解 Confidential Space 和 TEE 硬體型號。

延伸閱讀