রবিবার, ১৮ ডিসেম্বর, ২০১৬

পাবলিক ও প্রাইভেট কি এনক্রিপশন


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

ক্রিপ্টোগ্রাফি কি?

আমরা অনেকেই ছোটবেলায় এই কাজ করেছি। যেমন TBLJC। এইটা কি?
এইটা আামার নাম। প্রত্যেক লেটারের জন্য পরের লেটার নেয়া হয়েছে। অর্থাৎ প্রত্যেক লেটারের সাথে এক যোগ করেছি। এটা থেকে আসল টেক্সট পেতে হলে প্রত্যেক লেটারের জন্য আগের লেটার নিতে হবে। অর্থাৎ এক বিয়োগ করতে হবে। এইভাবে যেকোন মেসেজ এনক্রিপ্ট করা সম্ভব। এখন ১ যোগ না করে ১ থেকে ২৫ এর মধ্যে যেকোন সংখ্যা যোগ করা যায়। যোগ করে যদি ২৬ এর বেশি হয়ে যায় তাহলে ২৬ বিয়োগ করে দেব বা মড ২৬ নেব।

এখনে আমরা যে সংখ্যাটা যোগ করছি সেটাকে 'কি' (চাবি) বলা হয়। যদি কি জানা থাকে তাহলে আমরা সাইফার টেক্সট ডিক্রিপ্ট করে প্লেইন টেক্সট পেতে পারি।

এই ধরণের এনক্রিপশনকে সিজার সাইফার বলা হয়। এটা খুবই দুর্বল। কেননা সম্ভাব্য কি সংখ্যা মাত্র ২৫। কেন? কারণ যদি কি ২৬ নেই তাহলে ২৬ যোগ করে মড ২৬ নিলে একই লেটার আসবে। ২৭ নিলে মড ২৬ হবে ১। অর্থাৎ কিগুলা এখানে রিপিট হচ্ছে। যে কি ই ব্যবহার করি না কেন, ২৫ টা কি ট্রাই করেই ডিক্রিপ্ট করে ফেলা যাবে। সিজার সাইফার থেকে শক্তিশালী অনেক সাইফার আছে যেগুলোতে সম্ভাব্য কি সংখ্যা অনেক বেশি হয়। অনেকগুলোতে এমন বেশি হয় যে কম্পিউটারেও একটা একটা কি ট্রাই করে ভাঙ্গা যায় না। সেগুলোতে 'যোগ করে মড' সিম্পল ফর্মুলা না ব্যবহার করে ভিন্ন ফর্মুলা ব্যবহার করা হয়। সেগুলোরও নিজেদের নিজস্ব দুর্বলাতা আছে। কিছু ভাঙ্গা যায় আবার কিছু ভাঙ্গা মুটামুটি অসম্ভব। বিস্তারিত জানতে হলে বইটি পড়ে ফেলতে হবে।

পাবলিক কি এনক্রিপশন

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

পাবলিক কি এনক্রিপশনে একটা কি এর বদলে এক জোড়া কি থাকে। একটা পবলিক আরেকটা প্রাইভেট। এগুলার বৈশিষ্ট্য এমন যে একটা দিয়ে এনক্রিপ্ট করলে কেবলমাত্র অন্যটা দিয়ে ডিক্রিপ্ট করা যায়। তাহলে প্রবলেম সলভ্ড। কারো সাথে যোগাযোগ করতে চাইলে তাকে আপনার পাবলিক কি পাঠিয়ে দিন। সেটা হ্যাকারের কাছে গেলে যাক, কোন সমস্যা নেই। আপনার বন্ধু আপনার পাবলিক কি দিয়ে এনক্রিপ্ট করে আপনাকে মেসেজ পাঠাবে। সেই মেসেজ কেবল মাত্র আপনার প্রাইভেট কি দিয়েই ডিক্রিপ্ট কারা যাবে, যেটি শুধু আপনার কাছেই আছে।

যেভাবে কাজ করে

