আপনি যদি ইন্টারনেট এবং সোশ্যাল মিডিয়া বা যেকোনো ওয়েবসাইট ব্যাবহার করেন, তাহলে আপনি অবশ্যই জানেন যে ইন্টারনেটে হাজার রকমের হ্যাকার আছে এবং তারা অনলাইনে আপনার যেকোনো ধরনের ক্ষতি করতে পারে আপনার অনলাইন অ্যাকাউন্ট বা আপনার সোশ্যাল মিডিয়া প্রোফাইলটিকে হ্যাক করে বা অন্য যেকোনোভাবে চুরি করে সেটির অ্যাক্সেস নেওয়ার মাধ্যমে। আপনি হয়তো শুনে থাকবেন যে হ্যাকাররা চাইলে খুব সহজেই আপনার অনলাইন অ্যাকাউন্টের পাসওয়ার্ড ক্র্যাক করতে পারে যদি আপনি আপনার অ্যাকাউন্টগুলোতে কমপ্লেক্স পাসওয়ার্ড ব্যাবহার না করেন। কিন্তু কিভাবে? হ্যাকাররা কিভাবে আপনার পাসওয়ার্ড হ্যাক করে? আজকে এই বিষয়েই আলোচনা করা যাক।
এই আর্টিকেলের বিষয়বস্তু সমূহ
পাসওয়ার্ড হ্যাশিং
আপনি হয়তো জানেন না যে, এখনকার মডার্ন প্রায় সব ওয়েবসাইট কখনো ইউজারদের পাসওয়ার্ডকে প্লেইন টেক্সট ফরম্যাটে সেভ করে রাখেনা। পাসওয়ার্ড সেভ করার জন্য বিভিন্ন ধরনের হ্যাশিং অ্যালগরিদম ব্যাবহার করা হয়। আপনি যখন ফেসবুকে লগইন করেন, তখন আপনাকে আপনার ইমেইল অ্যাড্রেস এবং আপনার পাসওয়ার্ডটি ইন্টার করে লগইন করতে হয়। যদি আপনি সেই পাসওয়ার্ডটিই ইন্টার করেন যেটি অ্যাকাউন্ট ক্রিয়েট করার সময় দিয়েছিলেন, অর্থাৎ পাসওয়ার্ড ম্যাচ করে, তখনই আপনাকে আপনার ফেসবুক আইডির অ্যাক্সেস দেওয়া হয়। আপনি পাসওয়ার্ড চেঞ্জ করে থাকলে সেটা আলাদা কথা।
আপনি যখন প্রথম ফেসবুক আইডি ক্রিয়েট করেন তখন আপনাকে একটি ফর্ম ফিলআপ করতে হয় যেখানে ইন্টার করতে হয় আপনার নাম, আপনার ইমেইল অ্যাড্রেস, আপনার বার্থ ডেট এবং আপনার জেন্ডার এবং মোস্ট ইম্পরট্যান্টলি, আপনার পাসওয়ার্ড। আপনি যখন সব সঠিকভাবে ফিলআপ করে সাবমিট করেন, তখন আপনার সম্পর্কে এই সকল ডেটাগুলো ফেসবুকের ব্যাক এন্ড ডেটাবেজে চলে যায় অর্থাৎ সেভ হয়ে যায়। সেখানে আপনার নাম, আপনার ইমেইল অ্যাড্রেস এবং বার্থ ডেট এইসবকিছু প্লেইন টেক্সট ফরম্যাটেই সেভ করে রাখা হয়।
তবে আপনার অ্যাকচুয়াল পাসওয়ার্ডটি কিন্তু প্লেইন টেক্সট ফরম্যাটে সেভ করে রাখা হয় না। আপনার পাসওয়ার্ডটি একটি হ্যাশিং অ্যালগরিদমের সাহায্যে প্রথমে হ্যাশ করা হয় এবং পাসওয়ার্ডের এনক্রিপটেড হ্যাশ ফর্মটি বের করা হয়। এরপর হ্যাশ করা এনক্রিপটেড ভার্শনটি সেভ করে রাখা হয়। পাসওয়ার্ডটিকে যেকোনো হ্যাশিং অ্যালগরিদমের সাহায্যে হ্যাশ করলে পাসওয়ার্ডটি একেবারেই চেঞ্জ হয়ে যায়। যেমন- আপনার পাসওয়ার্ডটি যদি হয় TecHubs999 তারপর ফেসবুক যদি MD5 হ্যাশিং অ্যালগরিদমের সাহায্যে আপনার পাসওয়ার্ডটি হ্যাশ করে, তাহলে হ্যাশড পাসওয়ার্ডটি হয়ে দাঁড়াবে 62a52a1a8d952bb8c7ebdf2b922d4a18।
এই হ্যাশড পাসওয়ার্ডটিকেই ফেসবুক তাদের ব্যাক এন্ড ডেটাবেজে আপনার পাসওয়ার্ড হিসেবে সেভ করে রাখবে। এরপর আপনি যখন ফেসবুকে লগইন করবেন, তখন যে পাসওয়ার্ডটি ইন্টার করবেন, সেটির হ্যাশ যদি ফেসবুকের ডেটাবেজের হ্যাশড পাসওয়ার্ডটির সাথে ম্যাচ করে, তাহলেই আপনি আপনার আইডির অ্যাক্সেস পাবেন।
এখন ধরুন, ফেসবুক যদি একটি ডেটা ব্রিচের শিকার হয় এবং কোন হ্যাকার যদি ফেসবুকের ব্যাক এন্ড ডেটাবেজের অ্যাক্সেস পেয়ে যায়, তাহলে হ্যাকার ফেসবুকের সকল আইডির ইউজারনেম, ইমেইল অ্যাড্রেস, ফোন নাম্বার পেয়ে যাবে এবং সাথে ইউজারের পাসওয়ার্ডটির ওই হ্যাশড ভার্শনটি পাবে। কিন্তু হ্যাকার যদি এখন ইউজারনেম এবং পাসওয়ার্ডের হ্যাশটি ব্যাবহার করে ফেসবুকে লগইন করে চায়, তাহলে পারবে না। পাসওয়ার্ডের জায়গায় হ্যাশড পাসওয়ার্ডটি ইন্টার করলে ফেসবুক কখনোই অ্যাকসেপ্ট করবে না।
কারন, লগইন করার সময় অবশ্যই অ্যাকচুয়াল পাসওয়ার্ডটি প্লেইন টেক্সটে ইনপুট করার কথা। তাহলে এখন হ্যাকার যদি কোটি কোটি ফেসবুক অ্যাকাউন্টেরও পাসওয়ার্ড হ্যাশ পেয়ে যায়, তাতে তার ১% ও লাভ নেই, যদি না সে এই হ্যাশগুলোকে আবার প্লেইন টেক্সটে কনভার্ট করতে পারে। কিন্তু হ্যাশগুলো থেকে এর পেছনের প্লেইন টেক্সট বের করা প্রায় অসম্ভব একটি কাজ। কারন, হ্যাশিং একটি ওয়ান ওয়ে ফাংশন। আপনি প্লেইন টেক্সট থেকে সেটির হ্যাশ বের করতে পারবেন, তবে কোন হ্যাশ থেকে সেটির প্লেইন বের করতে পারবেন না। হ্যাশিং অ্যালগরিদমগুলো এভাবেই কাজ করে।
রেইনবো টেবিল
এখানেই মূলত চলে আসে আপনার পাসওয়ার্ডটি কতটা স্ট্রং বা কতোটা কমপ্লেক্স সেই ব্যাপারটি। আপনি যদি ফেসবুকের পাসওয়ার্ড খুবই সিম্পল রাখেন, যেমন ধরুন আপনি যদি পাসওয়ার্ড ব্যাবহার করেন Test1234 কিংবা 54321 ইত্যাদি তাহলে ফেসবুক আপনার পাসওয়ার্ডটি হ্যাশড ফরম্যাটে সেভ করে রাখলেও হ্যাকার খুব সহজেই আপনার পাসওয়ার্ডটি ক্র্যাক করে ফেলবে। কিভাবে? রেইনবো টেবিলের (Rainbow Table) সাহায্যে। রেইনবো টেবিল হচ্ছে একটি সিম্পল স্প্রেডশিটের মতো, যেখানে হাজারো রকমের সহজ এবং খুব কমনলি ইউজ করা সহজ পাসওয়ার্ডগুলো এবং তাদের প্রত্যেকের হ্যাশড ভার্শনগুলো আছে।
হ্যাকার আপনার পাসওয়ার্ডের হ্যাশ পাওয়ার পরে এই রেইনবো টেবিলের সব কমনলি ইউজড পাসওয়ার্ডগুলোর হ্যাশের সাথে ওই হ্যাশটি মিলিয়ে দেখবে। যদি সেখানে থাকা কোন পাসওয়ার্ডের হ্যাশের সাথে ওই হ্যাশটি মিলে যায়, তাহলেই হ্যাকার জেনে গেলো যে আপনার পাসওয়ার্ডের প্লেইন টেক্সট কি। কিন্তু, এটা তখনই কাজ করবে যখন আপনি খুবই সিম্পল একটি পাসওয়ার্ড ব্যাবহার করবেন যেমন Test1234। কারন, রেইনবো টেবিলে শুধুমাত্র সিম্পল এবং কমনলি ইউজড পাসওয়ার্ডগুলোরই হ্যাশ থাকে। তাই সবসময় স্ট্রং পাসওয়ার্ড ব্যাবহার করা উচিত।
ডিকশনারি অ্যাটাক
পাসওয়ার্ডটি যদি কমপ্লেক্স পাসওয়ার্ড হয়, তখন রেইনবো টেবিলের আর কোন কাজ থাকেনা। তখনই মুলত কাজ শুরু হয় ডিকশনারি অ্যাটাক এবং ব্রুটফোর্স অ্যাটাকের। এই দুটি অনেকটাই একইধরনের জিনিস। ডিকশনারি অ্যাটাক হচ্ছে শুধুমাত্র একটি বিশাল বড় টেক্সট ফাইল যেখানে অসংখ্য পাসওয়ার্ড এবং তাদের হ্যাশ লেখা থাকে। অনেকসময় এই সম্পূর্ণ পাসওয়ার্ডের ডিকশনারিটি হ্যাকার নিজেই তৈরি করে। এখানে মূলত হ্যাকার তার পাওয়া পাসওয়ার্ড হ্যাশটিকে কম্পেয়ার করে ডিকশনারিতে থাকা অসংখ্য সিম্পল এবং কমপ্লেক্স পাসওয়ার্ডের হ্যাশের সাথে। যদি ওই ডিকশনারিতে থাকা কোন হ্যাশের সাথে ওই হ্যাশটি মিলে যায়, তাহলে ওই হ্যাশটির পেছনের প্লেইন টেক্সটটিই হবে হ্যাকারের কাঙ্খিত পাসওয়ার্ড।
ব্রুটফোর্স অ্যাটাক
ব্রুটফোর্স অ্যাটাকে মুলত হ্যাকার যা করে তা হচ্ছে সব ধরনের লেটার, নাম্বার, সিম্বল সবকিছু ব্যাবহার করে বিভিন্ন ধরনের লক্ষ-কোটি র্যান্ডম পাসওয়ার্ড তৈরি করে এবং সেগুলোর প্রত্যেকটির হ্যাশ বের করে। এরপর ওই সব হ্যাশগুলোকে তার পাওয়া পাসওয়ার্ড হ্যাশের সাথে ম্যাচ করে কিনা দেখে। কোনটি যদি ম্যাচ করে, তাহলেই সেই পাসওয়ার্ডটি ক্র্যাক হয়ে গেলো। অন্যভাবে বলতে হলে এক্ষেত্রে মুলত হ্যাকার যা করছে তা হলো, যতরকম পাসওয়ার্ডের অস্তিত্ব থাকা সম্ভব সবগুলো পাসওয়ার্ডের হ্যাশ বের করছে এবং সেটি তার পাওয়া পাসওয়ার্ড হ্যাশটির সাথে ম্যাচ করে কিনা দেখছে। হ্যা, ঠিক ধরেছেন, এখানে যেহেতু সব পাসওয়ার্ড জেনারেট করতে হচ্ছে এবং ইনফিনিট পাসওয়ার্ড হ্যাশের সাথে ম্যাচ করতে হচ্ছে, তাই পাসওয়ার্ড যদি স্ট্রং হয়, তাহলে পাসওয়ার্ডটি ম্যাচ করাতে বা ক্র্যাক করতে কয়েকশো বিলিয়ন বছরেরও বেশি সময় লেগে যাবে। আর ততোদিন তো হ্যাকার নিজেও বেঁচে থাকবে না।
পাসওয়ার্ড সল্টিং
পাসওয়ার্ড হ্যাক করা থেকে হ্যাকারদেরকে আটকানোর জন্য অনেক ওয়েবসাইট আরেকটি টেকনিক ব্যাবহার করে থাকে যার নাম হচ্ছে সল্টিং। ব্যাপারটা অনেকটা পাসওয়ার্ডের ওপরে সল্ট বা লবন ছিটিয়ে দেওয়ার মতোই। এক্ষেত্রে পাসওয়ার্ডটি সার্ভারের ডেটাবেজে সেভ করার আগে পাসওয়ার্ডটির ভেতরে আরও কিছু এক্সট্রা ক্যারেকটার ঢুকিয়ে দেওয়া হয় এবং তারপরে সেটিকে হ্যাশ করা হয়। এখন পাসওয়ার্ডগুলোর ভেতরে কি ক্যারেকটার ঢুকিয়ে সেটিকে হ্যাশ করা হবে তা তারা কখনো পাবলিকলি ঘোষণা দেয়না।
যেমন- ধরুন ফেসবুক সব পাসওয়ার্ডের প্রথমে এবং শেষে gh34! এই ক্যারেকটারগুলো অ্যাড করে তারপরে পাসওয়ার্ডটি হ্যাশ করে। তাহলে আপনি যদি খুব সিম্পল কোন পাসওয়ার্ডও ব্যাবহার করেন, সেটি কমপ্লেক্স হয়েই হ্যাশ হবে। যেমন- আপনার পাসওয়ার্ড যদি হয় test1234 তাহলে ফেসবুক সেটিকে gh34!test1234gh34! এমন বানিয়ে তারপরে হ্যাশ করবে, যাতে ডিকশনারি অ্যাটাক, রেইনবো টেবিল, ব্রুটফোর্স কোনটাই আর কাজ না করে। তবে আপনি যখন প্লেইন টেক্সটে পাসওয়ার্ড ইন্টার করে আপনার অ্যাকাউন্টে লগইন করবেন, তখন সেই পাসওয়ার্ডটির সাথে তাদের নির্ধারিত ওই ক্যারেকটারগুলো অ্যাড করেই তারপর হ্যাশ ম্যাচ করে তারপর আপনাকে অ্যাকাউন্টের অ্যাক্সেস দেবে ফেসবুক।