অ্যাসোসিয়েটেড ডেটা (AEAD) সহ প্রমাণীকরণকৃত এনক্রিপশন হল ডেটা এনক্রিপশনের জন্য সবচেয়ে সাধারণ আদিম এবং বেশিরভাগ প্রয়োজনের জন্য উপযুক্ত।
AEAD এর নিম্নলিখিত বৈশিষ্ট্য রয়েছে:
- গোপনীয়তা : সরল লেখা সম্পর্কে কিছুই জানা যায়নি, কেবল এর দৈর্ঘ্য।
- সত্যতা : সিফারটেক্সটের অন্তর্নিহিত এনক্রিপ্ট করা প্লেইনটেক্সট সনাক্ত না করে পরিবর্তন করা অসম্ভব।
- সিমেট্রিক : প্লেইনটেক্সট এনক্রিপ্ট করা এবং সাইফারটেক্সট ডিক্রিপ্ট করা একই কী দিয়ে করা হয়।
- র্যান্ডমাইজেশন : এনক্রিপশন র্যান্ডমাইজ করা হয়। একই প্লেইনটেক্সট সহ দুটি বার্তা বিভিন্ন সাইফারটেক্সট তৈরি করে। আক্রমণকারীরা জানতে পারে না কোন সাইফারটেক্সট একটি প্রদত্ত প্লেইনটেক্সটের সাথে মিলে যায়। যদি আপনি এটি এড়াতে চান, তাহলে পরিবর্তে ডিটারমিনিস্টিক AEAD ব্যবহার করুন।
সম্পর্কিত তথ্য
AEAD ব্যবহার করে নির্দিষ্ট অ্যাসোসিয়েটেড ডেটার সাথে সাইফারটেক্সট সংযুক্ত করা যেতে পারে। ধরুন আপনার কাছে user-id এবং encrypted-medical-history ফিল্ড সহ একটি ডাটাবেস আছে। এই পরিস্থিতিতে, encrypted-medical-history এনক্রিপ্ট করার সময় user-id সংযুক্ত ডেটা হিসেবে ব্যবহার করা যেতে পারে। এটি একজন আক্রমণকারীকে একজন ব্যবহারকারী থেকে অন্য ব্যবহারকারীতে মেডিকেল ইতিহাস স্থানান্তর করতে বাধা দেয়।
সংশ্লিষ্ট ডেটা ঐচ্ছিক। যদি নির্দিষ্ট করা থাকে, তবে ডিক্রিপশন কেবল তখনই সফল হবে যদি একই সংশ্লিষ্ট ডেটা এনক্রিপ্ট এবং ডিক্রিপ্ট উভয় কলেই প্রেরণ করা হয়।
একটি কী টাইপ বেছে নিন
যদিও আমরা বেশিরভাগ ব্যবহারের জন্য AES128_GCM সুপারিশ করি, বিভিন্ন প্রয়োজনের জন্য বিভিন্ন ধরণের কী রয়েছে (256-বিট সুরক্ষার জন্য, নীচে AES128 কে AES256 দিয়ে প্রতিস্থাপন করুন)। সাধারণত:
- ১৬-বাইট ইনিশিয়ালাইজেশন ভেক্টর (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 নিরাপত্তা।
- কমপক্ষে ৮০-বিট প্রমাণীকরণ শক্তি।
- মোট ২ ৫০ বাইট সহ কমপক্ষে ২ ৩২টি বার্তা এনক্রিপ্ট করার ক্ষমতা। ২ ৩২টি পর্যন্ত নির্বাচিত প্লেইনটেক্সট বা নির্বাচিত সাইফারটেক্সট সহ কোনও আক্রমণের সাফল্যের সম্ভাবনা 2 -32 এর চেয়ে বেশি নয়।
ব্যবহারের উদাহরণ
দেখুন আমি ডেটা এনক্রিপ্ট করতে চাই এবং আমি সিফারটেক্সটকে এর প্রসঙ্গে আবদ্ধ করতে চাই।