
“পাসওয়ার্ডে একটা বড় হাতের অক্ষর, একটা সংখ্যা আর একটা চিহ্ন দিতে হবে।” সাইনআপ ফর্মে এই কথাটা এত বার দেখেছি যে অনেকেই ধরে নেন, নিয়ম মানলেই পাসওয়ার্ড শক্ত। কিন্তু প্রশ্নটা আসলে আরেকটু গভীরে: ৮ অক্ষরের জটিল পাসওয়ার্ড ভালো, নাকি ১৬ অক্ষরের সাদামাটা? পাসওয়ার্ড জেনারেটর বানানোর সময় যে “শক্তি” লেখাটা দেখায়, সেটা কোথা থেকে আসে? এই লেখায় সেই হিসাবটা খুলে দেখব। অঙ্কগুলো সরল, আর শেষে আপনি নিজের হাতেই মিলিয়ে নিতে পারবেন।
আগে বুঝি, “বিট” মানে কী
পাসওয়ার্ড কতটা শক্ত, তা মাপার একটা সহজ উপায় হলো জিজ্ঞেস করা: এই পাসওয়ার্ড বানানোর মোট কতগুলো সম্ভাব্য পথ ছিল? যত বেশি পথ, অনুমান করে মেলানো তত কঠিন। এই পথের সংখ্যাকে সুবিধার জন্য ২-এর ঘাত হিসেবে লেখা হয়, আর ঘাতের সংখ্যাটাই “বিট”।
একটা ছোট উদাহরণ নিন। একটি মুদ্রা ছুড়লে ফল দুই রকম, অর্থাৎ ১ বিট। তিনবার ছুড়লে ২ × ২ × ২ = ৮ রকম ফল, অর্থাৎ ৩ বিট। প্রতি বিট বাড়লে সম্ভাবনা দ্বিগুণ হয়। তাই ৫০ বিট আর ৫১ বিটের পার্থক্য সামান্য মনে হলেও, আসলে দ্বিগুণ কঠিন। আর ৬০ বিট মানে ৫০ বিটের চেয়ে ১,০২৪ গুণ বেশি পথ।
টুল কীভাবে অক্ষর বাছে ও শক্তি মাপে
টুলে আপনি চারটি ঘর বাছতে পারেন: ছোট হাতের অক্ষর, বড় হাতের অক্ষর, সংখ্যা ও চিহ্ন। যে ঘরগুলো টিক দেওয়া থাকে, তাদের অক্ষর একসঙ্গে জুড়ে একটি “পুল” তৈরি হয়। এরপর পাসওয়ার্ডের প্রতিটি জায়গার জন্য টুল পুল থেকে একটি করে অক্ষর তোলে। তোলার কাজটা হয় ব্রাউজারের নিজের নিরাপদ র্যান্ডম ব্যবস্থায়, সাধারণ Math.random দিয়ে নয়। একটি খুঁটিনাটি: প্রতিটি টিক দেওয়া ধরন থেকে অন্তত একটি অক্ষর রাখা হয়, বাকিগুলো পুরো পুল থেকে, আর শেষে সব এলোমেলো করে সাজানো হয়। তাই “চিহ্ন বেছেছি অথচ একটাও চিহ্ন নেই” ঘটনা ঘটে না।
শক্তির আনুমানিক বিট বের হয় একটি সূত্রে:
বিট = দৈর্ঘ্য × log₂(পুলের অক্ষর সংখ্যা)
log₂ মানে “২-কে কত ঘাতে তুললে এই সংখ্যা পাওয়া যায়”। যেমন পুলে ৮০টি অক্ষর থাকলে log₂(৮০) প্রায় ৬.৩২। তাই প্রতিটি অক্ষর গড়ে প্রায় ৬.৩২ বিট যোগ করে।
পুলে আসলে কয়টি অক্ষর
ইংরেজি বর্ণমালায় ছোট হাতের ২৬টি, বড় হাতের ২৬টি, সংখ্যা ১০টি, আর টুলের চিহ্নের তালিকায় ২৩টি। সব মিলিয়ে ৮৫। কিন্তু টুলে “দেখতে এক রকম অক্ষর বাদ” ঘরটি শুরুতেই টিক দেওয়া থাকে। তখন পাঁচটি অক্ষর বাদ যায়: সংখ্যার ০ আর ১, বড় হাতের O আর I, ছোট হাতের l। কারণ লেখায় বা ছোট ফন্টে এগুলো গুলিয়ে যায়। ফলে পুল দাঁড়ায় ৮৫ − ৫ = ৮০টি অক্ষরে: ছোট হাতের ২৫, বড় হাতের ২৪, সংখ্যা ৮, চিহ্ন ২৩।

