মানুষের জীবন বাঁচানোর মতো মহৎ কাজ করেন কারা? বেশিরভাগ মানুষ একবাক্যে বলে দেবে “চিকিৎসকেরা”। কেউ হয়তো বলবে জীববিজ্ঞানী। শুনলে অবাক হবেন – গণিতবিদরা একসময় এমন একটি কাজ করেছিলো যার কারণে দ্বিতীয় বিশ্বযুদ্ধ কমপক্ষে দুই বছর সংক্ষিপ্ত হয়েছিলো।
কী সেই কাজ? তারা জার্মানির নাজিদের সাংকেতিক ভাষা আদানপ্রদানের জন্য ব্যবহৃত যন্ত্রের কর্মপদ্ধতি বের করতে সক্ষম হয়েছিলেন। আজকে আলোচনা করবো সেই যন্ত্রটিকে নিয়েই।
যন্ত্রটির নাম হল “এনিগমা মেশিন”। এটি দেখতে অনেকটা টাইপরাইটের মত। জার্মান ইঞ্জিনিয়ার আর্থার শার্বিয়াস এটি তৈরি করেন। বাণিজ্যিকভাবে তৈরি করার জন্য প্রস্তুত করা হলেও এটি প্রথমে এতটা জনপ্রিয় হয়নি। পরে এটি আরো উন্নত করে জার্মানরা দ্বিতীয় বিশ্বযুদ্ধে ব্যবহার করে কেন্দ্র থেকে সম্পূর্ণ সেনাদলকে গুরুত্বপূর্ণ তথ্য পাঠানোর উদ্দেশ্যে।
ছোটবেলায় হয়তো অনেকেই এই কাজটা করেছে। স্কুলে আমরা নিজেরাই একটা উপায় বের করছিলাম যাতে সাংকেতিকভাবে এক একজনের সাথে তথ্য আদান প্রদান করতে পারি। ব্যাপারটা অনেকটা এরকম ছিলো…
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Z Y X W V U T S R Q P O N M L K J I H G F E D C B A
এখানে আমরা “A” এর পরিবর্তে সাংকেতিক শব্দ হিসেবে “Z”; “B” এর পরিবর্তে “Y”, এভাবে আমরা যদি “BIGGANJATRA” লিখতে যেতাম তাহলে তার সাংকেতিক কোডটা হতো “YRTTZMQZGIZ”। এনিগমা মেশিন দ্বারা তৈরিকৃত কোড এতটা সহজ প্রক্রিয়ায় তৈরি না হলেও সাংকেতিক কোড কিন্তু এভাবেই কাজ করে। একটি প্রকৃত মেসেজের পরিবর্তে আরেকটি সাংকেতিক মেসেজ।
এতেও A থেকে Z পর্যন্ত চাপার জন্য “কি” (key) আছে। যেগুলো চাপলে আমরা আউটপুট হিসেবে কতগুলো সাংকেতিক শব্দ পাই। ধরুন আমরা “BIGGANJATRA” ইনপুট হিসেবে এনিগমা মেশিনে “কি” চাপলাম, আমরা এর সাংকেতিক কোড চাই। এটা হতে পারে “PXQZDFLNSUV” (এটা শুধুমাত্র ধরে নেয়ার জন্যই , এমন কোড নাও আসতে পারে)। খেয়াল করুন, BIGGANJATRA শব্দটিতে দুটি G আছে যার জন্য প্রথমবার কোড এসেছে Q এবং দ্বিতীয়বার Z। হয়তো তৃতীয়বার G চাপলে এটা অন্য কোনো শব্দ আসতে পারে। ঠিক এর জন্যই জার্মানরা ভেবেছিলো তাদের এই কোড কখনো কেউ ভাঙতে পারবে না।
এই ব্যাপারটা কেন হয়? এনিগমা মেশিনে আছে রোটর, যা দেখতে অনেকটা চাকতির মতো , যেটি মেশিনে পাঁচটি থেকে তিনটি একসাথে ব্যবহার করা যেতো। এক একটি রোটরের ২৬ টি ধাপ ছিলো। BIGGANJATRA লেখার জন্য আমরা যখনি মেশিনে B চাপছি তখনই একটি রোটর ঘুরে যেতো এবং একটি নির্দিষ্ট ধাপে সেট হতো। এভাবে প্রথম রোটরটি ২৬ বার ঘোরা সম্পন্ন করলে দ্বিতীয়টি মাত্র একবারই ঘুরতো। দ্বিতীয়টি আবার ২৬ বার ঘোরার পরে তৃতীয়টি একবার ঘুরতো। প্রক্রিয়াটি অনেকটা ঘড়ির কাঁটার মতো। সেকেন্ডের কাটা যেমন ৬০ বার ঘোরার পরে মিনিটের কাঁটা একবার ঘোরে এবং মিনিটের কাঁটা ৬০ বার ঘোরার পরে যেমনি ঘণ্টার কাঁটা একবার ঘোরে, এনিগমা মেশিনের দাঁতগুলো ঠিক এভাবে ঘোরে। আমরা যখন G একবার ইনপুট করেছি তখন রোটরটি একধাপ ঘুরেছে, ঠিক তারপর G আরেকবার চাপার ফলে যখন রোটরটি আরেকবার ঘোরার ফলে ধাপ পরিবর্তন হচ্ছে তখন পুরো মেশিনের সেটিংসটিই পরিবর্তন হয়ে যাচ্ছে। ফলে দুটো G পরপর লিখলেও এটার কোড একই রকম হচ্ছে না।
এই রোটর এর সাথে দৃশ্যমান আরেকটি সেটিংস দেয়া থাকে। উপরের চিত্রের মতো। যার মাধ্যমে আমরা যদি BIGGANJATRA লিখে PXQZDFLNSUV কোডটি পাই তাহলে এটি কোন সেটিংসে এ লেখা হয়েছে দেখা যাবে।
এটাই শেষ নয়। জার্মান মিলিটারি কাছে যে যন্ত্র পাওয়া যায় তাতে নিরাপত্তা বাড়ানোর জন্য এই যন্ত্র থেকে আরো একটি পদ্ধতি তৈরি করে নেন যেখানে ১০ টি প্লাগ ২৬ টি শব্দের মধ্যে জোড়ায় জোড়ায় লাগানো যেতো। যার ফলে সাংকেতিক কোডে আরো পরিবর্তন আসতো।
তো আমরা মোট কতগুলো সেটিংস পেলাম? আমরা স্কুলে যে সাংকেতিক কোড ব্যবহার করতাম তাতে সেটিংস মাত্র একটি। অর্থাৎ A চাপলে আমরা সবসময় Z পাবো। এনিগমা মেশিনের সেটিংসের সংখ্যা বের করা যায় এভাবে,
রোটর ৫টি থেকে ৩ টি = ৫*৪*৩ = ৬০ টি সেটিংস
২৬ টি আলাদা ধাপ প্রত্যেকটি রোটরের জন্য = ২৬*২৬*২৬ = ১৭৫৭৬
প্লাগবোর্ডে ২৬ টি শব্দ আছে যা নিজেদের মধ্যে সাজানো যায় ২৬! ( ২৬ ফ্যাক্টোরিয়াল = ২৬*২৫*২৪*২৩*…………*৩*২*১) উপায়ে, কিন্তু এখানে দশটি প্লাগ থাকায় তা দিয়ে বিশটি শব্দে সংযোগ ঘটানো যেতো। বাকি থাকে ৬ টি শব্দ , এদেরকে নিজেদের মধ্য সাজানো যায় ৬! উপায়ে। আমাদের প্লাগবোর্ডে ১০ জোড়া শব্দে প্লাগ কানেক্ট থাকবে। যেহেতু কোন অর্ডারে এই দশ জোড়া থাকবে এটা নির্দিষ্ট না তাই ১০! বাদ যাবে। আবার একটি প্লাগ একটি জোড়া শব্দের মধ্যে দুইভাবে লাগানো যেতো, সুতরাং ২^১০ সংখ্যক সেটিংস বাদ যাবে এই ২৬! থেকে। তাহলে প্লাগবোর্ড থেকে প্রাপ্ত সেটিংস = (২৬!)/(৬!*১০!*২^১০) = ১৫০৭৩৮২৭৪৯৩৭২৫০ টি সেটিংস।
মোট সেটিংস দাঁড়াবে 158,962,555,217,826,360,000 টি।
প্রেরক এবং প্রাপক অপারেটরদ্বয়ের এর কাছে একটি সেটিংস এর লগ থাকতো। প্রত্যেকমাসে এই সেটিংস এর লগটি পরিবর্তন হতো। লগ থেকে প্রত্যেকদিন আলাদা আলাদা সেটিংস বেছে নেয়া হতো। কেন্দ্র থেকে মেসেজ পাঠানো হলে তা সাংকেতিক থাকতো। প্রত্যেকদিনের আলাদা আলাদা সেটিংস লগ থেকে নিয়ে সেটার পাঠোদ্ধার করা হতো এবং নির্দেশ প্রেরণ করা হতো। সেটিংস লগটি এমন কালি দিয়ে লেখা হতো যা পানিতে অতি সহজেই দ্রবীভূত হয়ে যেতো। তাই ধরা পড়লে তারা সেটা পানিতে মিশিয়ে ফেলতে চাইতো। এভাবেই এনিগমা মেশিন হয়ে ওঠে দুর্বোধ্য একটি যন্ত্র।
অথচ এই কোডটা ভাঙা হয়েছিলো। যারা গত বছরের বিখ্যাত মুভি The Imitation Game দেখেছেন তারা এই এনিগমা মেশিন আর তার কোড ভাঙা নিয়ে এবং এলান টিউরিং ও তার দল নিয়ে অনেক কিছুই জানেন। আপাতদৃষ্টিতে ত্রুটিহীন মনে হলেও এই মেশিন এর একটা বড় ত্রুটি ছিলো যার মাধ্যমেই এই কোডটি ভাঙা হয়। পরবর্তী পর্বে এই ত্রুটি নিয়ে আলোচনা করবো।
তথ্যসূত্রসমূহ :