অথেনটিকেটেড এনক্রিপশন উইথ অ্যাসোসিয়েটেড ডেটা (AEAD) আদিম হল ডেটা এনক্রিপশনের জন্য সবচেয়ে সাধারণ আদিম এবং বেশিরভাগ প্রয়োজনের জন্য উপযুক্ত।
AEAD এর নিম্নলিখিত বৈশিষ্ট্য রয়েছে:
- গোপনীয়তা : প্লেইনটেক্সট সম্পর্কে কিছুই জানা যায় না, এর দৈর্ঘ্য ছাড়া।
- সত্যতা : সনাক্ত করা ছাড়া সাইফারটেক্সটের অন্তর্নিহিত এনক্রিপ্ট করা প্লেইনটেক্সট পরিবর্তন করা অসম্ভব।
- সিমেট্রিক : প্লেইনটেক্সট এনক্রিপ্ট করা এবং সাইফারটেক্সট ডিক্রিপ্ট করা একই কী দিয়ে করা হয়।
- র্যান্ডমাইজেশন : এনক্রিপশন র্যান্ডমাইজ করা হয়। একই প্লেইনটেক্সট সহ দুটি বার্তা বিভিন্ন সাইফারটেক্সট দেয়। আক্রমণকারীরা জানতে পারে না কোন সাইফারটেক্সট একটি প্রদত্ত প্লেইনটেক্সট এর সাথে মিলে যায়। আপনি যদি এটি এড়াতে চান তবে এর পরিবর্তে ডিটারমিনিস্টিক AEAD ব্যবহার করুন।
সংশ্লিষ্ট তথ্য
AEAD নির্দিষ্ট সম্পর্কিত ডেটার সাথে সাইফারটেক্সট বাঁধতে ব্যবহার করা যেতে পারে। ধরুন আপনার কাছে user-id
এবং encrypted-medical-history
ক্ষেত্রগুলির সাথে একটি ডাটাবেস রয়েছে। এই পরিস্থিতিতে, encrypted-medical-history
এনক্রিপ্ট করার সময় user-id
সংশ্লিষ্ট ডেটা হিসাবে ব্যবহার করা যেতে পারে। এটি একজন আক্রমণকারীকে একজন ব্যবহারকারী থেকে অন্য ব্যবহারকারীর চিকিৎসা ইতিহাস সরানো থেকে বাধা দেয়।
একটি কী টাইপ বেছে নিন
যদিও আমরা বেশিরভাগ ব্যবহারের জন্য AES128_GCM সুপারিশ করি, বিভিন্ন প্রয়োজনের জন্য বিভিন্ন কী প্রকার রয়েছে (256-বিট সুরক্ষার জন্য, নীচে AES256 দিয়ে AES128 প্রতিস্থাপন করুন)। সাধারণতঃ
- একটি 16-বাইট ইনিশিয়ালাইজেশন ভেক্টর (IV) সহ AES128_CTR_HMAC_SHA256 হল সবচেয়ে রক্ষণশীল মোড যার ভাল সীমা রয়েছে৷
- AES128_EAX কিছুটা কম রক্ষণশীল এবং AES128_CTR_HMAC_SHA256 এর চেয়ে কিছুটা দ্রুত।
- AES128_GCM হল সাধারনত দ্রুততম মোড, যেখানে বার্তার সংখ্যা এবং বার্তার আকারের উপর কঠোর সীমা রয়েছে৷ যখন প্লেইনটেক্সট এবং সম্পর্কিত ডেটা দৈর্ঘ্যের (নীচে) এই সীমাগুলি অতিক্রম করা হয়, তখন AES128_GCM ব্যর্থ হয় এবং মূল উপাদান ফাঁস করে।
- AES128_GCM_SIV প্রায় AES128_GCM এর মতো দ্রুত। এটির বার্তার সংখ্যা এবং বার্তার আকারের AES128_GCM এর মতো একই সীমা রয়েছে, কিন্তু যখন এই সীমাগুলি অতিক্রম করা হয়, এটি একটি কম বিপর্যয়মূলক উপায়ে ব্যর্থ হয়: এটি শুধুমাত্র দুটি বার্তা সমান হওয়ার বিষয়টি ফাঁস করতে পারে। এটি AES128_GCM এর তুলনায় এটি ব্যবহার করা নিরাপদ করে তোলে, তবে এটি অনুশীলনে কম ব্যাপকভাবে ব্যবহৃত হয়। জাভাতে এটি ব্যবহার করার জন্য, আপনাকে Conscrypt ইনস্টল করতে হবে।
- XChaCha20Poly1305 এ AES128_GCM এর চেয়ে বার্তার সংখ্যা এবং বার্তার আকারের উপর অনেক বেশি সীমা রয়েছে, কিন্তু যখন এটি ব্যর্থ হয় (খুব অসম্ভাব্য) তখন এটি মূল উপাদানও ফাঁস করে। এটি হার্ডওয়্যার ত্বরিত নয়, তাই হার্ডওয়্যার ত্বরণ পাওয়া যায় এমন পরিস্থিতিতে এটি AES মোডের চেয়ে ধীর হতে পারে।
নিরাপত্তা গ্যারান্টি
AEAD বাস্তবায়ন প্রস্তাব:
- CCA2 নিরাপত্তা।
- কমপক্ষে 80-বিট প্রমাণীকরণ শক্তি।
- মোট 2 50 বাইট সহ কমপক্ষে 2 32টি বার্তা এনক্রিপ্ট করার ক্ষমতা। 2 32টি পর্যন্ত নির্বাচিত প্লেইনটেক্সট বা বাছাই করা সাইফারটেক্সট সহ কোনও আক্রমণের সাফল্যের সম্ভাবনা 2 -32 এর বেশি নেই।
উদাহরণ ব্যবহার ক্ষেত্রে
দেখুন আমি ডেটা এনক্রিপ্ট করতে চাই এবং আমি সাইফারটেক্সটকে এর প্রসঙ্গে আবদ্ধ করতে চাই।