ক্রিপ্টোগ্রাফি বা গুপ্ত-বার্তা বিদ্যা

পর্ব ১

RHN TKX T ZXGBNL

উপরের মতো এরকম বিভিন্ন লেখা আপনি হরহামেশাই দেখে থাকেন, যেগুলোর আপাতদৃষ্টিতে কোনো মানে বোঝা যায় না। কিন্তু আসলেই এগুলোর মানে আছে। আজকে আমরা তা সম্পর্কে জানবো।

যুদ্ধের সময় এক রাজা তার সেনাপতি কে একটা গোপন চিঠি পাঠাবেন। সেনাপতির কাছে সেই চিঠি নিয়ে যাবে রাজার উজির। কিন্তু সমস্যা হল এই উজিরকে নিয়ে। উজিরের বদঅভ্যাস হল অন্যের চিঠি পড়া। কিন্তু এই চিঠিতে এতটাই গুরুত্বপূর্ণ এবং গোপনীয় তথ্য আছে যে এটা কোনো ভুল মানুষের হাতে পড়লে সমস্যা হতে পারে। তাই রাজা চান না যে উজির (বা সেনাপতি বাদে অন্য কেউ) তার চিঠি পড়ুক। কী করা যেতে পারে?

রাজা সিদ্ধান্ত নিলেন যে তিনি পুরো চিঠিটি ক্রিপ্টোগ্রাফির (Cryptography) সাহায্যে লিখবেন। ক্রিপ্টোগ্রাফি ব্যাপারটা অনেকটা এমন, রাজা একটা বাক্সের ভেতর চিঠিটা রেখে সেটা একটা কম্বিনেশন লক (ব্রিফকেসের গায়ে যেরকম নাম্বারওয়ালা লক থাকে) দিয়ে বন্দী করে দেবেন, যার কম্বিনেশনটা শুধু রাজা আর সেনাপতি জানেন। তারা দুজন ছাড়া ঐ বাক্সটা আর কেউ খুলতে পারবে না, কারণ আর কারও কাছে ঐ কম্বিনেশন নেই।

আমরা এখন যদি এই কম্বিনেশন লকের কথা ভুলে গিয়ে এর পরিবর্তে সাইফার (Cipher) নিয়ে চিন্তা করি তবে সেটাকেই বলা হবে ক্রিপ্টোগ্রাফি বা গুপ্ত-বার্তা বিদ্যা। সাইফার হচ্ছে অনেকটা ভার্চুয়াল তালার মতো, যেটার বাহ্যত কোনো আকার বা অস্তিত্ব নেই কিন্তু প্রয়োগ নীতি আছে। সাইফার মূলত কোনো লেখাকে উল্টেপাল্টে পরিবর্তন করে এমন একটা কিছু বানিয়ে ফেলে, যেটা দেখে আপাতত অর্থহীন আর বেখাপ্পা মনে হয়। কাজেই রাজা যদি সাইফার ব্যবহার করে চিঠিটি লেখেন তবে উজির যদি চিঠিটি পড়েও ফেলে, তার কাছে ঐ চিঠি হিজিবিজি ছাড়া আর কিছুই মনে হবে না। সে পড়তেও পারবে না।

ইতিহাসের পাতা ওল্টালে সর্বপ্রথম যে সাইফার সম্পর্কে জানা যায়, সেটি হলো সিজার সাইফার। সিজার সাইফার মূলত একধরনের বর্ণ প্রতিস্থাপন (Letter substitution) ভিত্তিক সাইফার, যার শুরুটা হয়েছিল সম্রাট জুলিয়াস সিজারের হাত ধরে, খ্রিষ্টপূর্ব আটান্ন সালের দিকে। তিনি তার চিঠির প্রতিটি বর্ণকে অন্য আরেকটি বর্ণ দিয়ে প্রতিস্থাপন করে দিতেন। এতে পুরো চিঠির চেহারাটাই পাল্টে যেত। ফলে অন্য কারো পক্ষে চিঠির বক্তব্য উদ্ধার করা সম্ভব ছিল না। সম্রাট এই কাজটি করতেন যাতে যুদ্ধক্ষেত্রে তাঁর নির্দেশ শত্রুপক্ষের হাতে পড়লেও তারা যেন কিছুতেই সেই নির্দেশ সম্পর্কে জানতে না পারে।

