অ্যাসোসিয়েটেড ডেটার সাথে প্রমাণীকৃত এনক্রিপশন (AEAD)

অ্যাসোসিয়েটেড ডেটা (AEAD) সহ প্রমাণীকরণকৃত এনক্রিপশন হল ডেটা এনক্রিপশনের জন্য সবচেয়ে সাধারণ আদিম এবং বেশিরভাগ প্রয়োজনের জন্য উপযুক্ত।

AEAD এর নিম্নলিখিত বৈশিষ্ট্য রয়েছে:

  • গোপনীয়তা : সরল লেখা সম্পর্কে কিছুই জানা যায়নি, কেবল এর দৈর্ঘ্য।
  • সত্যতা : সিফারটেক্সটের অন্তর্নিহিত এনক্রিপ্ট করা প্লেইনটেক্সট সনাক্ত না করে পরিবর্তন করা অসম্ভব।
  • সিমেট্রিক : প্লেইনটেক্সট এনক্রিপ্ট করা এবং সাইফারটেক্সট ডিক্রিপ্ট করা একই কী দিয়ে করা হয়।
  • র‍্যান্ডমাইজেশন : এনক্রিপশন র‍্যান্ডমাইজ করা হয়। একই প্লেইনটেক্সট সহ দুটি বার্তা বিভিন্ন সাইফারটেক্সট তৈরি করে। আক্রমণকারীরা জানতে পারে না কোন সাইফারটেক্সট একটি প্রদত্ত প্লেইনটেক্সটের সাথে মিলে যায়। যদি আপনি এটি এড়াতে চান, তাহলে পরিবর্তে ডিটারমিনিস্টিক AEAD ব্যবহার করুন।

সম্পর্কিত তথ্য

AEAD ব্যবহার করে নির্দিষ্ট অ্যাসোসিয়েটেড ডেটার সাথে সাইফারটেক্সট সংযুক্ত করা যেতে পারে। ধরুন আপনার কাছে user-id এবং encrypted-medical-history ফিল্ড সহ একটি ডাটাবেস আছে। এই পরিস্থিতিতে, encrypted-medical-history এনক্রিপ্ট করার সময় user-id সংযুক্ত ডেটা হিসেবে ব্যবহার করা যেতে পারে। এটি একজন আক্রমণকারীকে একজন ব্যবহারকারী থেকে অন্য ব্যবহারকারীতে মেডিকেল ইতিহাস স্থানান্তর করতে বাধা দেয়।

সংশ্লিষ্ট ডেটা ঐচ্ছিক। যদি নির্দিষ্ট করা থাকে, তবে ডিক্রিপশন কেবল তখনই সফল হবে যদি একই সংশ্লিষ্ট ডেটা এনক্রিপ্ট এবং ডিক্রিপ্ট উভয় কলেই প্রেরণ করা হয়।

একটি কী টাইপ বেছে নিন

যদিও আমরা বেশিরভাগ ব্যবহারের জন্য AES128_GCM সুপারিশ করি, বিভিন্ন প্রয়োজনের জন্য বিভিন্ন ধরণের কী রয়েছে। AES128 128-বিট সুরক্ষা প্রদান করে, এবং AES256 256-বিট সুরক্ষা প্রদান করে।

মোড নির্বাচন করার সময় দুটি উল্লেখযোগ্য নিরাপত্তা সীমাবদ্ধতা হল:

  1. QPS: একই কী দিয়ে কতগুলি বার্তা এনক্রিপ্ট করা হয়?
  2. বার্তার আকার: বার্তাগুলি কত বড়?

সাধারণত:

  • ১৬-বাইট ইনিশিয়ালাইজেশন ভেক্টর (IV) সহ AES-CTR-HMAC (AES128_CTR_HMAC_SHA256, AES256_CTR_HMAC_SHA256) হল ভালো সীমা সহ সবচেয়ে রক্ষণশীল মোড।
  • AES-EAX (AES128_EAX, AES256_EAX) AES128_CTR_HMAC_SHA256 এর তুলনায় সামান্য কম রক্ষণশীল এবং সামান্য দ্রুত।
  • AES-GCM (AES128_GCM, AES256_GCM) সাধারণত দ্রুততম মোড যেখানে বার্তার সংখ্যা এবং বার্তার আকারের উপর কঠোর সীমা থাকে। যখন প্লেইনটেক্সট এবং সংশ্লিষ্ট ডেটা দৈর্ঘ্যের (নীচে) এই সীমা অতিক্রম করা হয়, তখন AES-GCM বিপর্যয়করভাবে ব্যর্থ হয় এবং মূল উপাদান ফাঁস করে দেয়।
  • AES-GCM-SIV (AES128_GCM_SIV, AES256_GCM_SIV) প্রায় AES-GCM এর মতোই দ্রুত। বার্তার সংখ্যা এবং বার্তার আকারের ক্ষেত্রে এটির AES-GCM এর মতোই সীমা রয়েছে, কিন্তু যখন এই সীমা অতিক্রম করা হয়, তখন এটি কম বিপর্যয়করভাবে ব্যর্থ হয়: এটি কেবল দুটি বার্তা সমান তা ফাঁস করতে পারে। এটি AES-GCM এর তুলনায় এটি ব্যবহার করা নিরাপদ করে তোলে, তবে বাস্তবে এটি কম ব্যবহৃত হয়। জাভাতে এটি ব্যবহার করতে, আপনাকে Conscrypt ইনস্টল করতে হবে।
  • XChaCha20-Poly1305 (XCHACHA20_POLY1305) এর বার্তার সংখ্যা এবং আকারের সীমা AES-GCM এর তুলনায় অনেক বেশি, কিন্তু যখন এটি ব্যর্থ হয় (খুবই অসম্ভব), তখন এটি মূল উপাদানগুলিও ফাঁস করে। এটি হার্ডওয়্যার অ্যাক্সিলারেটেড নয়, তাই হার্ডওয়্যার অ্যাক্সিলারেশন উপলব্ধ থাকলে এটি AES মোডের চেয়ে ধীর হতে পারে।

নিরাপত্তার নিশ্চয়তা

AEAD বাস্তবায়নগুলি অফার করে:

  • CCA2 নিরাপত্তা।
  • কমপক্ষে ৮০-বিট প্রমাণীকরণ শক্তি।
  • মোট ২ ৫০ বাইট সহ কমপক্ষে ২ ৩২টি বার্তা এনক্রিপ্ট করার ক্ষমতা। ২ ৩২টি পর্যন্ত নির্বাচিত প্লেইনটেক্সট বা নির্বাচিত সাইফারটেক্সট সহ কোনও আক্রমণের সাফল্যের সম্ভাবনা 2 -32 এর চেয়ে বেশি নয়।

ব্যবহারের উদাহরণ

দেখুন আমি ডেটা এনক্রিপ্ট করতে চাই এবং আমি সিফারটেক্সটকে এর প্রসঙ্গে আবদ্ধ করতে চাই।