رمز عبور تصادفی: آنچه باید بدانید!
رمز عبوری که هیچکس در یک بازه زمانی معقول قادر به پیشبینی آن نباشد!
امروزه بزرگترین سد در مقابل نفوذ هکرها و افراد مخرب به سیستمها و حسابهای کاربری ما رمز عبورها میباشند. متاسفانه بسیاری از ما از اهمیت غیر قابل انکار رمز عبور در امنیت سایبری غافل میشویم.
بحث امنیت رمز عبور در واقع حول یک استراتژی پایه شکل گرفته است: ایجاد رمز عبوری که هیچکس در یک بازه زمانی معقول قادر به پیشبینی (یا حدس زدن) آن نباشد و سپس تغییر دادن آن در فواصل زمانی منظم برای حفظ دشواری پیشبینی آن.
تلاش برای غیرقابل پیشبینی بودن به صورت عمدی کار آسانی نیست. انسانها برای تصادفی بودن باید تلاش کنند و گاهی اوقات این فرایند باعث افزایش قابلیت پیشبینی رمز عبورها میشود یعنی در واقع نتیجهای معکوس در پی دارد. تصادفی بودن که مهمترین جنبه در بحث امنیت رمز عبور میباشد، ویژگی است که ما بیش از هر چیزی برای دستیابی به آن تلاش میکنیم.
یکی از دلایل این مشکل، ضعف ما در تعریف تصادفی بودن است. به عنوان مثال وقتی مدتی با یک ماشین شانس کار میکنیم و به هیچ نتیجهای نمیرسیم، سعی میکنیم شانس خودمان را با یک ماشین دیگر امتحان کنیم تا شاید احتمال پیروزی ما با آن ماشین بیشتر باشد. وقتی فردی مبلغ بزرگی را از چنین ماشینی برنده میشود، تصور میکند که موجودی آن خرج شده و حالا باید به سراغ یک ماشین دیگر حرکت کند.
بازیکنان آنقدر درباره برگهای برنده، گرم یا سرد بودن دست یا متوسط هزینه پرداختی صحبت میکنند که به نظر میرسد به تصادفی بودن اعتقادی ندارند؛ اما مشکلی که در این زمینه وجود دارد، این است که تصادف هیچ حافظه و اولویتی ندارد.
تصادفی بودن از هیچ آمار خاصی تبعیت نمیکند و کاملاً غیرقابل پیشبینی است. مطمئناً اگر شما به اندازه کافی یک ماشین شانس را امتحان کنید در نهایت به نتیجه میرسید اما ممکن است یک ماشین شانس سه بار پشت سر هم شما را به جایزه بزرگ برساند یا اینکه هیچوقت شما را به جایزه بزرگ نرساند.
“Kevin Mitnick” در کتابی تحت عنوان «هنر نفوذ» مطالبی درباره این موضوع نوشته است. وی در این کتاب توضیح میدهد که چگونه چهار نفر نقاط ضعفی را در مولد اعداد ماشینهای شانس پیدا کرده و از آن به نفع خودشان استفاده کردهاند.
اگر صدسال از وقوع آخرین طوفان صدساله گذشته باشد، فکر میکنید ممکن است به زودی یک طوفان در راه باشد؟ بعلاوه، به نظر شما بعد از وقوع این طوفان مردم همچنان باید نگران طوفان بعدی باشند یا خیر؟
همچنین، ما در تشخیص تصادفی بودن اعداد هم مشکل داریم. 50 رقم عدد پی را در نظر بگیرید:
3.141592653589793238462643383279502884197169399375
شاید این عدد در ابتدا تصادفی به نظر برسد اما اگر خوب به آن نگاه کنید، ممکن است الگوهایی را در آن ببینید. اگر کامپیوتری داشتید که دائماً اعداد تصادفی مختلف را تولید میکرد ممکن بود کامپیوتر شما در نهایت عددی یکسان با عدد پی تولید کند. هر چند شاید این کار چندین دهه زمان ببرد.
به صورت مشابه، شاید شنیده باشید که اگر به تعداد کافی میمون داشته باشید که با یک ماشین تایپ کار کنند، این میمونها در نهایت میتوانند کل کارهای شکسپیر را تولید کنند. هر چند این موضوع عجیب و غیرممکن به نظر میرسد، اما آیا این یعنی کارهای شکسپیر تصادفی بودهاند؟ آیا یک تاس تصادفی است؟ آیا برفکهای تلویزیون تصادفی هستند؟ آیا شکلگیری ابرها تصادفی است؟ اما از همه مهمتر آیا رمز عبور شما تصادفی است؟
تصادفی بودن رمز عبور چیست؟
بحث تصادفی بودن یک بحث عجیب است. ما نمیدانیم که تصادفی بودن چقدر واقعیت دارد. وقتی که ما هیچ الگوی واضحی را در یک دنباله مشاهده نمیکنیم، آن را تصادفی مینامیم. به عنوان مثال دنباله 1، 2، 3، 4، 5 تصادفی نیست زیرا ما در آن یک الگو میبینیم. ما به راحتی میتوانیم چگونگی پیش رفتن و ادامه این دنباله را حدس بزنیم.
دنباله 10، 100، 1000، 10000 هم یک الگوی قابل تشخیص دارد. از طرفی دنباله 93، 2، 75، 49، 36 هیچ الگوی مشخصی ندارد و بنابراین ما نمیتوانیم عدد بعدی در این دنباله را پیشبینی کنیم. اگر هیچ فرمول یا الگویی وجود نداشته باشد که بتوانیم بر اساس آن دنباله را باز تولید کنیم در این صورت آن را یک دنباله تصادفی میدانیم؛ به عبارت دیگر تصادفی بودن یعنی عدم وجود ترتیب.
اما عدم وجود نظم و ترتیب، تضمینی برای تصادفی بودن نیست. یک دنباله در صورتی تصادفی است که هیچ راهی برای بازتولید آن با توجه به هیچ اطلاعات یا شرایطی وجود نداشته باشد (به عنوان مثال، مقدار عدد پی، تصادفی به نظر میرسد اما برای تولید این ارقام از یک روش خاص استفاده شده است).
تعیین تصادفی بودن یک دنباله کار سختی است؛ بنابراین ما برای تعیین تصادفی بودن آن چند ویژگی مختلف را در نظر میگیریم:
- توزیع یکنواخت: احتمال یکسان برای توزیع روی کل یک مجموعه داده.
- غیرقابل پیشبینی بودن: هیچ کدام از بخشهای داده مورد نظر با هیچ کدام از دادههای قبلی در ارتباط نیست و هیچ اطلاعاتی درباره دادههای بعد از خودش فراهم نمیکند.
- منحصربفرد بودن: تولید تصادفیِ همان دنباله از دادهها باید به شدت غیرمحتمل باشد. هر چه دنبالهای طولانیتر باشد، منحصربهفردتر خواهد بود.
این سه ویژگی باعث میشود که حدس زدن دادههای تصادفی غیرممکن شده و بنابراین تصادفی بودن، یک ویژگی مهم برای رمز عبورهای قوی محسوب شود. متأسفانه به خاطر سپردن رمز عبورهای کاملاً تصادفی بسیار سخت است و حتی اگر بتوانیم آنها را به خاطر بسپاریم تولید آنها یک عمل بسیار پیچیده است.
توزیع یکنواخت
توزیع یکنواخت یعنی پیش از تولید یک دنباله تصادفی از دادهها، احتمال تولید تمام خروجیها یکسان باشد. قبل از اینکه یک تاس را پرتاب کنید، احتمال رو شدن تمام اعداد یکسان است. به دلیل این توزیع یکنواخت، میتوانیم فرض کنیم که بعد از یک مدتزمان طولانی، دادههای تصادفی تولیدشده کل مجموعه داده اولیه را پوشش میدهند.
یک آبپاش را تصور کنید (شکل 3.1 را مشاهده کنید). همچنان که این آبپاش قطرههای آب را به اطراف میپاشند پیشبینی کردن اینکه هر قطره آب روی کدام برگ چمن قرار میگیرد کار غیرممکنی است. قبل از خروج هر قطره آب از آبپاش احتمال اینکه هرکدام از برگهای چمن توسط آن خیس شوند وجود دارد. به همین ترتیب اگر آبپاش به مدت کافی کار کند، در نهایت آب تمام چمنهایی که در محدوده آبپاش قرار دارند را پوشش میدهد. بعلاوه، میتوان انتظار داشت که طی یک بازه زمانی مشخص تمام چمنها تقریباً مقدار آب یکسانی را دریافت کنند، زیرا توزیع آب یکنواخت و غیرجانبدارانه است.
زبانهای انسانی تصادفی نیستند؛ بنابراین رمز عبورهایی که از این زبانها استخراج میشوند هم تصادفی نمیباشند. اگر ما تعداد دفعات حضور هر کاراکتر را در هر رمز عبور محاسبه کنیم، متوجه خواهیم شد که با تصادفی بودن فاصله زیادی داریم. شکل زیر توزیع واقعی کاراکترهای رمز عبور در بیش از سه میلیون رمز عبور را نشان میدهد. این شکل به وضوح نشان میدهد که بیشتر مردم استفاده از حروف کوچک به همراه چند عدد را در رمز عبورشان ترجیح میدهند.
اگر رمز عبورها واقعاً تصادفی بودند توزیع آنها بیشتر شبیه شکل زیر بود که مربوط به رمز عبورهای تولید شده توسط یک مولد کاراکتر تصادفی کامپیوتری است.
لازم به ذکر است که توزیع یکنواخت همیشه به این معنا نیست که دادههای تصادفی به صورت یکنواخت توزیع شدهاند. صرفاً این احتمال وجود دارد که دادهها به صورت یکنواخت توزیع شده باشند. توزیع شکل زیر کاملاً یکنواخت نیست چون توزیع یکنواخت، یک میانگین آماری از تعداد زیادی نمونه است. اگر یک سکه را صد بار پرتاب کنید، دقیقاً 50 بار شیر و 50 بار خط نخواهد آمد. ممکن است 46 بار شیر و 54 بار خط یا 52 بار شیر و 48 بار خط ظاهر شود. هر چقدر بیشتر سکه را پرتاب کنید، میانگین شیر و خط به 50 درصد نزدیکتر میشود. توزیع یکنواخت یعنی دادههای تصادفی میتوانند هر شکل و فرمی داشته باشند؛ به صورت یکنواخت توزیع شوند، خوشهبندی شوند یا ترکیبی از این دو. اگر یک سکه را پرتاب کنید ممکن است پنج بار پشت سر هم شیر ظاهر شود. احتمال ایجاد هر خروجی با سایر خروجیها یکسان است.
غیرقابل پیشبینی بودن رمز عبور
چیزی که واقعاً باعث تصادفی بودن میشود، عدم وجود هرگونه اطلاعات قبلی برای کمک به تعیین دادههایی است که در مرحله بعد در یک دنباله تصادفی ظاهر میشوند. در زبان انگلیسی احتمال اینکه حرف دیگری به غیر U بعد از حرف Q ظاهر شود، بسیار کم است؛ بنابراین توالی حروف در عبارات انگلیسی کاملاً قابل پیشبینی بوده و واقعاً تصادفی نیستند. در تصادفی بودن کامل، هر قطعه از دادهها کاملاً از سایر قطعات داده مستقل است. هیچ حافظه و هیچ رابطهای بین هیچ دو بخشی از داده وجود ندارد.
زبان انگلیسی پر از تکرار است و این ویژگی در هنگام برقراری ارتباط مفید است اما باعث غیرقابل پیشبینی بودن آن هم میشود. برخی حروف بیشتر از سایر حروف مورد استفاده قرار میگیرند. به همین دلیل بسیاری از کارشناسان امنیت، استفاده از دنبالههای کاملاً تصادفی را به جای کلمات انگلیسی – که به شدت قابل پیشبینی هستند – توصیه میکنند.
میزان قابل پیشبینی نبودن یک دنباله با اندازهگیری آنتروپی آن ارزیابی میشود. آنتروپی معیاری برای اندازهگیری میزان بینظمی، یا عدم وجود اطلاعات است. تراکم اطلاعات، معیاری است که نشان میدهد در یک دنباله دادهای چقدر افزونگی وجود دارد.
برای درک بهتر آنتروپی، این عبارت از هملتِ ویلیام شکسپیر را در نظر بگیرید «بودن یا نبودن» (“To be, or not to be”)؛ این عبارت کوتاه از 20 کاراکتر تشکیل شده است اما واقعاً چقدر اطلاعات در خود دارد؟ شاید در ابتدا بگویید 20 قطعه اطلاعاتی در این عبارت وجود دارد اما اگر با دقت به آن نگاه کنید متوجه میشوید که در این عبارت تنها 6 حرف منحصربفرد وجود دارد. بعلاوه، اگر با دقت بیشتری به آن نگاه کنید تنها دو جفت کلمه در آن مشاهده میکنید “to be” و “or not”. شاید بتوان گفت که این عبارت تنها از دو قطعه اطلاعاتی تشکیل شده است. حتی میتوان گفت کل این عبارت آنقدر متداول است (جستجو کردن آن در گوگل منجر به تولید 2.3 میلیون نتیجه میشود) که میتوان آن را یک قطعه اطلاعاتی دانست.
تخمین زده میشود که زبان انگلیسی 50 درصد افزونگی دارد؛ به عبارت دیگر میتوانید نیمی از حروف یک جمله را حذف کنید ولی با این وجود باز هم آن جمله قابل درک خواهد بود. این یعنی برای این که آنتروپی رمز عبوری که بر اساس کلمات انگلیسی ساخته شده، به اندازه یک رمز عبور کاملاً تصادفی باشد، باید طول آن دو برابر طول رمز عبور تصادفی باشد.
منحصر بفرد بودن رمز عبور
اگر یک دنباله از دادههای تصادفی را در نظر بگیرید (مثل 10 عدد تصادفی)، احتمال این که همین دنبالهی 10 کاراکتری دوباره تکرار شود کم است؛ اما با افزایش طول این دنباله، احتمال تکرار، کمتر هم میشود. به همین دلیل حدس زدن تصادفی شماره یک کارت اعتباری معتبر کار سختی است. تعداد حالات ممکن برای شماره یک کارت اعتباری آنقدر زیاد است که برای هر شماره معتبری میلیونها رقم بلااستفاده وجود دارد. از آنجایی که اعداد تصادفی به صورت بسیار یکنواخت توزیع شده و هیچ رابطهای بین هیچ دو کاراکتری وجود ندارد، این احتمال وجود دارد که دنبالههای واقعاً تصادفی به ندرت تکرار شوند.
عدم وجود خاصیت تصادفی بودن، برای خیلی از رمز عبورها یک نقطهضعف بسیار مهم محسوب میشود. حتی اگر تمام زبانهای متداول را در نظر بگیرید و حتی اگر به انتهای هر کلمه چند عدد اضافه کنید باز هم تعداد کلمات متفاوت به اندازه کافی زیاد نیستند. برای چیدن 8 حرف کوچک انگلیسی 26 به توان 8 یا به عبارتی 208827064576 حالت مختلف وجود دارد؛ اما در کل زبان انگلیسی حدود 17 هزار کلمه با حروف کوچک وجود دارد که از بین آنها حدود 500 عدد کاربرد متداول دارند. این یعنی برای هر کلمه انگلیسی 8 حرفی بیشتر از 12 میلیون ترکیب مختلف با حروف کوچک وجود دارد که جزء کلمات انگلیسی نیستند.
از آنجایی که اکثر رمز عبورها توزیع یکنواخت نداشته و غیر قابل پیشبینی یا منحصر بفرد نیستد بنابراین در برابر حمله آسیبپذیر بوده و امنیت کمی دارند. بیشتر رمز عبورها به جای داشتن توزیع یکنواخت، حول خوشههایی متشکل از چند گروه رمز عبور مشابه شکل گرفتهاند.
برای نشان دادن عدم وجود ویژگی تصادفی بودن در رمز عبورها، کل مساحت امریکا را با کل ترکیبات ممکن هشت کاراکتری که میتوانید روی یک صفحهکلید معمولی تایپ کنید، مقایسه کنید. این سطح نشاندهنده تعداد کل رمز عبورهای ممکن با در نظر گرفتن رمز عبورهای 8 کاراکتری است. حالا فرض کنید میلیونها نفر برای رمز عبورشان تنها یک محدوده 1 سانتیمتری از امریکا را استفاده میکنند. بر اساس دادههای واقعی که درباره رمز عبور کاربران وجود دارد، علیرغم این واقعیت که کاربران محدودهای مثل مساحت کل امریکا را در اختیار دارند اما 98 درصد از رمز عبورها در یک مساحت حدوداً 36 اینچی قرار دارند.
اگر قرار باشد رمز عبوری را کرک کنید، این خبر برای شما یک خبر فوقالعاده محسوب میشود. فضای جستجوی شما فوقالعاده بزرگ نیست زیرا بیشتر رمز عبورها تقریباً در یک محدوده قرار دارند.
تصادفی بودن انسانها
از آنجایی که درک ما انسانها از تصادفی بودن بسیار ضعیف است، ایجاد خصوصیت تصادفی بودن توسط ما بسیار سخت است. خودتان این کار را امتحان کنید. سعی کنید با صفحهکلید کامپیوتر یک رشته طولانی از کاراکترهای تصادفی را تایپ کنید. همین که تایپ کردن را شروع کنید متوجه میشوید که تولید دادههایی که واقعاً تصادفی باشند بسیار سخت است. این احتمال وجود دارد که دنبالههای asdf و uiop در کلمات تایپ شده توسط شما وجود داشته باشند.
اما برای درک وخامت اوضاع باید توجه داشت که هر چه بیشتر سعی کنید تصادفیتر عمل کنید، قابل پیشبینیتر میشوید (به عنوان مثال ممکن است عمداً از به کار بردن الگوهای مشخص و افزونگی پیشگیری کنید و در نتیجه یک الگوی قابل پیشبینی دیگر ایجاد کنید). بازی «گل یا پوچ» را در نظر بگیرید. یک شی را در یکی از دستان خودتان قرار داده، هر دو دست را پشت سرتان نگه داشته و از یک کودک بخواهید حدس بزند که این شی در کدام دست شما قرار دارد. به این ترتیب حدس وی تا حدی تصادفی خواهد بود.
این بازی را دوباره تکرار کنید، این بار حدس وی به میزان زیادی به نتیجه دور آخر بازی بستگی دارد (یعنی اگر در آخرین دور به درستی حدس زده بود که گل در دست چپ شما قرار دارد، این بار هم سعی میکند دست چپ را امتحان کند). از طرفی ممکن است این کودک باهوشتر باشد و انتظار داشته باشد که این بار شما دست را تغییر بدهید و بنابراین این بار دست راست شما را انتخاب کند. اگر چندین بار این بازی را انجام دهید، متوجه شکلگیری الگوهایی در انتخاب خودتان و پاسخهای آن کودک خواهید شد.
اگر تعدادی سکه به یک شخص بدهید و از وی بخواهید سکهها را به صورت تصادفی روی یک میز پخش کند، در نگاه اول متوجه میشوید که بیشتر افراد میتوانند سکهها را به صورتی مرتب کنند که تصادفی به نظر برسد؛ اما اگر با دقت نگاه کنید متوجه میشوید الگوهایی وجود دارند که این تصادفی بودن را تعریف میکنند (یعنی هر چند به نظر میرسد که سکهها به صورت تصادفی مرتب شدهاند، اما ممکن است فضاهای بین سکهها یکسان باشد. ما هم در تلاش برای ایجاد خاصیت تصادفی بودن، گرفتار الگوهای خاصی شدیم.
عدم برخورداری از خاصیت تصادفی بودن در رمز عبورهای ما کاملاً مشهود است. ما تمایل به استفاده از کلماتی داریم که به زندگی شخصی یا محیط اطرافمان مربوط هستند. ما به جای انتخاب از بین کل محدوده کلمات موجود، اعداد و کلماتی را انتخاب میکنیم که برایمان معنا و مفهوم خاصی دارند. ممکن است سعی کنیم دیکشنری را به صورت تصادفی باز کرده و یک کلمه را انتخاب کنیم اما حتی در این که کدام بخش از کتاب را باز کرده یا کدام بخش از صفحه را انتخاب کنیم، به نوعی جانبدارانه عمل میکنیم.
تصادفی بودن ماشین
مشخص شده که کامپیوترها هم در زمینه ایجاد خاصیت تصادفی بودن، مشکلاتی دارند. نمیتوانید از مدارها و ثباتها درخواست کنید که یکسری کاراکتر واقعاً تصادفی را انتخاب کنند. یک کامپیوتر حتی برای اینکه بداند چه کاراکترهای تصادفی را تولید کند، نیاز به دستورالعملهایی دقیق دارد. در نتیجه کامپیوترها از چیزی به نام مولّد اعداد شبه تصادفی (Pseudo Random Number Generator (PRNG استفاده میکنند.
اعداد شبه تصادفی واقعاً تصادفی نیستند بلکه در واقع الگوریتمی وجود دارد که اعدادی تولید میکند که تصادفی به نظر میرسند اما در واقع این اعداد یک دنباله قابل پیشبینی هستند. کلید تصادفی بودن مقداری به نام seed است که از آن برای مقداردهی اولیه دنباله تصادفی استفاده میشود. اگر شما این مقدار را بدانید، میتوانید آن دنباله تصادفی را بازتولید کنید.
برای مقابله با این مسئله، کامپیوترها جهت ایجاد Seed برای مولد اعداد تصادفی و جمعآوری دادههای تصادفی، از روشهایی پیچیده استفاده میکنند. ممکن است این کار بر اساس زمان، فاکتورهای محیطی یا فعالیت کاربر با صفحهکلید یا ماوس انجام شود. حتی در برخی موارد سعی شده این تصادفی بودن بیشتر لحاظ شود. جدول زیر برخی از منابع دادههای تصادفی و روشهای مورد استفاده برای تولید این دادهها را که در دسترس عموم قرار دارند نشان میدهد.
منابعی از دادههای تصادفی قابلدسترس برای عموم
آدرس | منبع آنتروپی |
www.random.org | سروصدا و نویز جو که توسط یک رادیو جمعآوری شده است |
www.fourmilab.ch/hotbits | فروپاشی رادیواکتیوی کریپتون 85 |
www.lavarnd.org | نویزهای تصادفی یک دوربین CCD |
جبران عدم وجود خاصیت تصادفی بودن
حالا که توضیح دادیم انسانها تا چه حد فاقد خصوصیت تصادفی بودن هستند، باید این نکته را هم مطرح کنیم که در رابطه با بحث رمز عبور، این خصوصیت انسانها اهمیت چندانی ندارد. به این دلیل که ما میتوانیم با استفاده از چندین ترفندی که برای رمز عبور خوب کار میکنند، این مشکل را جبران کنیم.
پیش از این اعلام کردیم که دنبالههای تصادفی توزیع یکنواختی از کاراکترها دارند؛ به عبارت دیگر، این تضمین در آنها وجود دارد که انتخاب غیریکنواختی از کاراکترها در آنها وجود نداشته باشد. همانطور که مشاهده کردید ما در انتخاب کاراکتر، غیریکنواخت عمل میکنیم اما برای مقابله با کرکرها (شکنندگان رمز عبور) نیازی به کامل و بینقص بودن نداریم.
در واقع ما برای رسیدن به نتیجه فقط به چند کاراکتر پراکنده نیاز داریم. احتمال وجود چند عدد یا نماد در هر قسمتی از یک رمز عبور باعث میشود کار کرکرها سختتر شود؛ بنابراین نیازی نیست که توزیع کاراکترها در آنها یکنواخت باشد بلکه فقط باید در حدی باشد که کرکرها را ملزم کند هر بار آنها را پیشبینی و بررسی کنند.
برای تشریح این موضوع، بازی سنگ، کاغذ، قیچی را در نظر بگیرید. این بازی خیلی ساده است. دو بازیکن همزمان یکی از سه گزینه موجود یعنی سنگ، کاغذ یا قیچی را انتخاب میکنند. برنده با توجه به سه قانون تعیین میشود:
- سنگ، قیچی را میشکند.
- قیچی، کاغذ را میبرد.
- کاغذ، سنگ را میپوشاند.
انتخاب هر یک از این سه گزینه شانس یکسانی برای پیروزی، شکست یا مساوی شدن نتیجه بازی دارد. سنگ، کاغذ، قیچی یک نمونه مطالعاتی شگفتانگیز از تصادفی بودن است، زیرا دورهای این بازی در اصل یکسری ترکیب تصادفی هستند. این بازی مدتها به عنوان یک روش انتخاب یا حذف عادلانه در نظر گرفته میشد.
در نگاه اول، نتیجه هر دور از این بازی کاملاً تصادفی به نظر میرسد و نباید به مرور زمان تغییری در این ویژگی صورت بگیرد درست مثل پرتاپ تاس یا سکه. برای هر بازیکن سه انتخاب وجود دارد و هر یک این فرصت را دارد که به صورت غیرقابل پیشبینی هر کدام از این سه گزینه را انتخاب کند.
اما، در کمال تعجب واقعیت به این صورت نیست. استراتژیهایی برای این بازی وجود دارد و افرادی هم هستند که با استفاده از این استراتژیها دائماً در این بازی پیروز میشوند. حتی مسابقات و قهرمانان جهانی هم برای این بازی وجود دارد.
اگر به اندازه کافی با ربات Roshambot دانشگاه استنفورد بازی کنید این احتمال وجود دارد که در برابر این نرمافزار شکست بخورید. این کامپیوتر به وضوح نسبت به انسانها استراتژی بهتری دارد.
استراتژیهای پیشرفته مختلفی برای بازی سنگ، کاغذ، قیچی وجود دارد که به آنها گمبیت گفته میشود و نامهایی مثل «ساندویچ قیچی» و «عروسک کاغذی» دارند. یک گمبیت، متشکل از یک سری انتخاب سهتایی است که با اهداف استراتژیک طراحی شدهاند. در این بازی 27 گمبیت وجود دارد که هشت مورد از آنها بیشتر از بقیه استفاده میشود. این گمبیتها که به آنها «هشت فوقالعاده» گفته میشود عبارتند از:
- Avalanche (سنگ، سنگ، سنگ)
- Bureaucrat (کاغذ، کاغذ، کاغذ)
- Crescendo (کاغذ، قیچی، سنگ)
- Dénouement (سنگ، قیچی، کاغذ)
- Fistfull o’ Dollars (سنگ، کاغذ، کاغذ)
- Paper Dolls (کاغذ، قیچی، قیچی)
- Scissor Sandwich (کاغذ، قیچی، کاغذ)
- Toolbox (قیچی، قیچی، قیچی)
بازیکنان مجرب این حرکات را در استراتژیهایی با ترکیبات بزرگتر استفاده میکنند. جالب توجه است که در گمبیتهای ذکر شده تنها دو مورد، از هر سه انتخاب ممکن استفاده میکنند. در واقع، در این «هشت عالی» توزیع یکنواختی از سه انتخاب ممکن وجود ندارد. سنگ 6 بار (25 درصد)، کاغذ 10 بار (42 درصد) و قیچی 8 بار (33 درصد) تکرار شده است. با این وجود این تکنیکها به خوبی کار میکنند.
اگر با کسی بازی کنید که به ندرت سنگ را انتخاب میکند، باز هم باید انتخاب سنگ را در نظر داشته باشید و طوری بازی کنید که در صورت تغییر ناگهانی استراتژی توسط رقیب، باز هم پیروز شوید. این موضوع برای رمز عبور هم صدق میکند. نیازی نیست که رمز عبور شما برای کارآمد بودن متشکل از یک ترکیب عالی و بینقص از حروف، ارقام و علائم بدون هیچ تکراری باشد. فقط باید تنوع و گوناگونی به صورتی باشد که مهاجم همواره ملزم به در نظر گرفتن همه احتمالات باشد.
کاهش قابلیت پیشبینی رمز عبور
احتمالاً ما نمیتوانیم خودمان غیرقابل پیشبینی بودن واقعی را ایجاد کنیم اما این مسئله مشکلآفرین نیست. غیرقابل پیشبینی بودن حقیقی یعنی هر یک از قطعات اطلاعاتی در رمز عبور شما از سایرین مستقل باشد و نتوان از بخشی از رمز عبور جهت پیشبینی بقیه آن استفاده کرد.
این یعنی رمز عبوری که واقعاً غیرقابل پیشبینی باشد، یک رشته از کاراکترهای غیرمرتبط است که به خاطر سپردن آنها همیشه سخت است. از طرف دیگر با تلاش برای بهبود امکان به خاطر سپردن رمز عبورتان، بدون شک قابل پیشبینی بودن آن را افزایش میدهید.
خوشبختانه همانطور که در فصل دوم یعنی «رویارویی با رقیب» توضیح دادیم، کرک کردن رمز عبور یک نوع فرایند «همه یا هیچکدام» است. اگر شخصی سعی کند رمز عبور شما را حدس بزند یا صددرصد موفق میشود یا کاملاً با شکست روبرو میشود و هیچ حالت میانهای وجود ندارد. کامپیوتر هرگز به چنین فردی نخواهد گفت که مثلاً 20 درصد رمز عبور را درست حدس زده است.
با توجه به این موضوع برای کارآمد بودن یک رمز عبور، نیازی به غیرقابل پیشبینی بودن کامل آن نیست. تنها شرط لازم این است که رمز عبور شما به اندازه کافی غیرقابل پیشبینی باشد تا از آسیبپذیر شدن آن در برابر حمله پیشگیری شود. میتوانید از بقیه کاراکترها برای به خاطر سپردن رمز عبورتان استفاده کنید.
در ادامه چند نمونه از رمز عبورهای غیرقابل پیشبینی را مشاهده میکنید:
- 3Kja&Ey#
- u?7h%dPW
- @bx8R2k$
اما حالا چند رمز عبور بهتر را مشاهده میکنید که فقط به اندازه لازم برای قوی شدن رمز عبور، غیرقابل پیشبینی بوده و بعلاوه قابل حفظ کردن و به خاطر سپردن هم هستند:
- WhitenEighteen
- Fast+rocketing+
- creepy—FIVES
- Imp ort.ant
- cake and tape
اگر به این رمز عبورها نگاهی داشته باشید، متوجه میشوید که شاید خیلی از کاراکترهای آنها بر اساس کاراکترهای قبل و بعدشان قابل پیشبینی باشند؛ اما خود رمز عبور در مجموع قابل پیشبینی نبوده و در نتیجه به اندازه کافی قوی است.
منحصر بفردتر
چیزی به اسم «منحصر بفردتر» وجود ندارد – هر چیزی یا کاملاً منحصر بفرد است یا به هیچوجه منحصر بفرد نیست؛ اما وقتی بحث رمز عبور در میان باشد شما باید به منحصربفردتر بودن فکر کنید؛ یعنی رمز عبور شما باید آنقدر نسبت به سایر رمز عبورها منحصربفرد باشد که حتی یک ابزار کرک فوقالعاده سریع که تمام ترکیبات مختلف را امتحان میکند نتواند به رمز عبور شما برسد. اینجاست که اکثر مردم دچار اشتباه میشوند.
لیست رمز عبورهای واقعی زیر بر اساس کلمه dragon را در نظر بگیرید:
Dragon(با کلیک کردن لیست را مشاهده کنید)
احتمالاً متوجه شدهاید که فقط برخی از این رمز عبورها نسبت به بقیه کمتر قابل پیشبینی هستند. رمز عبورهایی مثل gothik_dragon و dragonphoenix3 منحصربفردتر هستند از این جهت که برای رسیدن به این رمز عبورها باید ترکیبات بسیار متنوعی از این کلمات تست شود. این رمز عبورها کلید منحصر بفرد بودن را مشخص میکنند یعنی طولانیتر کردن هر چه بیشتر رمز عبور.
احتمال کرک شدن یک رمز عبور طولانی و منحصربفرد بسیار کمتر از یک رمز عبور کوتاه است. با یک حساب ساده میتوان گفت هر چه تعداد کاراکترهایی که در رمز عبورتان استفاده میکنید بیشتر شود، احتمال منحصربفرد شدن آن بیشتر میشود. بعلاوه، از آنجایی که میدانیم زبان انگلیسی حدود 50 درصد افزونگی دارد، باید سعی کنید رمز عبورتان را دو برابر حالت معمولی منحصربفرد کنید.
مسلماً همانطور که اشاره شد، ویژگی تصادفی بودن در انسانها ضعیف است اما با کمی کمک و با استفاده از یکسری استراتژیهای ساده میتوانید این ویژگی را جبران کرده و رمز عبورهایی بسیار قوی داشته باشید.
پیشنهاد ما به شما مطالعه مقاله: پسوردهای عالی و بی نقص بسازید.