গত সংখ্যায় সিজার সাইফারের সফলতা এবং দুর্বলতা নিয়ে আলোচনা করা হয়েছে। সিজার সাইফারের দুর্বলতা ঢেকে আরও সুরক্ষিত কোনো সাইফার পদ্ধতি আবিষ্কার কিন্তু তখনো হয়নি। লেগে গিয়েছে বেশ কয়েক শতক। ষোড়শ শতাব্দীর দিকে এসে প্রচলন হয় পলিঅ্যালফাবেটিক সাইফারের। একটি সাইফার তখনই শক্তিশালী হবে, যখন এতে ফিঙ্গারপ্রিন্ট খুবই সামান্য থাকবে। ফিঙ্গারপ্রিন্ট কী জিনিস, সেটা খুব সহজে বলে দেওয়া যায়। এমনিতে ফিঙ্গারপ্রিন্ট বলতে আমরা বুঝি আঙুলের ছাপ।
পৃথিবীর প্রতিটা মানুষের আঙুলের ছাপ ভিন্ন। কাজেই কারও আঙুলের ছাপ যদি আপনি পেয়ে যান, আর আপনার কাছে যদি কেন্দ্রীয় তথ্যভান্ডার থাকে, যেখানে সব আঙুলের ছাপ একত্র করা আছে, খুব সহজেই আপনি মিলিয়ে নিতে পারবেন এই ফিঙ্গারপ্রিন্টটি কার। সাইফারের ক্ষেত্রেও ফিঙ্গারপ্রিন্ট মোটামুটি একই রকম। ফিঙ্গারপ্রিন্ট জানা থাকলে আপনি কোন সাইফার ব্যবহার করা হয়েছে, এটি অনায়াসে বের করে ফেলতে পারবেন। কাজেই সাইফারে ফিঙ্গারপ্রিন্ট যত অস্পষ্ট বা হালকা হবে, সেটি উদ্ধার করা তত কঠিন হবে।
সিজার সাইফারের মূল দুর্বলতা ছিল এর ফ্রিকোয়েন্সি ডিস্ট্রিবিউশন। যথেষ্ট পরিমাণ নমুনা হাতে পেলে যে কেউ ফ্রিকোয়েন্সির গ্রাফের সঙ্গে তুলনা করে খুব সহজেই শিফটিংয়ের পরিমাণ বের করে সাইফারের অর্থ উদ্ধার করে ফেলতে পারবে। সিজার সাইফারে কত ঘর শিফটিং করা হয়েছে, তা-ই এর ফিঙ্গারপ্রিন্ট। এই সমস্যাটির সমাধান হতে পারে ডিস্ট্রিবিউশনটি যদি আমরা আরও সুষম এবং সমান (Flatten) করে ফেলতে পারি। আর এ কাজটিই করা যায় পলিঅ্যালফাবেটিক সাইফারের মাধ্যমে। পলিঅ্যালফাবেটিক সাইফারের জন্য প্রথমেই আমাদের লাগবে একটি শিফট ওয়ার্ড।
গত সংখ্যার উদহরণে ফিরে যাই, ধরে নিলাম নীতু এবং তপু দুজনই আগে থেকে একটি ইংরেজি শব্দ নিজেদের মাঝে ঠিক করে রেখেছে, শব্দটি হচ্ছে BANGLADESH। সবার আগে নীতু শব্দটির প্রতিটি অক্ষরের বর্ণমালাতে অবস্থান বের করবে, যেমন B-এর জন্য ২, A-এর জন্য ১, N-এর ১৪ এইভাবে। তাহলে BANGLADESH শব্দটির জন্য যে সংখ্যাটি পাওয়া যাবে, সেটি হচ্ছে ২, ১, ১৪, ৭, ১২, ১, ৪, ৫, ১৯, ৮। এটি একটি দশ সংখ্যাবিশিষ্ট স্ট্রিং শব্দগুচ্ছ। এবার নীতু তার মেসেজের প্রতিটি অক্ষরকে ধারাবাহিকভাবে সংখ্যার ক্রম ধরে ২, ১, ১৪, এভাবে ৮ পর্যন্ত শিফট করবে।
প্রথম দশটি অক্ষর এভাবে শিফট করার পর পরের দশটি অক্ষরের জন্য আবারও এই স্ট্রিং ব্যবহার করবে। সিজার সাইফারের প্রধান দুর্বলতা ছিল এখানে শুধু একটি শিফটিং ব্যবহৃত হতো সবগুলো বর্ণের জন্য। এখন নীতু মাল্টিপল শিফটিং ব্যবহার করছে। একবার শিফটিং করার পর চিঠিটি এনক্রিপ্টেড হয়ে তপুর কাছে পৌঁছালে তপু মেসেজ থেকে প্রতিটি অক্ষরের জন্য শিফটিং বিয়োগ করে মূল মেসেজ উদ্ধার করতে পারবে, কারণ ও প্রথম থেকেই সিক্রেট ওয়ার্ডটি যে BANGLADESH সেটা জানে।
পলিঅ্যালফাবেটিক সাইফারের শক্তিশালী দিক হলো একটি মাত্র শিফটিং বা সাবস্টিটিউশন ব্যবহার না করে একাধিক শিফটিং এবং সাবস্টিটিউশন ব্যবহার করা হচ্ছে। অনেকটা অনেকগুলো সিজার শিফটিংয়ের সিরিজ একসঙ্গে ব্যবহার করার মতো। এর সুবিধা কী, সেটি এবার দেখা যাক। ধরা যাক, এবারো রুস্তম মাঝখান থেকে নীতু এবং তপুর অনেকগুলো চিঠি পরপর পড়ে চিঠির বক্তব্য কী সেটি উদ্ধার করার চেষ্টা চালাচ্ছে। আগের মতো করে ফ্রিকোয়েন্সি অ্যানালাইসিস করলে এখন সে একটু বিপাকে পড়বে। কারণ সিজার সাইফারে যে রকম সহজেই শিফটিংয়ের মান কত ছিল বলে দেওয়া সহজ ছিল, এ ক্ষেত্রে সেটি হবে না। এ ক্ষেত্রে অক্ষরগুলোর ফ্রিকোয়েন্সি ডিস্ট্রিবিউশন আগের চেয়ে আরও সুষম এবং প্রায় সমানভাবে বিস্তৃত মনে হবে। তাহলে এই চিঠির অর্থ এখন রুস্তম কীভাবে উদ্ধার করতে পারে?
একটা বিষয় সব সময় মাথায় রাখা জরুরি, যেকোনো একটি সাইফার সিস্টেমে যত বেশি তথ্য লিক হবে, তত বেশি সেটা অনিরাপদ বা ডিসাইফার করার জন্য সহজ হিসেবে বিবেচ্য হবে। যত বেশি আমরা একটি পরিবর্তনশীল বা একটি নির্দিষ্ট দৈর্ঘ্যের স্ট্রিং ব্যবহার করব এনক্রিপশনের জন্য, ততবারই এখানে তথ্য লিক হওয়ার সম্ভবনা থাকবে। এ বিষয়টি ঘটার কারণটি আর কিছুই না, রিপিটেশন বা পুনরাবৃত্তি। এ ক্ষেত্রে, নীতু তপুকে চিঠি পাঠিয়েছে একটি গোপন শব্দ ব্যবহার করে।
মূল চিঠির বক্তব্য পড়তে চাইলে রুস্তমের গোপন শব্দ বা BANGLADESH শব্দটি জানার কোনো প্রয়োজন নেই। বরং BANGLADESH শব্দটিতে অক্ষর সংখ্যা দশটি, আর সাইফারের জন্য নীতু দশ সংখ্যার একটা শিফটিং ব্যবহার করেছে, শুধু এটুকু জানাই যথেষ্ট। অর্থাৎ কত বর্ণের ফিঙ্গারপ্রিন্ট ব্যবহার করেছে, তা জানলেই এই সাইফার ভেঙে ফেলা সম্ভব।
একবার সাইফারের দৈর্ঘ্য জেনে গেলে শব্দটি আপনাআপনিই সামনে চলে আসবে। একটু খাটুনি হলেও রুস্তম ভিন্ন ভিন্ন দৈর্ঘ্যের জন্য ফ্রিকোয়েন্সি ডিস্ট্রিবিউশন কী রকম, সেটা সময় নিয়ে দেখলেই হবে। তাহলে এক, দুই, তিন এভাবে ভিন্ন ভিন্ন দৈর্ঘ্যের বিপরীতে চেক করতে করতে যখনই রুস্তম প্রতি দশ অক্ষরের জন্য ফ্রিকোয়েন্সি ডিস্ট্রিবিউশন চেক করবে, তখনই সে মূল মেসেজটা উদ্ধার করে ফেলতে পারবে।
কীভাবে করবে? ধরা যাক, রুস্তম নীতুর পাঠানো মেসেজটাই উদ্ধার করার চেষ্টা করছে। এবং ১, ২, ৩ এভাবে করতে করতে দশ বর্ণের শব্দের জন্য ডিসাইফার করতে শুরু করল। যদি মেসেজটা ১০ শব্দের একটা ফিঙ্গারপ্রিন্ট ব্যবহার করে এনক্রিপ্ট করা হয়ে থাকে, তাহলে মেসেজের ১, ১১, ২১, ৩১...নম্বর বর্ণ একইভাবে শিফটিং করা হয়েছে। আবার ২, ১২, ২২, ২৩...নম্বর বর্ণ একইভাবে শিফটিং করা হয়েছে। এখন রুস্তম এভাবে করে যদি আলাদা করে ফেলে, তাহলে দশটা ভিন্ন ভিন্ন বর্ণগুচ্ছ পাবে। এই প্রতিটা বর্ণগুচ্ছ কিন্তু এখন আলাদা আলাদাভাবে একটা করে সিজার সাইফার। এগুলোর ফ্রিকোয়েন্সি বিশ্লেষণ করে কোন ক্ষেত্রে কত ঘর শিফটিং করা হয়েছে, তা বের করে ফেলা যাবে। এ ক্ষেত্রে সমস্যা একটাই, এক অক্ষর দৈর্ঘ্যের, দুই অক্ষর দৈর্ঘ্যের এভাবে দশ অক্ষরের দৈর্ঘ্যের সাইফার পর্যন্ত বিষয়টা ধৈর্য ধরে পরীক্ষা করা। এটাই পলিঅ্যালফাবেটিক সাইফারের আরেকটি শক্তিশালী দিক। একই কারণে গোপন শব্দের দৈর্ঘ্য যত বড় হবে, সাইফার তত শক্তিশালী হবে এবং মূল মেসেজ উদ্ধার করা ততটাই কঠিন হবে।
পলিঅ্যালফাবেটিক সাইফারের ক্রিপ্টো অ্যানালাইসিসের জন্য বেশ সুন্দর অনেকগুলো পরীক্ষা রয়েছে এবং এর জন্য সংখ্যাতত্ত্বের সাহায্যে রীতিমতো সূত্রটুত্র বানিয়ে অনেক চমত্কার কাজ করে রাখা আছে। কীভাবে আরও সহজে একটি পলিঅ্যালফাবেটিক সাইফার ভেঙে ফেলা যায়, কীভাবে এটিকে আরও শক্তিশালী করা যায়, এ নিয়ে বহুকাল আগে থেকে এখন পর্যন্ত কাজ চলছে।
সাধারণ যে পলিঅ্যালফাবেটিক সাইফার সম্পর্কে আমরা ধারণা নিলাম, এটি বিশ্লেষণের জন্য কাসিস্কি এক্সামিনেশন নামে একটি পদ্ধতি আছে। ১৮৬৩ সালে ফ্রিডমান কাসিস্কি এই পদ্ধতির সাহায্যে কীভাবে পলিঅ্যালফাবেটিক সাইফার ভাঙা সম্ভব সেটি দেখান। যদিও এর আগেও অনেকেরই এ বিষয় নিয়ে ধারণা ছিল। চার্লস ব্যাবেজ এ নিয়ে অনেক কাজ করেছেন এমনটাও মনে করা হয়। কিন্তু কাসিস্কিই প্রথম বিষয়টিকে গুছিয়ে উপস্থাপন করেন বলে তাঁকে এ বিষয়ে সবাই একনামে চেনে।
এ ছাড়া ফ্রিডম্যান টেস্ট নামে আরেকটি টেস্ট আছে, ১৯২০ সালে উইলিয়াম ফ্রিডম্যান নামে আরেক ভদ্রলোক সম্ভাবনার ধারণা ব্যবহার করে খুব চমত্কারভাবে পলিঅ্যালফাবেটিক সাইফার উদ্ধার করার পদ্ধতি ব্যাখ্যা করেন। পরে কোনো এক পর্বে আমরা এই গাণিতিক বিশ্লেষণগুলো দেখব।
আপনাদের জন্য ছোট্ট একটা কাজ থাকুক, নিচে আমি একটা সাইফার দিয়েছি, খুবই ছোটখাটো, এর পলিঅ্যালফাবেটিক এনক্রিপশন জন্য একটা সিক্রেট ওয়ার্ড ব্যবহার করা হয়েছে, শব্দটি আমাদের দেশ, BANGLADESH। আর সাইফারটি হলো−‘ovvhynii sihbf pcceq’। আপনারা কি সাইফারটির অর্থ উদ্ধার করতে পারবেন?
লেখক: একাডেমিক কাউন্সিলর, বাংলাদেশ গণিত অলিম্পিয়াড
*লেখাটি বিজ্ঞানচিন্তার ২০১৮ সালের মার্চ সংখ্যায় প্রকাশিত