Prompt Encryption SDK का कोडलैब

1. खास जानकारी

इस कोडलैब में, Google Cloud पर भरोसेमंद एक्ज़ीक्यूशन एनवायरमेंट (टीईई) में काम करने वाले मॉडल के साथ सुरक्षित तरीके से कम्यूनिकेट करने के लिए, प्रॉम्प्ट एन्क्रिप्शन SDK का इस्तेमाल करने का तरीका बताया गया है.

आपको क्या सीखने को मिलेगा

  • क्लाइंट और रिमोट इन्फ़रेंस सर्वर के बीच, क्रिप्टोग्राफ़िक तरीके से पुष्टि किया गया और एन्क्रिप्ट (सुरक्षित) किया गया चैनल बनाना.
  • अटेस्टेड टीएलएस का इस्तेमाल करके, सर्वर की पहचान की पुष्टि करना. जैसे, सॉफ़्टवेयर हैश, हार्डवेयर मॉडल, लॉन्च कॉन्फ़िगरेशन.
  • डेटा सॉवरेनटी को पक्का करना. इसके लिए, पुष्टि किए गए एनक्लेव तक पहुंचने से पहले प्रॉम्प्ट को एन्क्रिप्ट (सुरक्षित) किया जाता है.
  • Confidential Space पर चल रहे vLLM से इंटरैक्ट करने के लिए, प्रॉम्प्ट एन्क्रिप्शन SDK टूल का इस्तेमाल करना.

आपको किन चीज़ों की ज़रूरत होगी

  • बिलिंग की सुविधा वाला Google Cloud प्रोजेक्ट.
  • Google Cloud SDK (gcloud) इंस्टॉल किया गया हो और पुष्टि की गई हो.
  • Python 3.10+ एनवायरमेंट.
  • Gemma मॉडल डाउनलोड करने के लिए, Hugging Face टोकन.
  • वीपीसी फ़ायरवॉल और बाहरी आईपी पते के कोटे के बारे में जानकारी.
  • SDK को स्थानीय तौर पर बनाने के लिए, _ekm.c C एक्सटेंशन को कंपाइल करना ज़रूरी है. अगर Python C हेडर इंस्टॉल नहीं किए गए हैं, तो यह चरण पूरा नहीं होगा. इस समस्या को ठीक करने के लिए, python3-dev इंस्टॉल करें. उदाहरण के लिए, Debian/Ubuntu के लिए sudo apt-get install python3-dev.

2. क्लाउड रिसॉर्स सेट अप करना

शुरू करने से पहले, पक्का करें कि आपने ज़रूरी एपीआई चालू किए हों और अपने एनवायरमेंट को कॉन्फ़िगर किया हो.

1. ज़रूरी एपीआई चालू करें:

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 एनवायरमेंट या स्टैंडर्ड वीएम.
  • सर्वर: यह एक vLLM इंस्टेंस है, जो कॉन्फ़िडेंशियल स्पेस (TDX/SEV-SNP) में ओपन-सोर्स मॉडल (जैसे, Gemma) का इस्तेमाल करता है.
  • SDK टूल: prompt_encryption_sdk Python लाइब्रेरी.

4. सबसे पहले: सर्वर का सेटअप

क्लाइंट किसी भी चीज़ की पुष्टि कर पाए, इससे पहले हमें कॉन्फ़िडेंशियल स्पेस में सर्वर चलाने की ज़रूरत होती है. दी गई बैश स्क्रिप्ट, प्रोविज़निंग को मैनेज करती है.

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

setup.sh स्क्रिप्ट ये काम करती है:

  1. ज़रूरी एपीआई (Compute, Confidential Computing, Logging, Artifact Registry, Cloud Build) चालू करता है.
  2. यह Docker इमेज बनाता है और उसे पुश करता है. इसमें, Attested TLS मिडलवेयर के साथ vLLM को रैप किया जाता है.
  3. यह ज़रूरी अनुमतियों के साथ सेवा खाता उपलब्ध कराता है.
  4. यह कॉन्फ़िडेंशियल वीएम बनाता है. यह H100 जीपीयू और TDX की सुविधा के साथ A3 इंस्टेंस होता है.
  5. यह कुकी, नेटवर्किंग और लोड बैलेंसिंग (पासथ्रू नेटवर्क लोड बैलेंसर) को कॉन्फ़िगर करती है.
  6. यह कुकी, आउटपुट (इमेज हैश और लोड बैलेंसर आईपी) को लोकल फ़ाइलों में सेव करती है.

5. पहला चरण: Attested Client को चलाएं

अब सर्वर सुरक्षित तरीके से चल रहा है. इसलिए, पुष्टि किया गया कनेक्शन बनाएं.

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. दूसरा चरण: डेटा को साफ़ करना

शुल्क से बचने के लिए, इस्तेमाल के बाद संसाधनों को हटा दें.

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

7. बारीकियों के बारे में जानें

http.post के दौरान क्या होता है?

  1. टीसीपी/टीएलएस: स्टैंडर्ड कनेक्शन बनाया गया है.
  2. हैंडशेक इंटरसेप्शन: एसडीके, बॉडी भेजने से पहले रुक जाता है.
  3. AttestConnection RPC: एसडीके, सर्वर को एक नॉनस भेजता है.
  4. कोटेशन जनरेट करना: सर्वर, टीईई हार्डवेयर के कोटेशन का अनुरोध करता है.
  5. पुष्टि करना: एसडीके, कोटेशन के हस्ताक्षर और नीति की पुष्टि करता है.
  6. बाइंड करें: SDK यह पुष्टि करता है कि चैनल का "एक्सपोर्ट किया गया कीइंग मटीरियल", कोट में बाइंड किए गए सेशन से मेल खाता है.
  7. डेटा ट्रांसमिशन: बॉडी को सिर्फ़ तब भेजा जाता है, जब सभी जांचें पास हो जाती हैं.

8. समस्या का हल

  • पुष्टि नहीं हो सकी: पुष्टि करें कि नीति में मौजूद image_hash, कंटेनर से मैच करता हो.
  • कनेक्शन अस्वीकार किया गया: पक्का करें कि सर्वर तक पहुंचा जा सकता हो और पोर्ट 8000 खुला हो.
  • टाइम आउट: टीईई कोट जनरेट होने में समय लग सकता है. इसलिए, पक्का करें कि टाइम आउट का समय ज़रूरत के हिसाब से हो.

9. बधाई हो

आपने Prompt Encryption SDK कोडलैब पूरा कर लिया है! आपने यह जान लिया है कि अपने क्लाइंट और टीईई पर आधारित अनुमान लगाने वाले सर्वर के बीच, क्रिप्टोग्राफ़िक तरीके से पुष्टि किया गया और एन्क्रिप्ट (सुरक्षित) किया गया चैनल कैसे बनाया जाता है.

आगे क्या करना है?

  • AttestationPolicy के ऐडवांस कॉन्फ़िगरेशन के बारे में जानें.
  • एसडीके को अपने मौजूदा प्रोडक्शन ऐप्लिकेशन के साथ इंटिग्रेट करें.
  • गोपनीय स्पेस और टीईई हार्डवेयर मॉडल के बारे में ज़्यादा जानें.

इस बारे में और पढ़ें