অ্যাপ্লিকেশন স্তর এনক্রিপশন

স্ট্যান্ডার্ড পেমেন্ট এপিআই অ্যাপ্লিকেশন স্তর এনক্রিপশনের জন্য PGP বা JWE সমর্থন করে।

PGP এনক্রিপশন

PGP হল এনক্রিপশন, ডিক্রিপশন এবং সাইনিং অ্যালগরিদমের একটি প্রমিত সেট যা ক্রিপ্টোগ্রাফিক গোপনীয়তা এবং প্রমাণীকরণ প্রদান করে।

পেলোড এনক্রিপ্ট করতে PGP ব্যবহার করার সময়, অংশীদারদের অবশ্যই সমর্থন করতে হবে:

  • একাধিক PGP কী দিয়ে পেলোড এনক্রিপ্ট এবং ডিক্রিপ্ট করা।
  • একাধিক PGP কী দিয়ে পেলোড সাইন ইন করা হচ্ছে।
  • একাধিক স্বাক্ষর সহ একটি পেলোড যাচাই করা, যার মধ্যে যেকোনো একটি Google দ্বারা প্রদত্ত কী সহ স্বাক্ষর হতে পারে৷
  • ওয়েব-সেফ বেস64 এনকোডেড পেলোডের ডিক্রিপশন।

Google-এ প্রদত্ত PGP পাবলিক কীগুলির অবশ্যই এনক্রিপশনের জন্য ব্যবহৃত একটি সাবকি থাকতে হবে৷ সাবকি মাস্টার কী থেকে স্বাধীন ঘূর্ণনের অনুমতি দেয়। পরিচয় যাচাইয়ের জন্য মাস্টার কী ব্যবহার করা হয়। প্রাইভেট কীগুলি অবশ্যই 2048 (বা বড়) বিট RSA কী হতে হবে যা সর্বোচ্চ দুই বছরের জীবনকাল সহ এক বছরে মেয়াদ শেষ হবে

বিকাশ শুরু করার আগে আপনাকে Google এর সাথে PGP কী বিনিময় করতে হবে। এই ধাপে, আপনি একটি PGP পাবলিক-প্রাইভেট কী জোড়া তৈরি করেন, Google-কে সর্বজনীন কী প্রদান করেন এবং Google থেকে একটি সর্বজনীন কী ফেরত পান। বিকাশের সময়, আপনাকে শুধুমাত্র উৎপাদনের বাইরে ডেভেলপমেন্ট এবং পরীক্ষার জন্য ব্যবহৃত স্যান্ডবক্স কীগুলি বিনিময় করতে হবে। প্রোডাকশন টেস্টিং এবং লঞ্চ করার আগে, আপনাকে প্রোডাকশন কীগুলির আরেকটি বিনিময় করতে হবে।

একটি নতুন PGP কী তৈরি করা হচ্ছে

আপনার সিস্টেম পাথে একটি GPG বাইনারি আছে ধরে নিচ্ছি, আপনি একটি নতুন কী জোড়া তৈরি করতে নিম্নলিখিত POSIX কমান্ড ব্যবহার করতে পারেন।

$ gpg --full-generate-key

অনুরোধ করা হলে, কমপক্ষে 2048 বিট এনট্রপি সহ একটি RSA কী নির্বাচন করুন এবং 1-2 বছরের মেয়াদ শেষ হবে। এই কমান্ডটি একটি মাস্টার কী ('সাইনিং এবং 'সার্টিফিকেট জেনারেশনের জন্য SC লেবেলযুক্ত) এবং একটি সাবকি ('ই'এনক্রিপশনের জন্য E লেবেলযুক্ত) উভয়ই তৈরি করা উচিত।

পিজিপি লাইব্রেরি কনফিগারেশন

পেলোড পাঠানো হচ্ছে

  1. স্বাক্ষর করার সময়, আপনার ডাইজেস্ট অ্যালগরিদম হিসাবে SHA384 ব্যবহার করা উচিত; SHA1 বা MD5 ব্যবহার করবেন না
  2. এনক্রিপ্ট করার সময়, আপনার সিমেট্রিক এনক্রিপশন অ্যালগরিদম হিসাবে AES256 ব্যবহার করা উচিত; CAST5 বা IDEA ব্যবহার করবেন না
  3. বার্তা এনক্রিপ্ট বা স্বাক্ষর করার সময়, সংশ্লিষ্ট উদ্দেশ্য সহ সাব কী নির্বাচন করতে ভুলবেন না; স্বাক্ষর করার জন্য CAN_SIGN কী এবং এনক্রিপ্ট করার জন্য ENCRYPT_COMMS / ENCRYPT_STORAGE কী ব্যবহার করুন