এখন রাজা এবং সেনাপতি যদি সিজার সাইফার ব্যবহার করে চিঠি চালাচালি করতে চায় তাহলে তাদের প্রথম কাজ হবে আগে থেকেই নিজেদের মধ্যে ১ থেকে ২৫ এর মধ্যে যেকোনো একটা সংখ্যা নির্দিষ্ট করে নেয়া। এই সংখ্যাটা তারা দুজন ছাড়া আর কেউ জানবে না। সংখ্যাটা ১ থেকে ২৫ এর মধ্যেই কেন হতে হবে? উত্তরটা সোজা, ইংরেজি বর্ণমালায় অক্ষর আছে ২৬টি (আর বাকিটা বোঝা যাবে একটু পরে)।

আপাতত আমরা বোঝার সুবিধার্থে একটা সংখ্যা ধরে নেই, ধরি সংখ্যাটি ৩। অর্থাৎ রাজা যদি সেনাপতিকে চিঠি পাঠায়, তাকে মূল চিঠির প্রতিটি অক্ষরের পরিবর্তে ইংরেজি বর্ণমালার তিন ঘর পরের অক্ষরটি ব্যবহার করতে হবে। তার মানে, চিঠির প্রতিটি A অক্ষরের পরিবর্তে D, B এর পরিবর্তে E, C এর পরিবর্তে F ব্যবহার করতে হবে। ঠিক তেমনি W এর পরিবর্তে Z, X এর পরিবর্তে A, Y এর পরিবর্তে B এবং Z এর পরিবর্তে C ব্যবহার করতে হবে। এভাবে পুরো চিঠি লেখা হলে রাজা তার উজির মারফত সেনাপতিকে চিঠিটি পাঠিয়ে দেবেন। এই যে রাজা সাইফার ব্যবহার করে চিঠিটি লিখে পাঠালেন, এটাকে বলে এনক্রিপশন (Encryption)।

সিজার সাইফার: এনক্রিপশন

ধরা যাক রাজা পাঠাতে চান ATTACK OPPOSITIONS কথাটি। সিজার সাইফার দিয়ে তিন ঘর শিফটিং করলে লেখাটি হয়ে যাবে DWWDFN RSSRVLWLRQV. এই লেখাটি পাঠিয়ে দিলে, এই লেখা বুঝতে পারবে এমন সাধ্য কি উজিরের (কিংবা অন্য কারোর) আছে?

সেনাপতির কাছে চিঠিটি পৌঁছালে তার কাজ হবে রাজার ঠিক উল্টো কাজটা করা। অর্থাৎ প্রতিটি অক্ষরের পরিবর্তে তার তিন ঘর আগের অক্ষরটি ব্যবহার করলেই মূল অর্থ বের হয়ে আসবে। মূল অর্থ বের করার জন্য সেনাপতি যে কাজটি করল, এটাকে বলে ডিক্রিপশন (Decryption)।

সিজার সাইফার: ডিক্রিপশন

অর্থাৎ কস্মিনকালেও সেনাপতি বাদে অন্য কেউ তাদের চিঠি পড়তে পারবে না। পড়লেও তার অর্থ বুঝতে পারবে না। কিন্তু না, ব্যপারটা এরকম নয়। সিজার সাইফারের দুর্বলতাও আছে। সিজার সাইফার আবিষ্কারের প্রায় আট শ বছর পর, আবু ইউসুফ ইয়াকুব ইবনে ইসহাক আল-কিন্দি নামের একজন আরব মুসলিম গণিতবিদ এটার দুর্বলতা নিয়ে একটি গবেষণা প্রবন্ধ প্রকাশ করেন। তিনি সিজার সাইফারের দুর্বলতা খুঁজে বের করেন মূলত বিভিন্ন বইপত্র এবং অন্যান্য রচনায় ভাষার একটা গুরুত্বপূর্ণ বৈশিষ্ট্যের ওপর নির্ভর করে। বৈশিষ্টটা হলো বর্ণমালার সবগুলো অক্ষরের আনুপাতিক পরিমাণ ও তুলনা।

আপনি যদি কোনো বই, পত্রপত্রিকা ইত্যাদি থেকে এর সবগুলো ব্যবহৃত বর্ণের ব্যবহার সংখ্যা (Frequency of letters) গোনেন, তবে দেখতে পারবেন এই সংখ্যাগুলো সমান নয়। হয়তো সবচেয়ে বার পাবেন E, T, A, অক্ষরগুলি। আবার সবচেয়ে কম বার পাবেন Z, Q, X, J অক্ষরগুলি (ইংরেজি ভাষার ক্ষেত্রে)। এই বৈশিষ্ট্যকে বলা হয় যেকোনো বর্ণমালার ফিঙ্গারপ্রিন্ট। প্রতিটি ভাষার বর্ণমালার এ রকম ফিঙ্গারপ্রিন্ট থাকবেই, কারণ সব অক্ষরের ব্যবহার অবশ্যই সুষম নয়।

