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

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

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

ডিক্রিপশন দ্রুত হয় কারণ সাইফারটেক্সটের শুধুমাত্র একটি অংশ ডিক্রিপ্ট করা হয় এবং একবারে প্রমাণীকৃত হয়। আংশিক প্লেইনটেক্সটগুলি সম্পূর্ণ সাইফারটেক্সট প্রক্রিয়া না করেই পাওয়া যায়।

স্ট্রিমিং AEAD বাস্তবায়ন AEAD সংজ্ঞা পূরণ করে এবং OAE2-সুরক্ষিত । তাদের নিম্নলিখিত বৈশিষ্ট্য রয়েছে:

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

সংশ্লিষ্ট তথ্য

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

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

আমরা বেশিরভাগ ব্যবহারের জন্য AES128_GCM_HKDF_1MB সুপারিশ করি। সাধারণতঃ

  • AES128_GCM_HKDF_1MB (বা AES256_GCM_HKDF_1MB) হল দ্রুততর বিকল্প৷ এটি প্রতিটি 264 বাইট পর্যন্ত 264 টি ফাইল এনক্রিপ্ট করতে পারে। এনক্রিপশন এবং ডিক্রিপশন প্রক্রিয়া চলাকালীন ~1 MB মেমরি খরচ হয়।
  • AES128_GCM_HKDF_4KB ~4 KB মেমরি খরচ করে এবং আপনার সিস্টেমে অনেক মেমরি না থাকলে এটি একটি ভাল পছন্দ।
  • AES128_CTR_HMAC_SHA256_1MB (বা AES256_CTR_HMAC_SHA256_1MB) একটি আরও রক্ষণশীল বিকল্প৷

নিরাপত্তা গ্যারান্টি

স্ট্রিমিং AEAD বাস্তবায়ন অফার:

  • CCA2 নিরাপত্তা।
  • কমপক্ষে 80-বিট প্রমাণীকরণ শক্তি।
  • মোট 2 51 বাইট 2 সহ কমপক্ষে 2 64 টি বার্তা 3 এনক্রিপ্ট করার ক্ষমতা। 2 32টি পর্যন্ত নির্বাচিত প্লেইনটেক্সট বা বাছাই করা সাইফারটেক্সট সহ কোনও আক্রমণের সাফল্যের সম্ভাবনা 2 -32 এর বেশি নেই।

উদাহরণ ব্যবহার ক্ষেত্রে

দেখুন আমি বড় ফাইল বা ডেটা স্ট্রীম এনক্রিপ্ট করতে চাই


  1. এই সীমাবদ্ধতার একটি কারণ হল AES-GCM সাইফার ব্যবহার। একই স্থানে একটি ভিন্ন প্লেইনটেক্সট সেগমেন্ট এনক্রিপ্ট করা IV পুনঃব্যবহারের সমতুল্য, যা AES-GCM এর নিরাপত্তা গ্যারান্টি লঙ্ঘন করে। আরেকটি কারণ হল এটি রোল-ব্যাক আক্রমণ প্রতিরোধ করে, যেখানে আক্রমণকারী সনাক্তকরণ ছাড়াই ফাইলের পূর্ববর্তী সংস্করণ পুনরুদ্ধার করার চেষ্টা করতে পারে।

  2. 2 32 টি সেগমেন্ট সমর্থিত, প্রতিটি সেগমেন্টে segment_size - tag_size বাইট রয়েছে। 1 MB সেগমেন্টের জন্য, মোট প্লেইনটেক্সট আকার হল 2 32 * (2 20 -16) ~= 2 51 বাইট।

  3. একটি উদ্ভূত কী (128-বিট) এবং ননস প্রিফিক্স (স্বাধীন এলোমেলো 7-বাইট মান) সমন্বয় পুনরাবৃত্তি হলে AEAD স্ট্রিমিং অনিরাপদ হয়ে পড়ে। আমাদের রয়েছে 184-বিট সংঘর্ষ প্রতিরোধ, যা মোটামুটিভাবে 264টি বার্তায় অনুবাদ করে যদি আমরা সাফল্যের সম্ভাবনা 2 -32- এর কম হতে চাই।