এই বাদ দেওয়ার দাম খুবই কম। ৮৫ থেকে ৮০ হলে প্রতি অক্ষরে বিট কমে ৬.৪১ থেকে ৬.৩২, অর্থাৎ ১৬ অক্ষরে মোট প্রায় ১.৪ বিট। ঝামেলা এড়ানোর তুলনায় এটা নগণ্য।
দৈর্ঘ্য অনুযায়ী ছক
এবার সব চার ধরন টিক রেখে (পুল ৮০) দৈর্ঘ্য বদলে দেখি। ৮ অক্ষরে ৮ × ৬.৩২ = প্রায় ৫১ বিট। ১২ অক্ষরে ৭৬ বিট। ১৬ অক্ষরে ১০১ বিট। টুল শক্তির চারটি স্তর দেখায়: ৪০ বিটের নিচে “দুর্বল”, ৬০-এর নিচে “মোটামুটি”, ৮০-এর নিচে “ভালো”, আর তার ওপরে “খুব ভালো”।

ছকে একটা জিনিস চোখে পড়ার মতো: ৮ থেকে ১০ অক্ষরে গেলে বিট বাড়ে প্রায় ১২.৬, আর ১০ থেকে ১২ অক্ষরেও আরও ১২.৬। প্রতিটি বাড়তি অক্ষর একই হারে কাজ করে। তাই দৈর্ঘ্য বাড়ানো সবচেয়ে সোজা পথ।
দৈর্ঘ্য না জটিলতা, কোনটা বেশি কাজের
এবার আসল প্রশ্নের উত্তর। নিচের তিনটি সংমিশ্রণ দেখুন, সবই টুলের একই সূত্রে হিসাব করা:
- শুধু ছোট হাতের অক্ষর, ১৬ অক্ষর: পুল ২৫, বিট প্রায় ৭৪।
- ছোট ও বড় হাতের অক্ষর আর সংখ্যা, ১২ অক্ষর: পুল ৫৭, বিট প্রায় ৭০।
- সব চার ধরন, ১২ অক্ষর: পুল ৮০, বিট প্রায় ৭৬।
দেখুন, শুধু ছোট হাতের অক্ষরের ১৬ অক্ষরের পাসওয়ার্ড (৭৪ বিট) ছোট-বড়-সংখ্যা মেশানো ১২ অক্ষরের (৭০ বিট) চেয়ে সামান্য এগিয়ে। আর ৮ অক্ষরে সব চার ধরন মেশালেও মাত্র ৫১ বিট, যা ১৬ অক্ষরের সাদামাটা পাসওয়ার্ডের অনেক নিচে। অর্থাৎ ধরন যোগ করলে লাভ হয়, কিন্তু প্রতিটি নতুন অক্ষর যোগ করার লাভ তার চেয়ে বেশি।
এর ব্যবহারিক মানে হলো, কোনো ওয়েবসাইট যদি চিহ্ন নিতে না চায় (কিছু ফর্ম সত্যিই নেয় না), তাতে ঘাবড়ানোর কিছু নেই। চিহ্নের ঘরটির টিক তুলে দৈর্ঘ্য ১৬ করে দিন। ছোট-বড়-সংখ্যা মিলিয়ে ১৬ অক্ষরে পুল ৫৭, বিট প্রায় ৯৩, টুলের হিসাবে “খুব ভালো”।
অনুমান করে মেলাতে কত সময় লাগে
বিট শুনে অনুভূতি আসে না, তাই একটা কাল্পনিক হিসাব করি। ধরুন, কেউ প্রতি সেকেন্ডে ১০০০ কোটি (১০¹⁰) পাসওয়ার্ড অনুমান করতে পারে। এটি আমার ধরে নেওয়া সংখ্যা, কোনো আসল আক্রমণের মাপ নয়। গড়ে পাসওয়ার্ড মিলতে মোট সম্ভাবনার অর্ধেক পর্যন্ত যেতে হয়।