অর্থাৎ আপনার কাছে যদি একটি বই বা চিঠি থাকে, যার পুরোটাই সিজার সাইফার ব্যবহার করে লেখা, বইটা ডিক্রিপ্ট করার জন্য আপনার প্রথম কাজ হবে ঐ বইয়ে বা চিঠিতে ব্যবহৃত সর্বোচ্চ অক্ষরটি খুঁজে বের করা। ধরুন আপনি সর্বোচ্চবার খুঁজে পেলেন H অক্ষরটি। তাহলে আপনি মোটামুটি নিশ্চিত থাকতে পারেন যে ওটাই মূল লেখার E. এরপর বাকিগুলো ডিক্রিপ্ট করে ফেলতে পারবেন। তাছাড়া আপনি যদি ঐ বই/চিঠির কয়েকটি লাইন নিয়ে একবার ১ করে লেফট শিফট করে, তারপর ২ করে লেফট শিফট করে, তারপর ৩, ৪,.. করে লেফট শিফট করতে করতে ২৫ পর্যন্ত লেফট শিফট করেন তবে এক পর্যায়ে আপনি বুঝতে পারবেন কোন সংখ্যা ধরে পুরোটা ডিক্রিপ্ট করতে হবে (এটা খুবই সময়সাপেক্ষ ব্যাপার)।

মূলত এই দুর্বলতা প্রকাশ পাওয়ার পরপরই ধীরে ধীরে সিজার সাইফারের ব্যবহার মোটামুটি বিলুপ্ত হয়ে যায়। তবে গুপ্ত-বার্তা বিদ্যা থেমে থাকে নি। আরো জটিল জটিল এনক্রিপশন পদ্ধতি আবিষ্কৃত হয়েছে এবং এসব ব্যবহার করেই আজকের পৃথিবীতে তথ্য আদান প্রদান, যোগাযোগ ইত্যাদি হচ্ছে (পরবর্তীতে আমি এসব সম্পর্কে লিখব ইনশাআল্লাহ)।




পর্ব ২

এর আগের পর্বে সিজার সাইফারের ব্যবহার এবং এর দুর্বলতা নিয়ে আলোচনা করেছি। সিজার সাইফারের দুর্বলতা প্রকাশ পাওয়ার পর অনেক বছর ধরে আরো সুরক্ষিত কোনো সাইফার আবিষ্কৃত হয়নি। আবিষ্কার হতে লেগেছে বেশ কয়েক শতক। ষোড়শ শতাব্দীর দিকে এসে প্রচলন হয় পলিঅ্যালফাবেটিক সাইফারের। এটি নিয়েই এবার আলোচনা করব।

একটি সাইফার তখনই শক্তিশালী হবে, যখন এতে ফিঙ্গারপ্রিন্ট খুব সামান্য থাকবে (অর্থাৎ Frequency of Letters সুষম হবে)। এমনিতে ফিঙ্গারপ্রিন্ট বলতে আমরা বুঝি আঙ্গুলের ছাপ। পৃথিবীর প্রতিটি মানুষের আঙ্গুলের ছাপ ভিন্ন ভিন্ন। কাজেই আপনি যদি কারো আঙ্গুলের ছাপ পেয়ে যান, আর আপনার কাছে যদি সবার আঙ্গুলের ছাপের তথ্যভান্ডার থাকে, তবে আপনি খুব সহজেই মিলিয়ে নিতে পারবেন যে সেই ফিঙ্গারপ্রিন্টটি কার। সাইফারের ক্ষেত্রেও ফিঙ্গারপ্রিন্ট মোটামুটি একই রকম। ফিঙ্গারপ্রিন্ট জানা থাকলে আপনি বের করতে পারবেন যে কোন সাইফার ব্যবহার করা হয়েছে। তো, সাইফারে ফিঙ্গারপ্রিন্ট যত অস্পষ্ট বা হালকা হবে, সেটি উদ্ধার করা তত কঠিন হবে।

সিজার সাইফারের মূল দুর্বলতা ছিল ফ্রিকোয়েন্সি অব লেটার্স। যথেষ্ট পরিমাণ নমুনা হাতে পেলে যে কেউ লেটার ফ্রিকোয়েন্সি গ্রাফের সঙ্গে তুলনা করে খুব সহজেই শিফটিংয়ের পরিমাণ বের করে গুপ্ত বার্তাটির অর্থ বের করে ফেলতে পারবে।

