Codelab ของ SDK การเข้ารหัสพรอมต์

1. ภาพรวม

Codelab นี้จะแนะนำวิธีใช้ Prompt Encryption SDK เพื่อสื่อสารกับโมเดลที่ให้บริการในสภาพแวดล้อมการดำเนินการที่เชื่อถือได้ (TEE) บน Google Cloud อย่างปลอดภัย

สิ่งที่คุณจะได้เรียนรู้

  • สร้างช่องทางที่เข้ารหัสและได้รับการยืนยันด้วยการเข้ารหัสระหว่างไคลเอ็นต์และเซิร์ฟเวอร์การอนุมานระยะไกล
  • การยืนยันตัวตนของเซิร์ฟเวอร์ (แฮชซอฟต์แวร์ รุ่นฮาร์ดแวร์ การกำหนดค่าการเปิดตัว) โดยใช้ TLS ที่รับรอง
  • รับประกันอธิปไตยด้านข้อมูลด้วยการเข้ารหัสพรอมต์จนกว่าจะถึงพื้นที่ปลอดภัยที่ได้รับการยืนยัน
  • การใช้ Prompt Encryption SDK เพื่อโต้ตอบกับ vLLM ที่ทำงานใน Confidential Space

สิ่งที่คุณต้องมี

  • โปรเจ็กต์ Google Cloud ที่เปิดใช้การเรียกเก็บเงิน
  • ติดตั้งและตรวจสอบสิทธิ์ Google Cloud SDK (gcloud) แล้ว
  • สภาพแวดล้อม Python 3.10 ขึ้นไป
  • โทเค็น Hugging Face สำหรับดาวน์โหลดโมเดล Gemma
  • คุ้นเคยกับไฟร์วอลล์ VPC และโควต้าที่อยู่ IP ภายนอก
  • การสร้าง SDK ในเครื่องต้องคอมไพล์ส่วนขยาย C ของ _ekm.c ขั้นตอนนี้จะล้มเหลวหากไม่ได้ติดตั้งส่วนหัว C ของ Python ติดตั้ง python3-dev เพื่อแก้ไขปัญหานี้ (เช่น sudo apt-get install python3-dev สำหรับ Debian/Ubuntu)

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 มาตรฐาน
  • เซิร์ฟเวอร์: อินสแตนซ์ vLLM ที่ให้บริการโมเดลโอเพนซอร์ส (เช่น Gemma) ภายในพื้นที่ลับ (TDX/SEV-SNP)
  • SDK: ไลบรารี Python ของ prompt_encryption_sdk

4. ขั้นตอนที่ 0: การตั้งค่าเซิร์ฟเวอร์

เราต้องมีเซิร์ฟเวอร์ที่ทำงานใน Confidential Space ก่อนที่ไคลเอ็นต์จะยืนยันอะไรได้ สคริปต์ Bash ที่ระบุจะจัดการการจัดสรร

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

สคริปต์ setup.sh จะดำเนินการต่อไปนี้

  1. เปิดใช้ API ที่จำเป็น (Compute, Confidential Computing, Logging, Artifact Registry, Cloud Build)
  2. สร้างและพุชอิมเมจ Docker (รวม vLLM กับมิดเดิลแวร์ TLS ที่รับรอง)
  3. จัดสรรบัญชีบริการที่มีสิทธิ์ที่จำเป็น
  4. สร้าง Confidential VM (อินสแตนซ์ A3 ที่เปิดใช้ GPU H100 และ TDX)
  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 จะอ่านรายละเอียดการติดตั้งใช้งานและเรียกใช้คำขอ Python โดยใช้ ConfidentialSDKClient หากการรับรองไม่สำเร็จ ระบบจะแสดง AttestationError และจะไม่ส่งพรอมต์

6. ขั้นตอนที่ 2: ล้างข้อมูล

โปรดล้างข้อมูลทรัพยากรเมื่อเสร็จสิ้นเพื่อไม่ให้มีการเรียกเก็บเงิน

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

7. เบื้องหลังการทำงาน

จะเกิดอะไรขึ้นระหว่าง http.post

  1. TCP/TLS: สร้างการเชื่อมต่อมาตรฐาน
  2. การสกัดกั้นแฮนด์เชค: SDK จะหยุดชั่วคราวก่อนส่งเนื้อหา
  3. RPC AttestConnection: SDK จะส่ง Nonce ไปยังเซิร์ฟเวอร์
  4. การสร้างใบเสนอราคา: เซิร์ฟเวอร์ขอใบเสนอราคาฮาร์ดแวร์ TEE
  5. การตรวจสอบ: SDK จะตรวจสอบลายเซ็นของใบเสนอราคาและนโยบาย
  6. เชื่อมโยง: SDK จะยืนยันว่า "วัสดุการคีย์ที่ส่งออก" ของช่องตรงกับเซสชันที่เชื่อมโยงในคำพูด
  7. การส่งข้อมูล: ระบบจะส่งเนื้อหาเมื่อผ่านการตรวจสอบทั้งหมดเท่านั้น

8. การแก้ปัญหา

  • การรับรองไม่สำเร็จ: ตรวจสอบว่า image_hash ในนโยบายตรงกับคอนเทนเนอร์
  • ปฏิเสธการเชื่อมต่อ: ตรวจสอบว่าเข้าถึงเซิร์ฟเวอร์ได้และพอร์ต 8000 เปิดอยู่
  • หมดเวลา: การสร้างใบเสนอราคา TEE อาจใช้เวลาสักพัก โปรดตรวจสอบว่าระยะหมดเวลาเพียงพอ

9. ขอแสดงความยินดี

คุณทำ Codelab ของ SDK การเข้ารหัสพรอมต์เสร็จเรียบร้อยแล้ว คุณได้เรียนรู้วิธีสร้างช่องที่เข้ารหัสและได้รับการยืนยันด้วยการเข้ารหัสระหว่างไคลเอ็นต์กับเซิร์ฟเวอร์การอนุมานที่ใช้ TEE

ขั้นตอนต่อไปคืออะไร

  • ดูการกำหนดค่า AttestationPolicy ขั้นสูง
  • ผสานรวม SDK กับแอปพลิเคชันเวอร์ชันที่ใช้งานจริงที่มีอยู่
  • ดูข้อมูลเพิ่มเติมเกี่ยวกับ Confidential Space และรุ่นฮาร์ดแวร์ TEE

อ่านเพิ่มเติม