৮ অক্ষর, শুধু ছোট হাতের (৩৭ বিট): প্রায় ৮ সেকেন্ড। ৮ অক্ষর, সব চার ধরন (৫১ বিট): প্রায় ২৩ ঘণ্টা। ১২ অক্ষর, সব চার ধরন (৭৬ বিট): প্রায় ১.১ লক্ষ বছর। ১৬ অক্ষর, সব চার ধরন (১০১ বিট): প্রায় ৪.৫ লক্ষ কোটি বছর। ব্যবধানটা লক্ষ করুন। ৮ অক্ষর থেকে ১২ অক্ষরে গেলে সময় ঘণ্টা থেকে হাজার হাজার বছরে চলে যায়।
তবে এই সংখ্যাকে আক্ষরিক ধরবেন না। আসল গতি নির্ভর করে পাসওয়ার্ডটি সার্ভারে কীভাবে জমা আছে তার ওপর। ভালো ব্যবস্থায় প্রতিটি অনুমান ধীর হয়, খারাপ ব্যবস্থায় ফাঁস হলে খুব দ্রুত। তাই নিরাপদ থাকতে হলে অনুমানের ঝুঁকি যতটা পারা যায় বাড়িয়ে নেওয়াই ভালো, আর সেই বাড়তি দৈর্ঘ্য আপনার জন্য প্রায় বিনা খরচের।
এই হিসাব মাথা থেকে বানানো পাসওয়ার্ডে খাটে না
একটা জরুরি সতর্কতা। বিটের এই হিসাব শুধু তখনই সত্যি, যখন প্রতিটি অক্ষর সত্যিই এলোমেলোভাবে বাছা হয়েছে। “Rahim@1990” দেখতে ৯ অক্ষর, বড় হাতের, ছোট হাতের, সংখ্যা ও চিহ্ন সবই আছে, কিন্তু এর পেছনে কোনো র্যান্ডমনেস নেই। নাম, একটি চিহ্ন, জন্মসাল: এই ছাঁচ অনুমান করা সহজ। মানুষ মাথা থেকে যা বানায়, তাতে নিজের অজান্তেই ছাঁচ ঢুকে যায়। জেনারেটর ঠিক এই কারণেই কাজের। সে কোনো ছাঁচ জানে না, তাই তার ৯ অক্ষর আর আপনার ৯ অক্ষরের মধ্যে আসল শক্তির বিশাল ফারাক থাকতে পারে।
তাহলে কত অক্ষর রাখব
টুলের শুরুর মান ১৬, আর সেটি ভালো জায়গা। আমার সুপারিশ সরল:
- সাধারণ অ্যাকাউন্টে ১৬ অক্ষর, সব চার ধরন।
- ইমেইল, ব্যাংক, মোবাইল ব্যাংকিংয়ের মতো গুরুত্বপূর্ণ জায়গায় ২০ বা তার বেশি। বাড়তি কষ্ট নেই, কারণ পাসওয়ার্ড ম্যানেজার মনে রাখে।
- যেখানে হাতে টাইপ করতেই হবে (যেমন টিভি বা কনসোলের লগইন), সেখানে চিহ্ন বাদ দিয়ে ১৮ অক্ষর রাখুন, যাতে টাইপ করা সহজ হয় অথচ শক্তি কমে না।
- ৮ অক্ষর শুধু তখনই, যখন ফর্ম এর চেয়ে বেশি নেয়ই না। আর তখনও সব চার ধরন রাখুন।
একটি কথা মনে রাখবেন, টুলে দেখানো বিটের সংখ্যা আনুমানিক। প্রতিটি ধরন থেকে একটি করে অক্ষর রাখার নিয়মের কারণে আসল সংখ্যা সামান্য কমবেশি হতে পারে, আর বিট কখনোই নিশ্চয়তা দেয় না। এটা তুলনার একটা মাপ, বিমা নয়। একই পাসওয়ার্ড দুই জায়গায় ব্যবহার করলে ১০০ বিটও কোনো কাজে আসে না, কারণ এক জায়গা থেকে ফাঁস হলে অন্য জায়গাও খুলে যায়। সেই অভ্যাসগুলো নিয়ে আলাদা লেখা আছে পাসওয়ার্ড জেনারেটর কীভাবে ব্যবহার করবেন গাইডে।
নিজে মিলিয়ে নিন
টুলটি খুলে দৈর্ঘ্য ১২ রাখুন, চারটি ধরনই টিক দিন, “দেখতে এক রকম অক্ষর বাদ”ও টিক রাখুন। শক্তির লেখায় প্রায় ৭৬ বিট দেখাবে। এবার সব ধরন বাদ দিয়ে শুধু ছোট হাতের অক্ষর রাখলে ১২ অক্ষরে প্রায় ৫৬ বিট আর “মোটামুটি” দেখাবে। দৈর্ঘ্য ১৬ করলে ৭৪ বিট ও “ভালো”। এই তিনটি সংখ্যা এই লেখার ছকের সঙ্গে মেলে কি না দেখুন। না মিললে সম্ভবত কোনো ঘরের টিক ভিন্ন আছে।
