DES-এ S-বক্সের ভূমিকা
DES (Data Encryption Standard) হলো NIST (National Institute of Standards and Technology) দ্বারা প্রবর্তিত একটি সিমেট্রিক-কী ব্লক সাইফার। DES ফেডারাল রেজিস্টারে জানুয়ারি ১৯৭৭ সালে FIPS 46 হিসেবে প্রকাশিত।
NIST DES-কে অনু শ্রেণির সফটওয়্যারে ব্যবহারের জন্য স্ট্যান্ডার্ড হিসেবে প্রস্তাব করেন। প্রকাশ পর থেকে DES সবচেয়ে ব্যাপকভাবে ব্যবহৃত সিমেট্রিক-কী ব্লক সাইফার। পরে NIST নতুন স্ট্যান্ডার্ড (FIPS 46-3) জারি করে ট্রিপল DES (DES সাইফার তিনবার রিপিট) ভবিষ্যতের সফটওয়্যারের জন্য অনুমোদন দেন।
DES-র ৬৪-বিট ব্লক সাইজ এবং বাস্তবায়নে ৫৬-বিট কী ব্যবহার হয় (সম্পূর্ণ ৬৪ বিট কী থেকে ৮ প্যারিটি বিট বাদ দেওয়া হয়)। DES একটি সিমেট্রিক ক্রিপ্টোসিস্টেম, cụ thể ১৬-রাউন্ড ফেইস্টেল সাইফার।
এনক্রিপ্ট হওয়া ব্লক একটি ইনিশিয়াল পারমুটেশন (IP) এর অধীন হয়, তারপর একটি জটিল কী-নির্ভর কম্পিউটেশন, এবং শেষে একটি পারমুটেশন যা ইনিশিয়াল পারমুটেশনের বিপরীত (IP⁻¹)। পারমুটেশন হলো একটি ফাংশন দ্বারা বাস্তবায়িত অপারেশন যা পজিশন j-র এলিমেন্টকে পজিশন k-তে স্থানান্তর করে। কী-নির্ভর কম্পিউটেশনকে সহজে ফাংশন f (সাইফার ফাংশন) এবং ফাংশন KS (কী শিডিউল) দ্বারা প্রকাশ করা যায়।
ফাংশন F-এ S-বক্সের ভূমিকা
সাবস্টিটিউশন একটি গ্রুপ S-বক্স দ্বারা বাস্তবায়িত হয়। এটানে আটটি S-বক্স থাকে। প্রতিটি ৬ বিট ইনপুট নেয় এবং ৪ বিট আউটপুট দেয়:
- বক্স Sᵢ-র ইনপুটের প্রথম ও চূড়ান্ত বিট একটি ২-বিট বাইনারি নম্বর তৈরি করে যাতে চারটি সাবস্টিটিউশন (Sᵢ-র টেবিলের চারটি সারি) থেকে একটি নির্বাচন করা হয়।
- মাঝপথের চারটি বিট ষোলশ কলাম থেকে একটি নির্বাচন করে।
- সারি ও কলাম দ্বারা নির্বাচিত সেলের ডেসিমেল মান তার ৪-বিট রিপ্রেজেন্টেশনে রূপান্তরিত হয় আউটপুট হিসেবে।
- উদাহরণ: S1-এ ইনপুট 011001 হলে, সারি = 01, কলাম = 1100 (১২)। সারি ১, কলাম ১২-র মান ৯, তাই আউটপুট = 1001।
S-বক্সের নীতিমালা (Design Principles)
- প্রতিটি S-বক্সে ৬ বিট ইনপুট এবং ৪ বিট আউটপুট থাকতে হবে।
- S-বক্সের কোনো আউটপুট বিট ইনপুট বিটের লিনিয়ার ফাংশনের খুব নিকট হওয়া উচিত নয়। (S-বক্সগুলো DES-এ একমাত্র নন-লিনিয়ার উপাদান এবং তাদের নন-লিনিয়ারিতাই অ্যালগরিদমের শক্তি।)
- S-বক্সের প্রতিটি "সারি" সকল সম্ভাব্য আউটপুট ধারণ করতে হবে। (এটি আউটপুট র্যান্ডমাইজ করে।)
- যদি একটি S-বক্সের দুটি ইনপুট শুধু এক বিটে পার্থক্য করে, তবে তাদের আউটপুট কমপক্ষে দুটি বিটে পার্থক্য করতে হবে।
- যদি দুটি ইনপুট নির্দিষ্টভাবে মাঝপথের দুটি বিটে পার্থক্য করে, তবে আউটপুট কমপক্ষে দুটি বিটে পার্থক্য করতে হবে।
- যদি দুটি ইনপুট প্রথম দুটি বিটে পার্থক্য করে কিন্তু চূড়ান্ত দুটি বিটে সম্মত হয়, তবে দুটি আউটপুট অবশ্যই ভিন্ন হতে হবে।