পাবলিক কি এনক্রিপশন কিভাবে কাজ করে সেটা জানার খুব ইচ্ছা ছিল। জানলাম। কিন্তু কেন কাজ করে সেটা কবে বুঝতে পারব কিংবা অদৌ কোনদিন বুঝতে পারব কি না জানি না। কিভাবে কাজ করে সেটা একটু বর্ণনা করার চেষ্টা করলাম।

প্রথমে দুইটা বড় র্যান্ডম প্রাইম নাম্বার p ও q নেয়া হয়। কত বড় ? একশ ডিজিটের উপরে। জ্বি হ্যাঁ। সেটা কিভাবে কারা হয় বা কিভাবে সম্ভব সেটা বলতে পারব না তবে এইটুকু বলব 'নাম্বার থিওরির ম্যাজিক'। মিলার র্যাবিন  এ্যালগরিদম ব্যাবহার করা হয়। তারপর তাদের গুন করে গুনফল n বের করা হয়।

আরেকটা বড় এবং র্যান্ডম প্রাইম নাম্বার e জেনারেট করা হয় যেটি (p-1)(q-1) এর সাথে কো প্রাইম।  e এর মডিউলার ইনভার্স d বের করা হয়। এখন n ও e মিলিতভাবে পাবলিক কি হিসেবে কাজ করে এবং n ও d প্রাইভেট কি হিসেবে কাজ করে।

কি জেনারেট করা হল এবার এনক্রিপ্ট করতে হবে। এখন বলে রাখা ভাল যে এখানে ক্যারেক্টার বাই ক্যারেক্টার এনক্রিপ্ট করা হয় না। বরং প্লেইন টেক্সকে প্রথমে ইন্টিজার ব্লকে পরিণত কারা হয়। অর্থাৎ টেক্সটকে বড় বড় ইন্টিজারে এনকোড করা হয়। যেমন "Hello World!" হয়ে যায় 1033441003260674863333142663। সেটা কিভাবে করা হয় লিখলাম না। তবে ব্যাপারটা তেমন জটিল না। তারপর সেই ইন্টিজারগুলোকে এনক্রিপ্ট করা হয়। এনক্রিপ্ট করার ফর্মুলা হল

\begin{equation} ciphertext = plaintext^e \bmod n \end{equation}

ডিক্রিপ্ট করার ফর্মুলা হল:

\begin{equation} plaintext = ciphertext^d \bmod n \end{equation}

হ্যাঁ, এইটা কাজ করে। কেন কাজ করে আমাকে জিজ্ঞেস করে লাভ নেই। এখানে প্রত্যেকটা সংখ্যাই কিন্তু বিশাল বড় বড়। তারপরও ক্যালকুলেশনগুলা খুব ইফিসিয়েন্টলি কারা যায়। নাম্বার থিওরি।

একই এ্যালগরিদম ব্যবহার করে ডিজিটাল সিগনেচারও করা যায়। সেক্ষেত্রে প্রাইভেট কি দিয়ে ফাইল বা মেসেজ এনক্রিপ্ট করতে হয়। তাহলে শুধু আপনার পাবলিক কি দিয়েই সেটা ডিক্রিপ্ট করা যাবে। যেহেতু আপনার প্রাইভেট কি শুধু আপনার কাছেই আছে, খুব সহজেই যাচাই করা যাবে এই সিগনেচার আপনার কিনা।

এই পর্যন্তই। আরো জানতে কিংবা এই এ্যালগরিদম ইমপ্লিমেন্ট করতে চাইলে বাইটি পড়ে ফেলতে হবে। ফিডব্যাক আশা করছি।

২টি মন্তব্য:

  1. ভাই সব মাথার উপরে দিয়া গেল, কিছুই বুঝতে পারলামনাহ

    উত্তরমুছুন
  2. অনেক কিছু শিখা গেলো, আরো সুন্দর সুন্দর পোস্ট চাই

    উত্তরমুছুন