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