Lớp học lập trình về SDK mã hoá câu lệnh

1. Tổng quan

Lớp học lập trình này hướng dẫn bạn cách sử dụng Prompt Encryption SDK để giao tiếp an toàn với một mô hình được phân phát trong Môi trường thực thi đáng tin cậy (TEE) trên Google Cloud.

Kiến thức bạn sẽ học được

  • Thiết lập một kênh được mã hoá và xác minh bằng mật mã giữa một ứng dụng và một máy chủ suy luận từ xa.
  • Xác minh danh tính của máy chủ (hàm băm phần mềm, mô hình phần cứng, cấu hình khởi động) bằng TLS được chứng thực.
  • Đảm bảo chủ quyền dữ liệu bằng cách mã hoá các câu lệnh cho đến khi chúng đến được vùng cách ly đã xác minh.
  • Sử dụng Prompt Encryption SDK để tương tác với vLLM đang chạy trên Confidential Space.

Bạn cần có

  • Một Dự án trên Google Cloud đã bật tính năng thanh toán.
  • Google Cloud SDK (gcloud) đã được cài đặt và xác thực.
  • Môi trường Python 3.10 trở lên.
  • Một mã thông báo Hugging Face để tải các mô hình Gemma xuống.
  • Quen thuộc với tường lửa VPC và hạn mức IP ngoài.
  • Để tạo SDK cục bộ, bạn cần biên dịch tiện ích C _ekm.c. Bước này sẽ không thành công nếu bạn chưa cài đặt tiêu đề C của Python. Cài đặt python3-dev để giải quyết vấn đề này (ví dụ: sudo apt-get install python3-dev cho Debian/Ubuntu).

2. Thiết lập tài nguyên trên đám mây

Trước khi bắt đầu, hãy đảm bảo bạn đã bật các API cần thiết và định cấu hình môi trường của mình.

1. Bật các API bắt buộc:

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

2. Định cấu hình Docker:

gcloud auth configure-docker gcr.io

3. Đặt mã thông báo Hugging Face:

export HF_TOKEN="your_token"

4. Sao chép kho lưu trữ:

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

3. Trường hợp

Chúng tôi sẽ sử dụng:

  • Ứng dụng: Môi trường Python cục bộ hoặc một máy ảo tiêu chuẩn.
  • Máy chủ: Một phiên bản vLLM phân phát mô hình nguồn mở (ví dụ: Gemma) trong một Không gian bảo mật (TDX/SEV-SNP).
  • SDK: Thư viện Python prompt_encryption_sdk.

4. Bước 0: Thiết lập máy chủ

Trước khi ứng dụng có thể xác minh bất cứ điều gì, chúng ta cần một máy chủ chạy trong Confidential Space. Một tập lệnh bash được cung cấp sẽ xử lý việc cấp phép.

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

Tập lệnh setup.sh thực hiện những việc sau:

  1. Bật các API bắt buộc (Compute, Điện toán bảo mật, ghi nhật ký, Artifact Registry, Cloud Build).
  2. Tạo và đẩy hình ảnh Docker (bao bọc vLLM bằng phần mềm trung gian TLS được chứng thực).
  3. Cung cấp một Tài khoản dịch vụ có các quyền cần thiết.
  4. Tạo VM bảo mật (phiên bản A3 có GPU H100 và đã bật TDX).
  5. Định cấu hình Mạng và Cân bằng tải (Trình cân bằng tải mạng truyền qua).
  6. Lưu các đầu ra (hàm băm hình ảnh và IP của bộ cân bằng tải) vào các tệp cục bộ.

5. Bước 1: Chạy Attested Client

Giờ đây, khi máy chủ đang chạy an toàn, hãy thiết lập một kết nối được chứng thực.

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

Tập lệnh run_client.sh đọc thông tin chi tiết về việc triển khai và thực thi một yêu cầu Python bằng ConfidentialSDKClient. Nếu chứng thực không thành công, AttestationError sẽ được tạo và lời nhắc sẽ không bao giờ được gửi.

6. Bước 2: Dọn dẹp

Để tránh bị tính phí, hãy dọn dẹp tài nguyên sau khi hoàn tất.

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

7. Nâng cao

Điều gì xảy ra trong http.post?

  1. TCP/TLS: Thiết lập kết nối tiêu chuẩn.
  2. Chặn bắt tay: SDK tạm dừng trước khi gửi nội dung.
  3. RPC AttestConnection: SDK gửi một số chỉ dùng một lần đến máy chủ.
  4. Tạo báo giá: Máy chủ yêu cầu báo giá phần cứng TEE.
  5. Xác thực: SDK xác minh chữ ký và chính sách báo giá.
  6. Liên kết: SDK xác minh rằng "Exported Keying Material" (Tài liệu khoá đã xuất) của kênh khớp với phiên được liên kết trong báo giá.
  7. Truyền dữ liệu: Nội dung chỉ được gửi nếu tất cả các bước kiểm tra đều thành công.

8. Khắc phục sự cố

  • Chứng thực không thành công: Xác minh rằng image_hash trong chính sách khớp với vùng chứa.
  • Kết nối bị từ chối: Đảm bảo có thể truy cập vào máy chủ và cổng 8000 đang mở.
  • Hết thời gian chờ: Quá trình tạo báo giá TEE có thể mất chút thời gian; hãy đảm bảo thời gian chờ đủ dài.

9. Xin chúc mừng

Bạn đã hoàn tất thành công lớp học lập trình về Prompt Encryption SDK! Bạn đã tìm hiểu cách thiết lập một kênh được mã hoá và xác minh bằng mật mã giữa ứng dụng và một máy chủ suy luận dựa trên TEE.

Tiếp theo là gì?

  • Khám phá các cấu hình AttestationPolicy nâng cao.
  • Tích hợp SDK với các ứng dụng phát hành công khai hiện có.
  • Tìm hiểu thêm về Không gian bảo mật và các mô hình phần cứng TEE.

Tài liệu đọc thêm