Codelab SDK Enkripsi Prompt

1. Ringkasan

Codelab ini memandu Anda menggunakan Prompt Encryption SDK untuk berkomunikasi secara aman dengan model yang ditayangkan di Trusted Execution Environment (TEE) di Google Cloud.

Yang akan Anda pelajari

  • Membuat saluran terenkripsi dan terverifikasi secara kriptografi antara klien dan server inferensi jarak jauh.
  • Memverifikasi identitas server (hash software, model hardware, konfigurasi peluncuran) menggunakan Attested TLS.
  • Memastikan kedaulatan data dengan menjaga prompt tetap terenkripsi hingga mencapai enklave yang terverifikasi.
  • Menggunakan Prompt Encryption SDK untuk berinteraksi dengan vLLM yang berjalan di Confidential Space.

Yang akan Anda butuhkan

  • Project Google Cloud yang mengaktifkan penagihan.
  • Google Cloud SDK (gcloud) diinstal dan diautentikasi.
  • Lingkungan Python 3.10+.
  • Token Hugging Face untuk mendownload model Gemma.
  • Pengetahuan tentang firewall VPC dan kuota Alamat IP Eksternal.
  • Membuat SDK secara lokal memerlukan kompilasi ekstensi C _ekm.c. Langkah ini akan gagal jika header C Python tidak diinstal. Instal python3-dev untuk mengatasi masalah ini (misalnya, sudo apt-get install python3-dev untuk Debian/Ubuntu).

2. Menyiapkan Resource Cloud

Sebelum memulai, pastikan Anda telah mengaktifkan API yang diperlukan dan mengonfigurasi lingkungan Anda.

1. Mengaktifkan API yang Diperlukan:

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

2. Mengonfigurasi Docker:

gcloud auth configure-docker gcr.io

3. Menetapkan Token Hugging Face:

export HF_TOKEN="your_token"

4. Membuat Clone Repositori:

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

3. Skenario

Kita akan menggunakan:

  • Klien: Lingkungan Python lokal Anda atau VM standar.
  • Server: Instance vLLM yang menayangkan model open source (misalnya, Gemma) di dalam Confidential Space (TDX/SEV-SNP).
  • SDK: Library Python prompt_encryption_sdk.

4. Langkah 0: Penyiapan Server

Sebelum klien dapat memverifikasi apa pun, kita memerlukan server yang berjalan di Confidential Space. Skrip bash yang disediakan menangani penyediaan.

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

Skrip setup.sh melakukan hal berikut:

  1. Mengaktifkan API yang diperlukan (Compute, Confidential Computing, Logging, Artifact Registry, Cloud Build).
  2. Membuat dan mengirim image Docker (menggabungkan vLLM dengan middleware Attested TLS).
  3. Menyediakan Akun Layanan dengan izin yang diperlukan.
  4. Membuat Confidential VM (instance A3 dengan GPU H100 dan TDX diaktifkan).
  5. Mengonfigurasi Jaringan dan Load Balancing (Network Load Balancer Passthrough).
  6. Menyimpan output (hash image dan IP load balancer) ke file lokal.

5. Langkah 1: Menjalankan Klien yang Diuji

Setelah server berjalan dengan aman, buat koneksi yang diuji.

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

Skrip run_client.sh membaca detail deployment dan menjalankan permintaan Python menggunakan ConfidentialSDKClient. Jika pengujian gagal, AttestationError akan ditampilkan dan prompt tidak akan pernah dikirim.

6. Langkah 2: Pembersihan

Untuk menghindari biaya, bersihkan resource setelah selesai.

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

7. Under the Hood

Apa yang terjadi selama http.post?

  1. TCP/TLS: Koneksi standar dibuat.
  2. Intersepsi Handshake: SDK dijeda sebelum mengirim isi.
  3. AttestConnection RPC: SDK mengirim nonce ke server.
  4. Pembuatan Kutipan: Server meminta kutipan hardware TEE.
  5. Validasi: SDK memverifikasi tanda tangan dan kebijakan kutipan.
  6. Bind: SDK memverifikasi bahwa "Exported Keying Material" saluran cocok dengan sesi yang terikat dalam kutipan.
  7. Transmisi Data: Isi hanya dikirim jika semua pemeriksaan lulus.

8. Pemecahan masalah

  • Pengujian Gagal: Verifikasi image_hash dalam kebijakan cocok dengan container.
  • Koneksi Ditolak: Pastikan server dapat dijangkau dan port 8000 terbuka.
  • Waktu Habis: Pembuatan kutipan TEE dapat memerlukan waktu; pastikan waktu tunggu cukup.

9. Selamat

Anda berhasil menyelesaikan codelab Prompt Encryption SDK. Anda telah mempelajari cara membuat saluran terenkripsi dan terverifikasi secara kriptografi antara klien dan server inferensi berbasis TEE.

Apa langkah selanjutnya?

  • Pelajari konfigurasi AttestationPolicy lanjutan.
  • Integrasikan SDK dengan aplikasi produksi yang ada.
  • Pelajari lebih lanjut Confidential Space dan model hardware TEE.

Bacaan lebih lanjut