ইংরেজি বর্ণমালার ফ্রিকোয়েন্সি

এই দুর্বলতা কাটানো যেতে পারে যদি আমরা সাইফারের ফ্রিকোয়েন্সি অব লেটার্স আরও সুষম এবং সমান (প্রায়) করে ফেলতে পারি। আর এ কাজটিই করা যায় পলিঅ্যালফাবেটিক সাইফারের মাধ্যমে।

পলিঅ্যালফাবেটিক সাইফার ব্যবহার করার জন্য প্রথমেই আমাদের লাগবে একটি শিফট ওয়ার্ড। গত পর্বের উদাহরণে ফিরে যাই, ধরে নেই রাজা আর সেনাপতি সিজার সাইফার ব্যবহার করে চিঠি চালাচালি করার পরও উজির সেটি পড়ে ফেলেছে। তাই তারা এবার পলিঅ্যালফাবেটিক সাইফার ব্যবহার করতে চায়। ধরে নেই রাজা পাঠাতে চায় IT IS TIME TO ATTACK বার্তাটি। কথাটি পাঠানোর পূর্বে তাদেরকে আগে থেকে নিজেদের মধ্যে একটি ইংরেজি শব্দ ঠিক করে রাখতে হবে, ধরি শব্দটি হচ্ছে MICROSOFT. এখন রাজাকে শব্দটির প্রতিটি অক্ষরের জন্য বর্ণমালাতে এর অবস্থান বের করতে হবে। যেমন- M এর জন্য ১৩, I এর জন্য ৯, C এর জন্য ৩ এইভাবে। তাহলে MICROSOFT শব্দটির ৯টি অক্ষরের জন্য যে সংখ্যাগুলো পাওয়া যাবে তা হলো: ১৩, ৯, ৩, ১৮, ১৫, ১৯, ১৫, ৬, ২০। এবার রাজা তার বার্তাটির প্রতিটি অক্ষরকে ধারাবাহিকভাবে ঐ সংখ্যাগুলো দিয়ে শিফট করবে। অর্থাৎ I কে ১৩ ঘর ডানে শিফট করবে, T কে ৯ ঘর ডানে শিফট করবে। এভাবে বার্তাটির প্রথম নয়টি অক্ষরকে ঐ ৯টি সংখ্যা দিয়ে শিফট করে পরবর্তী নয়টি অক্ষরকে আবার ঐ ৯টি সংখ্যা দিয়ে শিফট করবে। এভাবে শিফট করার পর পুরো বার্তাটি হয়ে যাবে VC LK IBBK NB JWLPVZ.

পলিঅ্যালফাবেটিক সাইফার: এনক্রিপশন

সিজার সাইফারের একটি দুর্বলতা হলো, এতে শুধু একটি শিফটিং ব্যবহৃত হতো সবগুলো বর্ণের জন্য। তাই কেউ যদি ধারাবাহিকভাবে একবার ১ ঘর বামে শিফট, আরেকবার ২ ঘর বামে শিফট, … করত তাহলেই গুপ্ত বার্তাটি বের হয়ে যেত। কিন্তু পলিঅ্যালফাবেটিক সাইফারে ব্যবহৃত হয় মাল্টিপল শিফটিং। তাই এটি অত্যন্ত শক্তিশালী। এখন সেনাপতির কাছে এনক্রিপ্টেড বার্তাটি পৌঁছালে সে আবার রাজার উল্টো কাজটি করে গুপ্ত বার্তাটি ডিক্রিপ্ট করে ফেলতে পারবে, কারণ সে আগে থেকেই গোপন শব্দটি জানে।

পলিঅ্যালফাবেটিক সাইফার: ডিক্রিপশন

পলিঅ্যালফাবেটিক সাইফারের শক্তিশালী দিক হলো একটি শিফটিং ব্যবহার না করে মাল্টিপল শিফটিং ব্যবহার করা। এর ফলে সব বর্ণের ব্যবহার সুষম হয়ে যায়। তাই কেউ ফ্রিকোয়েন্সি অ্যানালাইসিস করে এই সাইফার ডিক্রিপ্ট করতে পারবে না। তবে গণিতের কয়েকটি শাখার (সংখ্যা তত্ত্ব, ক্যালকুলাস, সম্ভাবনা তত্ত্ব) অগ্রগতির কারণে এই সাইফারকেও ডিক্রিপ্ট করা সম্ভব হয়েছিল। চলুন দেখি কিভাবে পলিঅ্যালফাবেটিক সাইফার ডিক্রিপ্ট করা যায়।

