“提示加密 SDK”Codelab

1. 概览

此 Codelab 将引导您使用提示加密 SDK 与 Google Cloud 上可信执行环境 (TEE) 中提供的模型进行安全通信。

学习内容

  • 在客户端与远程推理服务器之间建立经过加密验证的加密通道。
  • 使用经过认证的 TLS 验证服务器的身份(软件哈希、硬件型号、启动配置)。
  • 通过在提示到达经过验证的飞地之前对其进行加密,确保数据主权。
  • 使用提示加密 SDK 与在 Confidential Space 上运行的 vLLM 进行交互。

所需条件

  • 启用了结算功能的 Google Cloud 项目。
  • 已安装并验证 Google Cloud SDK (gcloud)。
  • Python 3.10 及更高版本的环境。
  • 用于下载 Gemma 模型的 Hugging Face 令牌。
  • 熟悉 VPC 防火墙和外部 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 环境或标准虚拟机。
  • 服务器:在 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. 创建机密虚拟机(启用了 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 向服务器发送一个随机数。
  4. 报价生成:服务器请求 TEE 硬件报价。
  5. 验证:SDK 验证引用签名和政策。
  6. 绑定:SDK 验证渠道的“导出密钥材料”是否与引用中绑定的会话一致。
  7. 数据传输:仅当所有检查都通过时,才会发送正文。

8. 问题排查

  • 证明失败:验证政策中的 image_hash 是否与容器匹配。
  • 连接遭拒:确保服务器可访问,并且端口 8000 已开放。
  • 超时:TEE 报价生成可能需要一些时间;请确保超时时间足够长。

9. 恭喜

您已成功完成 Prompt Encryption SDK Codelab!您已了解如何在客户端与基于 TEE 的推理服务器之间建立经过加密验证的加密通道。

接下来怎么做?

  • 探索高级 AttestationPolicy 配置。
  • 将 SDK 与您现有的正式版应用集成。
  • 详细了解 Confidential Space 和 TEE 硬件模型。

深入阅读