পিজিপি এনক্রিপশন
পিজিপি হলো এনক্রিপশন, ডিক্রিপশন এবং সাইনিং অ্যালগরিদমের একটি আদর্শ সেট যা ক্রিপ্টোগ্রাফিক গোপনীয়তা এবং প্রমাণীকরণ প্রদান করে।
পেলোড এনক্রিপ্ট করার জন্য পিজিপি (PGP) ব্যবহার করার সময়, অংশীদারদের অবশ্যই নিম্নলিখিত বিষয়গুলো সমর্থন করতে হবে:
- একাধিক পিজিপি কী ব্যবহার করে পেলোড এনক্রিপ্ট এবং ডিক্রিপ্ট করা।
- একাধিক পিজিপি কী ব্যবহার করে পেলোড স্বাক্ষর করা।
- একাধিক সিগনেচারের মাধ্যমে একটি পেলোড যাচাই করা হচ্ছে, যার যেকোনো একটি গুগলের দেওয়া কী-সহ সিগনেচার হতে পারে।
- ওয়েব-নিরাপদ বেস৬৪ এনকোডেড পেলোডের ডিক্রিপশন।
গুগলকে দেওয়া পিজিপি পাবলিক কী-তে এনক্রিপশনের জন্য ব্যবহৃত একটি সাব-কী অবশ্যই থাকতে হবে। এই সাব-কী প্রাইমারি কী থেকে স্বাধীনভাবে আবর্তনের সুযোগ দেয়। প্রাইমারি কী পরিচয় যাচাইয়ের জন্য ব্যবহৃত হয়। প্রাইভেট কী অবশ্যই ২০৪৮ (বা তার বেশি) বিটের আরএসএ কী হতে হবে, যেগুলোর মেয়াদ এক বছরে শেষ হয়ে যায় এবং সর্বোচ্চ মেয়াদ দুই বছর পর্যন্ত থাকে ।
ডেভেলপমেন্ট শুরু করার আগে আপনাকে গুগলের সাথে পিজিপি (PGP) কী বিনিময় করতে হবে। এই ধাপে, আপনি একটি পিজিপি পাবলিক-প্রাইভেট কী পেয়ার তৈরি করবেন, পাবলিক কী-টি গুগলকে দেবেন এবং গুগলের কাছ থেকে একটি পাবলিক কী ফেরত পাবেন। ডেভেলপমেন্ট চলাকালীন, আপনাকে শুধুমাত্র প্রোডাকশনের বাইরে ডেভেলপমেন্ট এবং টেস্টিংয়ের জন্য ব্যবহৃত স্যান্ডবক্স কী-গুলো বিনিময় করতে হবে। প্রোডাকশন টেস্টিং এবং লঞ্চের আগে, আপনাকে প্রোডাকশন কী-গুলোর আরেকটি বিনিময় করতে হবে।
একটি নতুন পিজিপি কী তৈরি করা হচ্ছে
আপনার সিস্টেম পাথে একটি GPG বাইনারি থাকলে, আপনি একটি নতুন কী পেয়ার তৈরি করতে নিম্নলিখিত POSIX কমান্ডটি ব্যবহার করতে পারেন।
$ gpg --full-generate-key
নির্দেশিত হলে, কমপক্ষে ২০৪৮ বিট এনট্রপি এবং ১-২ বছরের মেয়াদসহ একটি RSA কী নির্বাচন করুন। এই কমান্ডটি একটি প্রাইমারি কী (SC লেবেলযুক্ত, যা স্বাক্ষর এবং সার্টিফিকেট তৈরির জন্য ব্যবহৃত হয়) এবং একটি সাব-কী (E লেবেলযুক্ত, যা এনক্রিপশনের জন্য ব্যবহৃত হয়) উভয়ই তৈরি করবে।
পিজিপি লাইব্রেরি কনফিগারেশন
পেলোড পাঠানো
- স্বাক্ষর করার সময় ডাইজেস্ট অ্যালগরিদম হিসেবে
SHA384ব্যবহার করা উচিত;SHA1বাMD5ব্যবহার করবেন না। - এনক্রিপ্ট করার সময় সিমেট্রিক এনক্রিপশন অ্যালগরিদম হিসেবে
AES256ব্যবহার করা উচিত;CAST5বাIDEAব্যবহার করবেন না। - মেসেজ এনক্রিপ্ট বা সাইন করার সময়, সংশ্লিষ্ট উদ্দেশ্য অনুযায়ী সাব-কী নির্বাচন করতে ভুলবেন না; সাইন করার জন্য
CAN_SIGNকী এবং এনক্রিপ্ট করার জন্যENCRYPT_COMMS/ENCRYPT_STORAGEকী ব্যবহার করুন।
পেলোড গ্রহণ করা
- পেলোড যাচাই করার সময়, নিশ্চিত করুন যে আপনার লাইব্রেরি
SHA384এর মতো আধুনিক হ্যাশ অ্যালগরিদম সমর্থন করে। গুগল ২০২৩ সালের ১৪ই মে থেকে সমস্ত নতুন কী-তে এটি ব্যবহার করা শুরু করবে। - পেলোড ডিক্রিপ্ট করার সময়, নিশ্চিত করুন যে আপনার লাইব্রেরি
AES256এর মতো আধুনিক সিমেট্রিক এনক্রিপশন অ্যালগরিদম সমর্থন করে। গুগল ২০২৩ সালের ১৪ই মে থেকে সমস্ত নতুন কী-তে এটি ব্যবহার করা শুরু করবে।
জিপিজি পেলোড এনক্রিপশনের উদাহরণ
নিম্নলিখিত কমান্ডটি GPG ব্যবহার করার সময় সুরক্ষিত বিকল্পগুলি কীভাবে নির্বাচন করতে হয় তার একটি উদাহরণ। আশা করা যায় যে এই অপারেশনটি একটি বিশ্বস্ত পরিবেশে সম্পাদিত হবে, যেখানে সাধারণ মানুষের প্রাইভেট কী বা সংবেদনশীল ইনপুট ফাইলগুলিতে অ্যাক্সেস নেই।
gpg --output signed-and-encrypted.pgp \
--sign --digest-algo SHA384 \
--encrypt --cipher-algo AES256 \
--armor \
--recipient {key_id} \
input.txt
আপনার অনুরোধ করা প্রতিটি অপারেশনের জন্য GPG স্বয়ংক্রিয়ভাবে বান্ডেল থেকে সঠিক কী-টি নির্বাচন করবে।
JWS স্বাক্ষর সহ JWE এনক্রিপশন
JSON ওয়েব এনক্রিপশন (JWE) হলো অ্যাপ্লিকেশন স্তরে কন্টেন্ট এনক্রিপ্ট করার জন্য rfc7516 দ্বারা সংজ্ঞায়িত একটি স্ট্যান্ডার্ড। JSON ওয়েব সিগনেচার (JWS) হলো অ্যাপ্লিকেশন স্তরে কন্টেন্ট স্বাক্ষর করার জন্য rfc7515 দ্বারা সংজ্ঞায়িত একটি স্ট্যান্ডার্ড।
অনুরোধ এবং প্রতিক্রিয়াগুলো 'কমপ্যাক্ট সিরিয়ালাইজেশন' বিকল্পসহ অ্যাসিমেট্রিক (পাবলিক কী) এনক্রিপশন ব্যবহার করে এনক্রিপ্ট করা JWE টোকেন হবে। JWE টোকেনটিতে একটি JWS টোকেন হিসেবে স্বাক্ষরিত পেলোড থাকবে। JWS-ও অ্যাসিমেট্রিক কী ব্যবহার করে; স্বাক্ষরের জন্য প্রাইভেট কী এবং যাচাইকরণের জন্য পাবলিক কী।
পেলোড পাঠানোর সময়, প্রথমে পেলোডটিতে স্বাক্ষর করুন এবং তারপর এনক্রিপ্ট করুন। পেলোড গ্রহণ করার সময়, প্রথমে সেটি ডিক্রিপ্ট করুন এবং তারপর স্বাক্ষরটি যাচাই করুন।
JWE ব্যবহার করার সময়, পার্টনারদের অবশ্যই নিম্নলিখিত অপশনগুলো সমর্থন করতে হবে:
- কম্প্যাক্ট সিরিয়ালাইজেশন।
- একাধিক JWE কী-এর মধ্যে একটি ব্যবহার করে পেলোড ডিক্রিপ্ট করা হচ্ছে।
- কী ম্যানেজমেন্টের জন্য RSA-OAEP, RSA-OAEP-256, অথবা ECDH-ES অ্যালগরিদম।
-
algহেডারে পূরণ করা হয়েছে ( rfc7518 সেকশন 4.1 )।
-
- বিষয়বস্তু এনক্রিপশনের জন্য A256GCM , A128GCM , A128CBC-HS256 , অথবা A256CBC-HS512 অ্যালগরিদম।
-
encহেডারে পূরণ করা হয়।
-
- পাবলিক এনক্রিপশন কী শনাক্ত করার জন্য
kidহেডার। - যেসব মেসেজ পেলোড JWE এনক্রিপশন ব্যবহার করে, সেগুলোতে অবশ্যই content type application/jose; charset=utf-8 ব্যবহার করতে হবে।
JWS ব্যবহার করার সময়, পার্টনারদের অবশ্যই নিম্নলিখিত অপশনগুলো সমর্থন করতে হবে:
- কম্প্যাক্ট সিরিয়ালাইজেশন।
- একাধিক JWS কী-এর মধ্যে একটি থেকে পেলোড যাচাই করা হচ্ছে।
- সিগনেচার তৈরির জন্য HS256, HS384, HS512, RS256, RS384, RS512, ES256, PS256, PS384, অথবা PS512 অ্যালগরিদম।
-
algহেডারে পূরণ করা হয়েছে ( rfc 7518 ধারা 3.1 )।
-
- প্রাইভেট সাইনিং কী শনাক্ত করার জন্য
kidহেডার।
JWE/JWS স্ট্রিংগুলোকে UTF-8 স্ট্রিং হিসেবে এনকোড করা হবে এবং এদের পেলোডগুলো যথেচ্ছ বাইট হতে পারে।
প্রাইভেট কী অবশ্যই RSA/ECDH-ES কী হতে হবে, যেগুলোর মেয়াদ এক বছরে শেষ হয়ে যাবে এবং সর্বোচ্চ মেয়াদ হবে দুই বছর। সমস্ত প্রাইভেট কী আইডেন্টিটি অবশ্যই সর্বদা পার্টনারের সার্ভারে থাকতে হবে এবং সেই অনুযায়ী, সমস্ত সিগনেচার ভ্যালুও পার্টনারের সার্ভারেই গণনা করতে হবে।
ডেভেলপমেন্ট শুরু করার আগে আপনাকে গুগলের সাথে JWE এবং JWS কী বিনিময় করতে হবে। rfc7517- এ সংজ্ঞায়িত JWK ফরম্যাটে কী বিনিময় করতে হবে। এই ধাপে, আপনি একটি পাবলিক-প্রাইভেট কী পেয়ার তৈরি করবেন, পাবলিক কী-টি গুগলকে দেবেন এবং গুগলের কাছ থেকে একটি পাবলিক কী ফেরত পাবেন। ডেভেলপমেন্ট চলাকালীন, আপনাকে শুধুমাত্র প্রোডাকশনের বাইরে ডেভেলপমেন্ট এবং টেস্টিংয়ের জন্য ব্যবহৃত স্যান্ডবক্স কী বিনিময় করতে হবে। প্রোডাকশন টেস্টিং এবং লঞ্চের আগে, আপনাকে প্রোডাকশন কী-গুলোর আরেকটি বিনিময় করতে হবে।