১. সংক্ষিপ্ত বিবরণ
কনফিডেনশিয়াল ভার্চুয়াল মেশিন (CVM) হলো এক ধরনের কম্পিউট ইঞ্জিন ভার্চুয়াল মেশিন যা হার্ডওয়্যার-ভিত্তিক মেমরি এনক্রিপশন এবং ইন্টিগ্রিটি প্রোটেকশন ব্যবহার করে। এটি নিশ্চিত করতে সাহায্য করে যে, ব্যবহারের সময় আপনার ডেটা এবং অ্যাপ্লিকেশনগুলো মেমরিতে পড়া বা পরিবর্তন করা যাবে না। এই কোডল্যাবে, আপনি শিখবেন কীভাবে CVM-এর জন্য একটি ইন্টেল TDX অ্যাটেস্টেশন কোট তৈরি করতে হয় এবং প্রদর্শনের উদ্দেশ্যে স্থানীয়ভাবে তা যাচাই করতে হয়। এছাড়াও, আপনি CVM-টির গুগল ক্লাউড হোস্ট এবং ইনস্ট্যান্স প্রোভেনেন্স যাচাই করবেন।
এই কোডল্যাবে নিম্নলিখিত ধাপগুলো অন্তর্ভুক্ত রয়েছে:
- একটি ইন্টেল টিডিএক্স কনফিডেনশিয়াল ভিএম সেট আপ করা হচ্ছে
- TDX অ্যাটেস্টেশন কোট আনা
- TDX অ্যাটেস্টেশন কোট এবং ননস যাচাইকরণ
- GCE ফার্মওয়্যার (OVMF) এর অখণ্ডতা যাচাই করা
- GCE TDX হোস্ট এবং ইনস্ট্যান্সের উৎস যাচাই করা হচ্ছে
আপনি যা শিখবেন
-
go-tdx-guestটুল ব্যবহার করে CVM-এ কীভাবে একটি TDX অ্যাটেস্টেশন কোট সংগ্রহ করবেন - উদ্ধৃতির সত্যতা, সতেজতা (ননস), এবং জিসিই ফার্মওয়্যার অখণ্ডতা (ওভিএমএফ) কীভাবে যাচাই করবেন
- গুগল ক্লাউড হোস্ট এবং ইনস্ট্যান্সের উৎস কীভাবে যাচাই করবেন (
PPIDরেজিস্ট্রি লুকআপ এবংPZIDইনস্ট্যান্স বাইন্ডিং)
আপনার যা যা লাগবে
- একটি গুগল ক্লাউড প্ল্যাটফর্ম প্রকল্প
- গুগল কম্পিউট ইঞ্জিন এবং কনফিডেনশিয়াল ভিএম সম্পর্কে প্রাথমিক জ্ঞান
২. সেটআপ এবং প্রয়োজনীয়তা
প্রয়োজনীয় API-গুলো সক্রিয় করতে, Google Cloud Console অথবা আপনার স্থানীয় ডেভেলপমেন্ট এনভায়রনমেন্টে নিম্নলিখিত কমান্ডটি চালান:
gcloud auth login
gcloud services enable \
cloudapis.googleapis.com \
cloudshell.googleapis.com \
confidentialcomputing.googleapis.com \
compute.googleapis.com
৩. CVM সেট আপ করা এবং TDX কোট আনা
এই ধাপে, আপনি একটি TDX CVM তৈরি করবেন এবং হার্ডওয়্যার থেকে একটি TDX অ্যাটেস্টেশন কোটেশন সংগ্রহ করবেন।
- গুগল ক্লাউড কনসোল অথবা আপনার লোকাল ডেভেলপমেন্ট এনভায়রনমেন্টে যান। নিম্নোক্তভাবে একটি CVM তৈরি করুন:
gcloud config set project <project-id>
gcloud compute instances create tdx-cvm-attestation-codelab \
--machine-type=c3-standard-4 \
--zone=us-central1-c \
--confidential-compute-type=TDX \
--maintenance-policy=TERMINATE \
--image-family=ubuntu-2204-lts \
--image-project=ubuntu-os-cloud \
--scopes https://www.googleapis.com/auth/cloud-platform
<project-id> জায়গায় আপনার প্রজেক্টের অনন্য শনাক্তকারীটি বসান।
- CVM-এর সাথে সংযোগ করুন।
gcloud compute ssh --zone us-central1-c tdx-cvm-attestation-codelab
- CVM-এ একটি Go পরিবেশ সেট আপ করুন:
wget https://go.dev/dl/go1.24.0.linux-amd64.tar.gz sudo tar -C /usr/local -xzf go1.24.0.linux-amd64.tar.gz export PATH=$PATH:/usr/local/go/bin
-
go-tdx-guestটুলগুলো ইনস্টল করুন।
রিপোজিটরিটি ক্লোন করুন এবং attest টুলটি বিল্ড করুন, যা একটি TDX কোট তৈরি করে।
git clone https://github.com/google/go-tdx-guest.git cd go-tdx-guest/tools/attest go build
- TDX অ্যাটেস্টেশন কোটটি আনুন:
একটি কোট তৈরি করতে attest টুলটি ব্যবহার করুন। আমরা একটি ননস (৬৪ বাইটের REPORT_DATA ) পাস করব এবং আউটপুটটি quote.bin এ সংরক্ষণ করব।
nonce=$(head -c 64 /dev/urandom | xxd -p | tr -d '\n' | head -c 128) sudo ./attest -in $nonce -inform hex -outform bin -out quote.bin
TDX কোটটি এখন quote.bin ফাইলে সংরক্ষিত হয়েছে!
৪. টিডিএক্স অ্যাটেস্টেশন কোট যাচাই করা
এখন যেহেতু আমরা একটি ইন্টেল TDX কোট ( quote.bin ) তৈরি করেছি, আমরা go-tdx-guest রিপোজিটরিতে দেওয়া check টুলটি ব্যবহার করে এটি যাচাই করতে পারি। এই টুলটি ইন্টেলের স্পেসিফিকেশনের সাথে কোটটি মিলিয়ে দেখে, ইন্টেলের প্রভিশনিং সার্টিফিকেশন সার্ভিস (PCS) থেকে ডাউনলোড করা সহায়ক তথ্যের সাথে এটি যাচাই করে, এবং রিপ্লে অ্যাটাক প্রতিরোধ করার জন্য ননসের মতো পলিসি সীমাবদ্ধতাগুলো বৈধতা দেয়।
-
checkটুল ডিরেক্টরিতে যান এবং এটি তৈরি করুন:
cd ~/go-tdx-guest/tools/check go build
- ক্রিপ্টোগ্রাফিক সিগনেচার এবং ননস উভয়ই যাচাই করার জন্য টুলটি চালান। আমরা ইন্টেলের পিসিএস থেকে প্রয়োজনীয় টিইই সার্টিফিকেটগুলো ডাউনলোড করার জন্য
-get_collateral=trueফ্ল্যাগ, সার্টিফিকেট বাতিলকরণ যাচাই করার জন্য-check_crl=trueফ্ল্যাগ এবং ননসের সতেজতা যাচাই করার জন্য-report_dataফ্ল্যাগ ব্যবহার করব:
./check -in ~/go-tdx-guest/tools/attest/quote.bin -inform bin \
-get_collateral=true -check_crl=true \
-report_data $nonce
যদি উদ্ধৃতিটি ক্রিপ্টোগ্রাফিকভাবে বৈধ হয় এবং ননসটি মিলে যায়, তাহলে টুলটি নিম্নলিখিত উদাহরণের মতো একটি সফলতার বার্তা লগ করবে এবং কোড 0 সহ প্রস্থান করবে:
INFO : TDX Quote verified successfully
৫. GCE ফার্মওয়্যার (OVMF)-এর অখণ্ডতা যাচাইকরণ
যদিও ইন্টেলের দেওয়া প্রমাণ হার্ডওয়্যারটি যাচাই করে, কিন্তু এটি যাচাই করে না যে ভার্চুয়াল মেশিনটি একটি আসল, অপরিবর্তিত গুগল কম্পিউট ইঞ্জিন (GCE) ফার্মওয়্যার চালাচ্ছে।
গুগল সমস্ত অফিসিয়াল GCE UEFI (OVMF) ফার্মওয়্যার রিলিজের জন্য স্বাক্ষরিত লঞ্চ এনডোর্সমেন্ট (যার মধ্যে গোল্ডেন রেফারেন্স ইন্টিগ্রিটি মেজারমেন্ট বা RIM থাকে) একটি পাবলিক গুগল ক্লাউড স্টোরেজ (GCS) বাকেটে প্রকাশ করে।
এই ধাপে, আমরা গুগলের পাবলিক gce-tcb-verifier টুলটি ব্যবহার করে স্বয়ংক্রিয়ভাবে GCS থেকে ফার্মওয়্যার এনডোর্সমেন্টটি সংগ্রহ করব, এর উপর থাকা গুগলের স্বাক্ষর যাচাই করব এবং এর সাথে আমাদের CVM-এর ফার্মওয়্যার পরিমাপ ( MRTD ) যাচাই করব।
১. GCE TCB ভেরিফায়ার টুলটি তৈরি করুন।
- GitHub থেকে পাবলিক
gce-tcb-verifierরিপোজিটরিটি ক্লোন করুন:
cd ~ git clone https://github.com/google/gce-tcb-verifier.git
- CLI টুল ডিরেক্টরিতে যান এবং এটি বিল্ড করুন:
cd gce-tcb-verifier/gcetcbendorsement/cli go build -o gcetcbendorsement
- সুবিধার জন্য বিল্ট টুলটি আপনার PATH-এ যোগ করুন:
export PATH=$PATH:$(pwd)
২. GCE ফার্মওয়্যার এনডোর্সমেন্টের সাথে কোটেশনটি যাচাই করুন।
এখন, আপনার অ্যাটেস্টেশন কোটটি যাচাই করার জন্য gcetcbendorsement টুলটি চালান। যেহেতু সফল যাচাইকরণের পর টুলটি নীরবে সফল হয়, তাই সাফল্যের একটি বন্ধুত্বপূর্ণ এবং সুস্পষ্ট নিশ্চিতকরণ পেতে আমরা কমান্ডটির সাথে && echo "Validation Succeeded!" জুড়ে দিতে পারি:
gcetcbendorsement tdx validate ~/go-tdx-guest/tools/attest/quote.bin && echo "Validation Succeeded!"
আউটপুট:
Validation Succeeded!
ভেতরে কী ঘটছে?
- নিষ্কাশন : টুলটি
quote.binফাইলটি পার্স করে এবং TD Quote Body থেকে ফার্মওয়্যার পরিমাপ (MRTD) নিষ্কাশন করে। - সংগ্রহ : এটি
MRTDব্যবহার করে একটি GCS URL তৈরি করে এবং Google-এর পাবলিক বাকেট (gs://gce_tcb_integrity) থেকে সংশ্লিষ্টVMLaunchEndorsementডাউনলোড করে। - স্বাক্ষর যাচাইকরণ : এটি গুগলের পাবলিক রুট সিএ সার্টিফিকেট (
https://pki.goog/cloud_integrity/GCE-cc-tcb-root_1.crt) সংগ্রহ করে এবং ডাউনলোড করা এনডোর্সমেন্টে থাকা গুগলের স্বাক্ষর ক্রিপ্টোগ্রাফিকভাবে যাচাই করে। - পরিমাপ যাচাইকরণ : এটি আপনার উদ্ধৃতিতে থাকা TDX হার্ডওয়্যার দ্বারা স্বাক্ষরিত
MRTDগুগলের স্বাক্ষরিত অনুমোদনপত্রে থাকা আদর্শ রেফারেন্স পরিমাপের সাথে তুলনা করে।
যদি সমস্ত যাচাই সফল হয়, তাহলে কমান্ডটি নীরবে কোড 0 দিয়ে এক্সিট করবে (অথবা চেইনড ইকো-এর মাধ্যমে Validation Succeeded! প্রিন্ট করবে), যা প্রমাণ করে যে আপনার ভিএম-এ আসল এবং গুগল-অনুমোদিত ফার্মওয়্যার চলছে!
৬. GCE TDX হোস্ট এবং ইনস্ট্যান্সের উৎস যাচাই করা
অ্যাটেস্টেশন এবং ফার্মওয়্যার ভেরিফিকেশন যদিও নিশ্চিত করে যে আপনার ভিএমটি গুগল-অনুমোদিত ইউইএফআই ফার্মওয়্যারসহ আসল ইন্টেল টিডিএক্স হার্ডওয়্যারে চলছে, জিসিই টিডিএক্স প্রোভেনেন্স ভেরিফিকেশন আপনার অ্যাটেস্টেশন কোটকে দুটি গুরুত্বপূর্ণ উপায়ে সরাসরি গুগল ক্লাউডের অবকাঠামোর সাথে সংযুক্ত করে:
- হোস্ট প্রোভেনেন্স : এটি কোটের PCK সার্টিফিকেট থেকে প্ল্যাটফর্মের অনন্য PPID (প্ল্যাটফর্ম প্রোভিশনিং আইডি) বের করে আপনার VM চালনাকারী ফিজিক্যাল গুগল ক্লাউড হোস্ট মেশিনটিকে শনাক্ত করে। এরপর এটি গুগল ক্লাউড স্টোরেজ (
confidential-host-registry) থেকে হোস্ট প্ল্যাটফর্মের রেজিস্ট্রি রেকর্ড পুনরুদ্ধার করে, যেখানে ফিজিক্যাল জোন এবং গুগল ক্লাউড সর্বশেষ কখন হোস্টের অ্যাটেস্টেশন সার্টিফিকেটগুলো প্রোভিশন করেছিল, তার তথ্য নথিভুক্ত থাকে। - ইনস্ট্যান্স প্রোভেনেন্স (পিজেডআইডি বাইন্ডিং) : গুগল ক্লাউড আপনার নির্দিষ্ট ভিএম-এর পরিচয় (
ProjectNumber,ZoneএবংInstanceID) ক্রিপ্টোগ্রাফিকভাবে টিডিএক্স কোট-এরMR_OWNERরেজিস্টারে সংযুক্ত করে। এই বাইন্ডিং যাচাই করার মাধ্যমে নিশ্চিত করা হয় যে কোটটি শুধুমাত্র আপনার ইনস্ট্যান্সেরই এবং এটি বিভিন্ন ভিএম বা প্রজেক্ট জুড়ে কোট রিপ্লে বা সাবস্টিটিউশন আক্রমণ প্রতিরোধ করে।
gceprovenance CLI টুলটি (যা go-tdx-guest রিপোজিটরিতেও অবস্থিত) একটিমাত্র কমান্ডে সম্পূর্ণ প্রোভেনেন্স ভেরিফিকেশন—যেমন কোটের সত্যতা, ফ্রেশনেস চ্যালেঞ্জ, হোস্ট রেজিস্ট্রি রেকর্ড এবং ইনস্ট্যান্স PZID বাইন্ডিং—স্বয়ংক্রিয়ভাবে যাচাই করে।
-
gceprovenanceডিরেক্টরিতে যান এবং টুলটি বিল্ড করুন:
cd ~/go-tdx-guest/tools/gceprovenance go build
-
verifyকমান্ড ব্যবহার করে সম্পূর্ণ প্রোভেনেন্স ভেরিফিকেশন চালান। আমরা পূর্বে জেনারেট করা কোট ফাইল (quote.bin) এবং ননস চ্যালেঞ্জ ($nonce) পাস করব:
./gceprovenance verify -quote ~/go-tdx-guest/tools/attest/quote.bin -challenge $nonce
- সমস্ত যাচাই সফল হলে, টুলটি নিম্নলিখিতের অনুরূপ একটি যাচাইকরণ প্রতিবেদন আউটপুট করে:
GCE TDX provenance verification: OK Instance: projects/123456789012/zones/us-central1-c/instances/987654321098765 Checks Quote verification: OK REPORT_DATA challenge: OK Host registry document: found PZID binding: OK PPID: 0123456789abcdef0123456789abcdef Quote: tdx_quote.bin Host registry: host_registry.json
ভেতরে কী ঘটছে?
- উদ্ধৃতি ও চ্যালেঞ্জ : টুলটি ইন্টেলের রুট সার্টিফিকেটের সাথে উদ্ধৃতিটির সিগনেচার চেইন যাচাই করে এবং নিশ্চিত করে যে উদ্ধৃতিটির
REPORT_DATAআপনার$nonceচ্যালেঞ্জের সাথে মেলে। - হোস্ট প্রোভেনেন্স (
PPID) : এটি লিফ PCK সার্টিফিকেট থেকে ৩২-ক্যারেক্টারের হেক্সPPIDবের করে এবং GCS (https://storage.googleapis.com/confidential-host-registry/) থেকে হোস্ট রেজিস্ট্রি JSON ডকুমেন্ট ডাউনলোড করে।https://storage.googleapis.com/confidential-host-registry/) - ইনস্ট্যান্স প্রোভেনেন্স (
PZID) : এটি আপনার ইনস্ট্যান্সের নিউমেরিক প্রজেক্ট আইডি, জোন এবং ইনস্ট্যান্স আইডির জন্য স্থানীয় GCE মেটাডেটা সার্ভারকে কোয়েরি করে, ক্যানোনিকাল PZID JSON পেলোড ({"instanceId":...,"numericalProjectId":...,"zone":...}) তৈরি করে, এর SHA-384 ডাইজেস্ট গণনা করে এবং যাচাই করে যে এটি কোটেশনের মধ্যে থাকাMR_OWNERসাথে মেলে কিনা।
- পুনরুদ্ধার করা হোস্ট রেজিস্ট্রি নথিটি পরিদর্শন করুন:
ডিফল্টরূপে, verify কমান্ডটি ফেচ করা হোস্ট রেজিস্ট্রি JSON ডকুমেন্টটি host_registry.json এ সেভ করে। আপনি হোস্ট প্ল্যাটফর্মের মেটাডেটা দেখার জন্য এটি ইনসপেক্ট করতে পারেন:
cat host_registry.json
উদাহরণ আউটপুট:
{
"zone": "us-central1",
"timestamp": "2026-02-17T11:25:12Z"
}
এই মেটাডেটা হোস্ট মেশিনের বৈশিষ্ট্যগুলো বর্ণনা করে:
-
zone: গুগল ক্লাউডের ভৌত অঞ্চল/জোন যেখানে হোস্ট মেশিনটি অবস্থিত। -
timestamp: এই হোস্ট মেশিনের হার্ডওয়্যার অ্যাটেস্টেশন সার্টিফিকেটগুলো গুগল ক্লাউড দ্বারা সর্বশেষ কখন প্রোভিশন এবং ভেরিফাই করা হয়েছিল, তার UTC তারিখ ও সময়।
৭. পরিচ্ছন্নতা
ক্লাউড কনসোল অথবা আপনার স্থানীয় ডেভেলপমেন্ট এনভায়রনমেন্টে নিম্নলিখিত কমান্ডগুলো চালান:
# Delete the CVM instance gcloud compute instances delete tdx-cvm-attestation-codelab --zone=us-central1-c
৮. এরপর কী?
কনফিডেনশিয়াল ভিএম এবং কম্পিউট ইঞ্জিন সম্পর্কে আরও জানুন।