১. সংক্ষিপ্ত বিবরণ
ক্লাউড কেএমএস হলো একটি ক্লাউড-হোস্টেড কী ম্যানেজমেন্ট পরিষেবা, যা আপনাকে আপনার ক্লাউড পরিষেবাগুলির জন্য ক্রিপ্টোগ্রাফিক কীগুলি ঠিক অন-প্রিমিসেসের মতোই পরিচালনা করতে দেয়। এতে হার্ডওয়্যার-সমর্থিত কীগুলির জন্য ক্লাউড এইচএসএম সহ বিভিন্ন ধরণের এবং উৎসের কী ব্যবহার করে এনক্রিপশন, ডিক্রিপশন, সাইনিং এবং ভেরিফিকেশনের জন্য সমর্থন রয়েছে। এই টিউটোরিয়ালটি আপনাকে অ্যাসিমেট্রিক ক্লাউড কেএমএস কী ব্যবহার করে ডেটা এনক্রিপ্ট এবং ডিক্রিপ্ট করার পদ্ধতি শেখাবে।
তুমি শিখবে
- ক্লাউড কেএমএস এপিআই কীভাবে সক্রিয় করবেন
- কীভাবে একটি চাবির রিং তৈরি করবেন
- অ্যাসিমেট্রিক এনক্রিপশন/ডিক্রিপশনের জন্য কীভাবে একটি ক্রিপ্টো কী তৈরি করবেন
২. সেটআপ এবং প্রয়োজনীয়তা
স্ব-গতিতে পরিবেশ সেটআপ
- ক্লাউড কনসোলে সাইন ইন করুন এবং একটি নতুন প্রজেক্ট তৈরি করুন অথবা বিদ্যমান কোনো প্রজেক্ট পুনরায় ব্যবহার করুন। (যদি আপনার আগে থেকে Gmail বা G Suite অ্যাকাউন্ট না থাকে, তবে আপনাকে অবশ্যই একটি তৈরি করতে হবে।)
প্রজেক্ট আইডিটি মনে রাখবেন, যা সমস্ত গুগল ক্লাউড প্রজেক্ট জুড়ে একটি অনন্য নাম (উপরের নামটি ইতিমধ্যে ব্যবহৃত হয়েছে এবং আপনার জন্য কাজ করবে না, দুঃখিত!)। এই কোডল্যাবে এটিকে পরবর্তীতে PROJECT_ID হিসাবে উল্লেখ করা হবে।
- এরপরে, গুগল ক্লাউড রিসোর্স ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং চালু করতে হবে।
এই কোডল্যাবটি চালাতে খুব বেশি খরচ হওয়ার কথা নয়, এমনকি আদৌ কোনো খরচ নাও হতে পারে। "পরিষ্কার-পরিচ্ছন্নতা" (Cleaning up) বিভাগে দেওয়া নির্দেশাবলী অবশ্যই অনুসরণ করবেন, যেখানে রিসোর্স বন্ধ করার পরামর্শ দেওয়া হয়েছে, যাতে এই টিউটোরিয়ালের বাইরে আপনার কোনো বিল না আসে। গুগল ক্লাউডের নতুন ব্যবহারকারীরা ৩০০ মার্কিন ডলারের ফ্রি ট্রায়াল প্রোগ্রামের জন্য যোগ্য।
ক্লাউড শেল শুরু করুন
এই কোডল্যাবে আপনি ক্লাউড শেল ব্যবহার করবেন, যা গুগল ক্লাউডে চালিত একটি বিনামূল্যের ভার্চুয়ালাইজড পরিবেশ। জিসিপি কনসোল থেকে উপরের ডানদিকের টুলবারে থাকা ক্লাউড শেল আইকনে ক্লিক করুন:
পরিবেশটি প্রস্তুত করতে এবং এর সাথে সংযোগ স্থাপন করতে মাত্র কয়েক মুহূর্ত সময় লাগবে। এটি শেষ হলে, আপনি এইরকম কিছু দেখতে পাবেন:
এই ভার্চুয়াল মেশিনটিতে আপনার প্রয়োজনীয় সমস্ত ডেভেলপমেন্ট টুল লোড করা আছে। এটি একটি স্থায়ী ৫ জিবি হোম ডিরেক্টরি প্রদান করে এবং গুগল ক্লাউডে চলে, যা নেটওয়ার্ক পারফরম্যান্স ও অথেনটিকেশনকে ব্যাপকভাবে উন্নত করে। অন্য কোনো নির্দেশনা না থাকলে, সমস্ত কমান্ড এই শেল থেকেই চালান।
৩. ক্লাউড কেএমএস পরিষেবা সক্রিয় করুন
Cloud KMS ব্যবহার করার আগে, আপনাকে প্রথমে আপনার প্রোজেক্টে সার্ভিসটি এনাবল করতে হবে। প্রতি প্রোজেক্টে এটি শুধুমাত্র একবারই করতে হবে। Cloud KMS সার্ভিসটি এনাবল করতে, নিম্নলিখিত কমান্ডটি চালান:
$ gcloud services enable cloudkms.googleapis.com \
--project "${GOOGLE_CLOUD_PROJECT}"
এটি চালু হতে এক মিনিট পর্যন্ত সময় লাগতে পারে। প্রক্রিয়াটি শেষ হলে কমান্ডটি সফলতার বার্তা দেবে।
৪. কেএমএস কী তৈরি করুন
একটি ক্লাউড কেএমএস কী রিং তৈরি করুন। ক্লাউড কেএমএস-এ, কী রিং হলো ক্রিপ্টোগ্রাফিক কী-গুলোর একটি যৌক্তিক সংগ্রহ। কী রিং-টিতে কী-গুলো সম্পর্কে মেটাডেটা থাকে, যেমন তাদের অবস্থান। global রিজিয়নে my-keyring নামে একটি কী রিং তৈরি করুন:
$ gcloud kms keyrings create "my-keyring" \
--location "global"
এখন আপনার তৈরি করা কী রিং-এর ভিতরে asymmetric-encryption উদ্দেশ্য সহ my-asymmetric-encryption-key নামের একটি ক্রিপ্টো কী তৈরি করুন।
$ gcloud kms keys create "my-asymmetric-encryption-key" \
--location "global" \
--keyring "my-keyring" \
--purpose "asymmetric-encryption" \
--default-algorithm "rsa-decrypt-oaep-4096-sha512"
৫. ডেটা এনক্রিপ্ট করুন
অ্যাসিমেট্রিক কী ব্যবহার করলে ক্লাউড কেএমএস এনক্রিপশন করে না। এর পরিবর্তে, এটি একটি পাবলিক কী-তে অ্যাক্সেস দেয় এবং আপনি পাবলিক কী ক্রিপ্টোগ্রাফির মাধ্যমে সেই পাবলিক কী ব্যবহার করে ডেটা এনক্রিপ্ট করেন। অ্যাসিমেট্রিক কী ব্যবহার করে এনক্রিপশন সম্পূর্ণ অফলাইনে করা যায় এবং এর জন্য ক্লাউড কেএমএস বা অন্য কোনো গুগল ক্লাউড এপিআই-তে অ্যাক্সেসের প্রয়োজন হয় না। এনক্রিপশন করা হয় openssl মতো কোনো ক্রিপ্টোগ্রাফিক টুল ব্যবহার করে অথবা এমন কোনো প্রোগ্রামিং ল্যাঙ্গুয়েজ বা লাইব্রেরি দিয়ে যা পাবলিক কী ক্রিপ্টোগ্রাফি সমর্থন করে।
ক্লাউড কেএমএস থেকে পাবলিক কী ডাউনলোড করুন:
$ gcloud kms keys versions get-public-key "1" \
--location "global" \
--keyring "my-keyring" \
--key "my-asymmetric-encryption-key" \
--output-file ./key.pub
এনক্রিপ্ট করার জন্য ডেটা সহ একটি ফাইল তৈরি করুন এবং ফাইলটির ডেটা এনক্রিপ্ট করতে openssl কমান্ড লাইন টুলটি ব্যবহার করুন:
$ echo "my-contents" > ./data.txt
$ openssl pkeyutl -encrypt -pubin \
-in ./data.txt \
-inkey ./key.pub \
-pkeyopt "rsa_padding_mode:oaep" \
-pkeyopt "rsa_oaep_md:sha512" \
-pkeyopt "rsa_mgf1_md:sha512" > ./data.txt.enc
এনক্রিপ্ট করা ডেটা (যা 'সাইফারটেক্সট' নামেও পরিচিত) ডিস্কে data.txt.enc ফাইলে সেভ হবে। আপনি যদি data.txt.enc ফাইলটি খোলেন, তাহলে লক্ষ্য করবেন যে এতে অদ্ভুত, মুদ্রণ-অযোগ্য অক্ষর রয়েছে। এর কারণ হলো, প্রাপ্ত ডেটা বাইনারি ফরম্যাটে থাকে।
ডাটাবেসে সাইফারটেক্সট সংরক্ষণ করার সময় বা HTTP অনুরোধের অংশ হিসেবে প্রেরণ করার সময়, আপনার ডেটা এনকোড করার প্রয়োজন হতে পারে। সাইফারটেক্সটের জন্য সবচেয়ে প্রচলিত এনকোডিং পদ্ধতি হলো বেস৬৪ (base64)।
ক্লাউড কেএমএস আপনার দেওয়া কোনো প্লেইনটেক্সট সংরক্ষণ করে না। আপনাকে এই সাইফারটেক্সটটি একটি সুরক্ষিত স্থানে সংরক্ষণ করতে হবে, কারণ প্লেইনটেক্সট মানটি পুনরুদ্ধার করার জন্য এটির প্রয়োজন হবে।
৬. ডেটা ডিক্রিপ্ট করুন
এনক্রিপশনের বিপরীতে, একটি অ্যাসিমেট্রিক ক্লাউড কেএমএস কী ব্যবহার করে এনক্রিপ্ট করা ডেটা ডিক্রিপ্ট করার জন্য ক্লাউড কেএমএস পরিষেবাতে অনলাইন অ্যাক্সেসের প্রয়োজন হয়। gcloud কমান্ড লাইন টুল ব্যবহার করে ফাইল থেকে সাইফারটেক্সটটি ডিক্রিপ্ট করুন:
$ gcloud kms asymmetric-decrypt \
--location "global" \
--keyring "my-keyring" \
--key "my-asymmetric-encryption-key" \
--version "1" \
--plaintext-file - \
--ciphertext-file ./data.txt.enc
gcloud কমান্ড লাইন টুলটি ফাইল থেকে সাইফারটেক্সট পড়ে এবং ক্লাউড কেএমএস (Cloud KMS) ব্যবহার করে তা ডিক্রিপ্ট করে। লক্ষ্য করুন, এই উদাহরণে --plaintext-file আর্গুমেন্টটি - হিসেবে নির্দিষ্ট করা হয়েছে। এটি gcloud ফলাফলটি টার্মিনালে প্রিন্ট করার নির্দেশ দেয়।
কনসোল my-contents প্রিন্ট করবে, যা উপরের ফাইল থেকে নেওয়া একই প্লেইনটেক্সট ভ্যালু।
৭. অভিনন্দন!
আপনি ক্লাউড কেএমএস এপিআই সক্রিয় করেছেন, একটি অ্যাসিমেট্রিক এনক্রিপশন কী তৈরি করেছেন এবং ডেটা এনক্রিপ্ট ও ডিক্রিপ্ট করেছেন! ক্লাউড কেএমএস একটি শক্তিশালী পণ্য এবং এনক্রিপশন/ডিক্রিপশন এর সক্ষমতার একটি ক্ষুদ্র অংশ মাত্র।
পরিষ্কার করা
আপনার অনুসন্ধান শেষ হলে, অনুগ্রহ করে আপনার প্রজেক্টটি মুছে ফেলার কথা বিবেচনা করুন।
- ক্লাউড প্ল্যাটফর্ম কনসোলে যান
- যে প্রজেক্টটি বন্ধ করতে চান, সেটি নির্বাচন করুন, তারপর উপরে থাকা 'ডিলিট' বোতামে ক্লিক করুন। এটি প্রজেক্টটিকে মুছে ফেলার জন্য নির্ধারিত করে দেবে।
আরও জানুন
লাইসেন্স
এই কাজটি ক্রিয়েটিভ কমন্স অ্যাট্রিবিউশন ২.০ জেনেরিক লাইসেন্সের অধীনে রয়েছে।