কেউ যদি গোপন শব্দটি বা শিফট ওয়ার্ডটি জেনে যায় তবে এই সাইফার ডিক্রিপ্ট করা তার কাছে ডালভাত! কিন্তু ডিক্রিপ্ট করার জন্য গোপন শব্দটি জানার দরকার নেই, গোপন শব্দটির দৈর্ঘ্য (length) জানলেই এ সাইফার ভেঙে ফেলা যায়।

ধরুন একটা বিশাল বড় বই ৮ অক্ষরের একটি শব্দ ব্যবহার করে পলিঅ্যালফাবেটিক সাইফার দিয়ে এনক্রিপ্ট করা। তাহলে বইটির ১, ৯, ১৭, ২৫, ৩৩, ৪১, … নম্বর বর্ণ একইভাবে শিফট করা হয়েছে। আবার ২, ১০, ১৮, ২৬, ৩৪, ৪২, … নম্বর বর্ণ একইভাবে শিফট করা হয়েছে। এবার আমরা যদি প্রতিটা বর্ণগুচ্ছ আলাদা করে ফেলি তাহলে ৮টা আলাদা আলাদা বর্ণগুচ্ছ পাবো। এই বর্ণগুচ্ছগুলো একেকটা সিজার সাইফার। তাই এগুলো নিয়ে একটু সময় নিয়ে ফ্রিকোয়েন্সি অ্যানালাইসিস করলে কত ঘর শিফট করা হয়েছে তা পেয়ে যাবো। কিন্তু যদি আমরা গোপন শব্দটির দৈর্ঘ্য না জানি তবে শব্দটির দৈর্ঘ্য একবার ১, একবার ২, একবার ৩, ধরে ধরে উপরের কাজগুলো করতে হবে। যা অত্যন্ত সময়সাপেক্ষ ব্যাপার। এটাই পলিঅ্যালফাবেটিক সাইফারের আরেকটি শক্তিশালী দিক। অর্থাৎ গোপন শব্দটি বা শিফট ওয়ার্ডটির দৈর্ঘ্য যত বড় হবে, এই সাইফার তত বেশি শক্তিশালী হবে এবং মূল বার্তা উদ্ধার করা তত বেশি কঠিন হবে।

পলিঅ্যালফাবেটিক সাইফারের ক্রিপ্টো অ্যানালাইসিসের জন্য বেশ সুন্দর অনেকগুলো পরীক্ষা করা হয়েছে এবং এর জন্য সংখ্যাতত্ত্বের সাহায্যে রীতিমতো সূত্রটুত্র বানিয়ে অনেক চমৎকার কাজ করে রাখা আছে। কীভাবে আরও সহজে একটি পলিঅ্যালফাবেটিক সাইফার ভেঙে ফেলা যায় তা নিয়ে বহুকাল থেকে কাজ চলছে। তাছাড়া আরো সাইফার যেমন- Feistel Cipher, Block Cipher, Stream Cipher আবিষ্কার হয়েছে। এসব নিয়ে আর আলোচনা করলাম না। যদি কারো ইচ্ছা থাকে তাহলে উইকিপিডিয়ায় সার্চ করে বিস্তারিত জানা যাবে।

আরো বিস্তারিত জানতে দেখুনঃ-

ক্রিপ্টোগ্রাফি অনেক সুন্দর একটা জিনিস। আপনি এটা সম্পর্কে একটু জানলে আরো একটু জানার কৌতুহল হবে। জানতে জানতে একসময় আপনি এটার প্রেমে পড়ে যাবেন। আমাদের জীবনে ক্রিপ্টোগ্রাফির গুরুত্বকে আবারো স্মরণ করে এটা সম্পর্কে লেখা এখানেই শেষ করছি। ধন্যবাদ।

পাঠকদের জন্য:- পোস্টের এক্কেবারে উপরে যে লেখাটি ছিল সেটা ডিক্রিপ্ট করুন। ডিক্রিপ্ট করতে পারলে আসল লেখাটি কমেন্ট করুন।

মন্তব্যসমূহ

এই ব্লগটি থেকে জনপ্রিয় পোস্টগুলি

উইন্ডোজ পিসি থেকে কোনো সফটওয়্যার পুরোপুরি আনইন্সটল করার নিয়ম

উইন্ডোজ পিসির গতি বৃদ্ধি করার উপায়

কম্পিটিটিভ প্রোগ্রামিংয়ের দুনিয়ায় প্রবেশের গল্প