পেলোড গ্রহণ করা হচ্ছে

  1. একটি পেলোড যাচাই করার সময়, নিশ্চিত করুন যে আপনার লাইব্রেরি SHA384 এর মতো আধুনিক হ্যাশ অ্যালগরিদম সমর্থন করে। Google 14 মে, 2023 থেকে সমস্ত নতুন কীগুলিতে এটি ব্যবহার করা শুরু করবে।
  2. একটি পেলোড ডিক্রিপ্ট করার সময়, নিশ্চিত করুন যে আপনার লাইব্রেরি আধুনিক সিমেট্রিক এনক্রিপশন অ্যালগরিদম যেমন AES256 সমর্থন করে। Google 14 মে, 2023 থেকে সমস্ত নতুন কীগুলিতে এটি ব্যবহার করা শুরু করবে।

GPG পেলোড এনক্রিপশন উদাহরণ

নিচের কমান্ডটি 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 অ্যালগরিদম।
  • সামগ্রী এনক্রিপশনের জন্য A256GCM , A128GCM , A128CBC-HS256 , বা A256CBC-HS512 অ্যালগরিদম৷
    • enc হেডারে পপুলেট করা হয়েছে।
  • kid হেডার পাবলিক এনক্রিপশন কী সনাক্ত করতে।
  • JWE এনক্রিপশন ব্যবহার করে এমন মেসেজ পেলোড অবশ্যই কন্টেন্ট টাইপ অ্যাপ্লিকেশন/জোস ব্যবহার করবে; charset=utf-8।

JWS ব্যবহার করার সময়, অংশীদারদের অবশ্যই নিম্নলিখিত বিকল্পগুলিকে সমর্থন করতে হবে:

  • কমপ্যাক্ট সিরিয়ালাইজেশন।
  • একাধিক JWS কীগুলির একটি থেকে পেলোড যাচাই করা হচ্ছে।
  • স্বাক্ষর তৈরির জন্য HS256, HS384, HS512, RS256, RS384, RS512, ES256, PS256, PS384, বা PS512 অ্যালগরিদম৷
  • প্রাইভেট সাইনিং কী সনাক্ত করতে kid হেডার।

JWE/JWS স্ট্রিংগুলিকে UTF-8 স্ট্রিং হিসাবে এনকোড করা হবে এবং তাদের পেলোডগুলি ইচ্ছামত বাইট হতে পারে৷

প্রাইভেট কীগুলি অবশ্যই RSA/ECDH-ES কী হতে হবে যা সর্বোচ্চ দুই বছরের জীবনকাল সহ এক বছরে মেয়াদ শেষ হয়ে যায়। সমস্ত ব্যক্তিগত কী পরিচয় অবশ্যই অংশীদারের সার্ভারে থাকতে হবে এবং সেই অনুযায়ী, সমস্ত স্বাক্ষর মান অবশ্যই অংশীদারের সার্ভারে গণনা করতে হবে৷

বিকাশ শুরু করার আগে আপনাকে গুগলের সাথে JWE এবং JWS কীগুলি বিনিময় করতে হবে। rfc7517 এ সংজ্ঞায়িত মত JWK বিন্যাসে কীগুলি বিনিময় করা উচিত। এই ধাপে, আপনি একটি পাবলিক-প্রাইভেট কী জোড়া তৈরি করেন, Google-কে সর্বজনীন কী প্রদান করেন এবং Google থেকে একটি সর্বজনীন কী ফিরে পান। বিকাশের সময়, আপনাকে শুধুমাত্র উৎপাদনের বাইরে ডেভেলপমেন্ট এবং পরীক্ষার জন্য ব্যবহৃত স্যান্ডবক্স কীগুলি বিনিময় করতে হবে। প্রোডাকশন টেস্টিং এবং লঞ্চ করার আগে, আপনাকে প্রোডাকশন কীগুলির আরেকটি বিনিময় করতে হবে।