رمزگذاری سریع SDK Codelab

۱. مرور کلی

این آزمایشگاه کد شما را در استفاده از SDK رمزگذاری Prompt برای برقراری ارتباط ایمن با مدلی که در یک محیط اجرای قابل اعتماد (TEE) در Google Cloud ارائه می‌شود، راهنمایی می‌کند.

آنچه یاد خواهید گرفت

  • ایجاد یک کانال رمزنگاری‌شده و تأییدشده بین یک کلاینت و یک سرور استنتاج از راه دور.
  • تأیید هویت سرور (هش نرم‌افزاری، مدل سخت‌افزاری، پیکربندی راه‌اندازی) با استفاده از Attested TLS.
  • تضمین حاکمیت داده‌ها با رمزگذاری اعلان‌ها تا زمان رسیدن به محدوده تأیید شده.
  • استفاده از SDK رمزگذاری Prompt برای تعامل با vLLM که در فضای محرمانه اجرا می‌شود.

آنچه نیاز دارید

  • یک پروژه ابری گوگل با قابلیت پرداخت صورتحساب.
  • کیت توسعه نرم‌افزار گوگل کلود (gcloud) نصب و احراز هویت شد.
  • محیط پایتون ۳.۱۰+
  • یک توکن چهره در آغوش گیرنده برای دانلود مدل‌های Gemma.
  • آشنایی با فایروال‌های VPC و سهمیه‌بندی آدرس IP خارجی.
  • ساخت SDK به صورت محلی نیاز به کامپایل افزونه‌ی _ekm.c C دارد. اگر هدرهای پایتون C نصب نشده باشند، این مرحله با شکست مواجه می‌شود. برای حل این مشکل، python3-dev را نصب کنید (به عنوان مثال، sudo apt-get install python3-dev برای دبیان/اوبونتو).

۲. راه‌اندازی منابع ابری

قبل از شروع، مطمئن شوید که APIهای مورد نیاز را فعال کرده و محیط خود را پیکربندی کرده‌اید.

۱. فعال کردن API های مورد نیاز:

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

۲. پیکربندی داکر:

gcloud auth configure-docker gcr.io

۳. تنظیم توکن چهره در آغوش گرفته:

export HF_TOKEN="your_token"

۴. مخزن را کلون کنید:

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

۳. سناریو

ما استفاده خواهیم کرد:

  • کلاینت: محیط پایتون محلی شما یا یک ماشین مجازی استاندارد.
  • سرور: یک نمونه vLLM که یک مدل متن‌باز (مثلاً Gemma) را درون یک فضای محرمانه (TDX/SEV-SNP) ارائه می‌دهد.
  • SDK: کتابخانه پایتون prompt_encryption_sdk.

۴. مرحله ۰: راه‌اندازی سرور

قبل از اینکه کلاینت بتواند چیزی را تأیید کند، به یک سرور در حال اجرا در فضای محرمانه نیاز داریم. یک اسکریپت bash ارائه شده، مراحل آماده‌سازی را مدیریت می‌کند.

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

اسکریپت setup.sh موارد زیر را انجام می‌دهد:

  1. APIهای مورد نیاز (محاسبه، محاسبات محرمانه، ثبت وقایع، ثبت مصنوعات، ساخت ابری) را فعال می‌کند.
  2. ایمیج داکر را می‌سازد و ارسال می‌کند (vLLM را با میان‌افزار Attested TLS می‌پوشاند).
  3. یک حساب کاربری سرویس با مجوزهای لازم ارائه می‌دهد.
  4. ماشین مجازی محرمانه (نمونه A3 با پردازنده گرافیکی H100 و TDX فعال) را ایجاد می‌کند.
  5. پیکربندی شبکه و متعادل‌سازی بار (متعادل‌کننده بار شبکه Passthrough).
  6. خروجی‌ها (هش تصویر و IP متعادل‌کننده بار) را در فایل‌های محلی ذخیره می‌کند.

۵. مرحله ۱: اجرای کلاینت گواهی‌شده

اکنون که سرور به طور ایمن در حال اجرا است، یک اتصال معتبر برقرار کنید.

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 اجرا می‌کند. اگر گواهی‌دهی با شکست مواجه شود، خطای AttestationError رخ می‌دهد و اعلان هرگز ارسال نمی‌شود.

۶. مرحله ۲: پاکسازی

برای جلوگیری از هزینه‌ها، پس از اتمام کار، منابع را تمیز کنید.

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

۷. زیر کاپوت

در طول http.post چه اتفاقی می‌افتد؟

  1. TCP/TLS: اتصال استاندارد برقرار شد.
  2. رهگیری دست‌دهی: SDK قبل از ارسال بدنه مکث می‌کند.
  3. AttestConnection RPC: SDK یک nonce به سرور ارسال می‌کند.
  4. تولید پیش فاکتور: سرور درخواست پیش فاکتور سخت افزار TEE را می کند.
  5. اعتبارسنجی: SDK امضا و خط‌مشی نقل قول را تأیید می‌کند.
  6. اتصال : SDK تأیید می‌کند که «مطالب کلیدگذاری صادر شده» کانال با محدوده جلسه در نقل قول مطابقت دارد.
  7. انتقال داده: بدنه فقط در صورتی ارسال می‌شود که همه بررسی‌ها با موفقیت انجام شود.

۸. عیب‌یابی

  • گواهی ناموفق بود: تأیید کنید که image_hash در خط‌مشی با کانتینر مطابقت دارد.
  • اتصال رد شد: مطمئن شوید که سرور قابل دسترسی است و پورت ۸۰۰۰ باز است.
  • مهلت زمانی: تولید نقل قول TEE می‌تواند زمان‌بر باشد؛ اطمینان حاصل کنید که مهلت‌های زمانی کافی هستند.

۹. تبریک

شما با موفقیت آزمایشگاه کدنویسی Prompt Encryption SDK را به پایان رساندید! شما یاد گرفته‌اید که چگونه یک کانال رمزنگاری‌شده و تأییدشده بین کلاینت خود و یک سرور استنتاج مبتنی بر TEE ایجاد کنید.

بعدش چی؟

  • پیکربندی‌های پیشرفته‌ی AttestationPolicy را بررسی کنید.
  • SDK را با برنامه‌های تولیدی موجود خود ادغام کنید.
  • درباره مدل‌های سخت‌افزاری Confidential Space و TEE بیشتر بدانید.

مطالعه بیشتر