অ্যাসোসিয়েটেড ডেটা (AEAD) সহ যাচাই করা এনক্রিপশন হল ডেটা এনক্রিপশনের সবচেয়ে সাধারণ আদিম পদ্ধতি এবং এটি বেশিরভাগ প্রয়োজনের জন্য উপযুক্ত।
AEAD-এর নিম্নলিখিত প্রপার্টি আছে:
- Secrecy: দৈর্ঘ্য ছাড়া প্লেনটেক্সট সম্পর্কে আর কিছুই জানা যায় না।
- প্রামাণ্যতা: এনক্রিপ্ট করা টেক্সট যে সাইফারটেক্সটের উপর ভিত্তি করে তৈরি হয়েছে, তা শনাক্ত না করে পরিবর্তন করা অসম্ভব।
- সিমেট্রিক: প্লেনটেক্সট এনক্রিপ্ট করা এবং সাইফারটেক্সট ডিক্রিপ্ট করা একই কী দিয়ে করা হয়।
- র্যান্ডমাইজেশন: এনক্রিপশন র্যান্ডমাইজ করা হয়। একই প্লেইনটেক্সট সহ দুটি মেসেজ আলাদা সাইফারটেক্সট তৈরি করে। আক্রমণকারী জানতে পারবে না যে কোন সাইফারটেক্সট প্রদত্ত প্লেনটেক্সটের সাথে সম্পর্কিত। আপনি এটি এড়াতে চাইলে, এর পরিবর্তে ডিটারমিনিস্টিক AEAD ব্যবহার করুন।
সংশ্লিষ্ট ডেটা
AEAD ব্যবহার করে নির্দিষ্ট সংশ্লিষ্ট ডেটার সাথে সাইফারটেক্সট
টাই করা যেতে পারে। ধরে নিন, আপনার কাছে user-id
এবং encrypted-medical-history ফিল্ড সহ একটি ডেটাবেস আছে। এই পরিস্থিতিতে, encrypted-medical-history এনক্রিপ্ট করার সময় user-id-কে
সম্পর্কিত ডেটা হিসেবে ব্যবহার করা যেতে পারে। এর ফলে, কোনও
আক্রমণকারী এক ব্যবহারকারীর থেকে অন্য ব্যবহারকারীর কাছে চিকিৎসা সংক্রান্ত ইতিহাস সরাতে পারে না।
সংশ্লিষ্ট ডেটা ঐচ্ছিক। নির্দিষ্ট করা থাকলে, এনক্রিপ্ট ও ডিক্রিপ্ট, উভয় কলের ক্ষেত্রেই একই সংশ্লিষ্ট ডেটা পাস করা হলে তবেই ডিক্রিপশন সফল হয়।
'কী'-এর ধরন বেছে নিন
বেশিরভাগ ব্যবহারের ক্ষেত্রে আমরা AES128_GCM সাজেস্ট করলেও, বিভিন্ন প্রয়োজনের জন্য বিভিন্ন ধরনের কী রয়েছে। AES128-এ ১২৮-বিট নিরাপত্তা এবং AES256-এ ২৫৬-বিট নিরাপত্তা পাওয়া যায়।
কোনও মোড বেছে নেওয়ার সময় দুটি উল্লেখযোগ্য নিরাপত্তা সংক্রান্ত সীমাবদ্ধতা হল:
- QPS: How many messages are encrypted with the same key?
- মেসেজের সাইজ: মেসেজ কতটা বড়?
যেসব ধরনের 'কী' কাজ করে:
- ১৬-বাইট
ইনিশিয়ালাইজেশন ভেক্টর (IV) সহ AES-CTR-HMAC (AES128_CTR_HMAC_SHA256, AES256_CTR_HMAC_SHA256) হল ভাল বাউন্ড সহ সবচেয়ে রক্ষণশীল মোড।
- কী-কমিটিং।
- AES-EAX (AES128_EAX, AES256_EAX) হল AES128_CTR_HMAC_SHA256-এর তুলনায় সামান্য কম রক্ষণশীল এবং সামান্য দ্রুত।
- MLGR-এ কী-কমিট করা হয়নি।
- AES-GCM (AES128_GCM, AES256_GCM) সাধারণত সবচেয়ে দ্রুত মোড, যেখানে মেসেজের সংখ্যা (২৩২) এবং মেসেজের সাইজের (~৬৪ জিবি প্রতি মেসেজ) উপর কঠোর সীমা থাকে। এইসব সীমা অতিক্রম করলে, AES-GCM প্লেনটেক্সট এবং AES-GCM ইন্টার্নাল কী-এর যাচাইকরণ অংশ ফাঁস করে দিয়ে বিপর্যয়করভাবে ব্যর্থ হয়।
- AES-GCM-SIV (AES128_GCM_SIV, AES256_GCM_SIV)
[RFC8452] আকস্মিক ননস অপব্যবহারের
প্রতিরোধক এবং AES-GCM-এর মতোই পারফর্ম করে। র্যান্ডম IV সহ AES-GCM-SIV-এর জন্য
মেসেজের সংখ্যা এবং মেসেজের সাইজের সীমা AES-GCM-এর সীমার চেয়ে অনেক
বেশি। এইসব সীমা অতিক্রম করা হলে, AES-GCM-SIV
কম বিপর্যয়করভাবে ব্যর্থ হয়: এটি শুধু ফাঁস করে যে
দুটি মেসেজ সমান।
AES-GCM-SIV ব্যবহার করা নিরাপদ, তবে বাস্তবে এটি খুব বেশি ব্যবহার করা হয় না।
- র্যান্ডম ননসের সীমা:
- ২৩২টি মেসেজ, যেখানে প্রতিটি প্লেনটেক্সট সর্বাধিক ৮ GiB
- ২৪8টি মেসেজ, যেখানে প্রতিটি প্লেনটেক্সট সর্বাধিক ৩২ MiB
- ২৬৪টি মেসেজ, যেখানে প্রতিটি প্লেনটেক্সট সর্বাধিক ১২৮ KiB
- Java-তে ব্যবহার করতে, Conscrypt ইনস্টল করুন।
- কী-কমিটিং ADGKLS নয়।
- র্যান্ডম ননসের সীমা:
- XChaCha20-Poly1305 (XCHACHA20_POLY1305)-এর মেসেজের সংখ্যা ও সাইজের উপর AES-GCM-এর থেকে অনেক বেশি সীমা আছে, কিন্তু এটি ব্যর্থ হলে (খুবই অসম্ভাব্য), এটি কী মেটেরিয়ালও ফাঁস করে দেয়। এটি হার্ডওয়্যার অ্যাক্সিলারেটেড নয়,
তাই হার্ডওয়্যার অ্যাক্সিলারেশন উপলভ্য আছে এমন পরিস্থিতিতে এটি AES মোডের চেয়ে
ধীরগতির হতে পারে।
- কী-কমিটিং LGR নয়।
AEAD সাইফারটেক্সটের ওয়্যার ফর্ম্যাট সম্পর্কে আরও জানুন।
নিরাপত্তা সংক্রান্ত গ্যারান্টি
AEAD ইমপ্লিমেন্টেশন এই সুবিধাগুলি অফার করে:
- CCA2 নিরাপত্তা।
- যাচাইকরণের শক্তি অন্তত ৮০-বিট হতে হবে।
- মোট 250 বাইট সহ অন্তত 232টি মেসেজ এনক্রিপ্ট করার ক্ষমতা। ২৩২ পর্যন্ত বেছে নেওয়া প্লেইনটেক্সট বা বেছে নেওয়া সাইফারটেক্সট সহ কোনও অ্যাটাকের সাফল্যের সম্ভাবনা ২-৩২-এর বেশি নয়।
ব্যবহারের উদাহরণ
দেখুন, আমি ডেটা এনক্রিপ্ট করতে এবং সাইফারটেক্সটকে এর কনটেক্সটের সাথে বাইন্ড করতে চাই।