হার্ড ডিস্কে যখন ডেটা সংরক্ষণ করা হয়, কিংবা নেটওয়ার্কের মাধ্যমে ডেটা আদান-প্রদান করা হয়, তখন সেই ডেটার গোপনীয়তা রক্ষা করতে হলে ডেটা এনক্রিপ্ট (encrypt) করতে হয়। তা না হলে অনাকাঙ্ক্ষিত ব্যক্তি কিংবা সিস্টেম সেই ডেটা পড়ে ফেলতে পারে। ডেটা এনক্রিপ্ট করার ধারণা কিন্তু নতুন নয়, বা এটা যে কেবল কম্পিউটারের সঙ্গে সম্পর্কিত, এমনটি নয়। হাজার বছর আগেও মানুষ ডেটা এনক্রিপ্ট করত, যেন যাকে ডেটা পাঠানো হচ্ছে সে ছাড়া অন্য কেউ সেই ডেটার মর্মোদ্ধার করতে না পারে। রোমান সম্রাট জুলিয়াস সিজার একটি পদ্ধতিতে তার চিঠিপত্র লিখতেন, যেটি এনক্রিপ্ট করা থাকত এবং যার কাছে চিঠি যাবে, সেই কেবল ডিক্রিপ্ট (decrypt) করতে পারত বা চিঠির অর্থ উদ্ধার করতে পারত। আবার প্রথম ও দ্বিতীয় বিশ্বযুদ্ধের সময় তো অনেক গণিতবিদ এই এনক্রিপশন পদ্ধতি নিয়ে কাজ করেছেন, যেন তারা শত্রুপক্ষের নিজেদের মধ্যে পাঠানো বার্তার মর্মোদ্ধার করতে পারেন, সেই সঙ্গে মিত্রপক্ষের মধ্যে নিরাপদে ডেটা এনক্রিপ্ট করে পাঠাতে পারেন। কম্পিউটার বিজ্ঞানের যেই শাখায় ডেটা এনক্রিপশন নিয়ে গবেষণা ও কাজ করা হয়, তাকে বলা হয় ক্রিপ্টোগ্রাফি (cryptography)।
এনক্রিপশন পদ্ধতির মূলনীতি হচ্ছে মূল ডেটাকে প্রথমে এনক্রিপ্ট করা। যে ডেটা পাঠাবে, এটি তার কাজ। মূল ডেটাকে বলা হয় প্লেইন টেক্সট (plane text) আর এনক্রিপ্ট করার পরে সেই ডেটাকে বলে সাইফার টেক্সট (cipher text)। তারপর আরেকটি সিস্টেমের কাজ হচ্ছে সাইফার টেক্সট থেকে মূল ডেটা উদ্ধার করা। ডেটা
এনক্রিপশন পদ্ধতি মুলত দুই ধরনের হয়—
১. সিমেট্রিক কি ক্রিপ্টোগ্রাফি (symmetric key cryptography)
২. অ্যাসিমেট্রিক কি ক্রিপ্টোগ্রাফি (asymmetric key
cryptography)
সিমেট্রিক কি ক্রিপ্টোগ্রাফি
এই পদ্ধতিতে একটি বিশেষ কি (key) ব্যবহার করে ডেটা এনক্রিপ্ট করা হয় এবং প্রেরক ও গ্রাহক উভয়পক্ষের কাছেই এই কি (key) থাকতে হয়। প্রেরক এই কি (key) ব্যবহার করে ডেটা এনক্রিপ্ট করে এবং গ্রাহক এই কি (key) ব্যবহার করে ডেটা ডিক্রিপ্ট করে।
এই পদ্ধতিটি বেশ কার্যকর হলেও যখন দুটি আলাদা পক্ষের মধ্যে ডেটা আদান-প্রদান করা হয়, তখন দুটি বিশেষ কারণে অসুবিধা হয়। প্রথমত, যেই কি (key) ব্যবহার করা হয়, সেই কি যেন অন্য কেউ জানতে না পারে, সেটি নিশ্চিত করতে হয়। এটি আপাতদৃষ্টিতে সহজ মনে হলেও, আসলে অত্যন্ত কঠিন কাজ। দ্বিতীয়ত, একপক্ষ যদি অনেকের সঙ্গে ডেটা আদান-প্রদান করে, সেই ক্ষেত্রে প্রতিটি পক্ষের জন্যই আলাদা কি (key) ব্যবহার করতে হয়। এখন, ধরা যাক, একটি ই-কমার্স সাইটে দশ লক্ষ গ্রাহক, তাদের প্রত্যেকের সঙ্গে ডেটা এনক্রিপ্ট করার জন্য পৃথক কি ব্যবহার করা বাস্তবসম্মত নয়।
অ্যাসিমেট্রিক কি ক্রিপ্টোগ্রাফি
প্রত্যেক সিস্টেম একটি বিশেষ অ্যালগরিদম ব্যবহার করে একজোড়া কি তৈরি করে, যাদের একটি হচ্ছে পাবলিক কি ও অপরটি হচ্ছে প্রাইভেট কি। এখন প্ৰত্যেক সিস্টেম তার পাবলিক কি সবাইকে জানিয়ে দেয়।
তাহলে A-এর কাছে B ও C-এর পাবলিক কি আছে। এখন A যদি B-কে কোনো ডেটা পাঠাতে চায়, তাহলে B-এর পাবলিক কি দিয়ে সেই ডেটা এনক্রিপ্ট করে পাঠায়। এই ডেটা ডিক্রিপ্ট করতে হলে B-এর প্রাইভেট কি ব্যবহার করতে হবে, তাই অন্য কেউ এই ডেটা ডিক্রিপ্ট করতে পারবে না। তেমনি C-এর কাছে ডেটা পাঠাতে হলে C-এর পাবলিক কি ব্যবহার করে ডেটা পাঠাতে হবে যা কেবল C-এর পক্ষেই ডিক্রিপ্ট করা সম্ভব। C-এর পাবলিক কি ব্যবহার না করে এনক্রিপ্ট করা হলে সেই ডেটা C-এর পক্ষে ডিক্রিপ্ট করা সম্ভব নয়। অনুরূপভাবে, A-এর কাছে ডেটা পাঠাতে হলে A-এর পাবলিক কি ব্যবহার করে এনক্রিপ্ট করে ডেটা পাঠাতে হবে, যা A তার প্রাইভেট কি ব্যবহার করে ডিক্রিপ্ট করতে পারবে।