3 مهر 1402
تهران، خیابان آزادی، تقاطع قریب
امنیت سایبری

نحوه ایجاد پسوورد قوی با منطق ریاضی

محافظت از رمز عبور در برابر Cracker ها

رمز عبور یا پسوورد کلمه‌ای پنهان است که برای یک کاربر یا تعداد محدودی از کاربران شناخته شده است. وب سایت‌های بی‌شماری هستند که برای ایمن‌سازی حساب کاربران به رمز عبور نیاز دارند. رمز عبور ممکن است به حداقلی از کاراکترهای حروفی، عددی و نمادها نیاز داشته باشد.

اما آیا این کار تضمین کننده یک رمز عبور امن‌تر است؟

با صرف نظر از نیتی که کاربران وب دارند، سیاست‌های رمزگذاری اغلب آن‌ها را مجبور به انتخاب پسووردهای وحشتناک می‌کند. شواهد نشان می‌دهد که وقتی چند رویه و قانون برای انتخاب رمز عبور، پشت سر هم قرار می‌گیرند، کاربران عصبانی می‌شوند و رمزهای عبور افتضاح انتخاب می‌کنند. تا حدودی دلیل این اتفاق این است که اکثر مردم هیچ ایده‌ای درباره این‌که پسووردها تا چه اندازه می‌توانند تأثیرگذار باشند، ندارند.

علی‌رغم هشدارهای مکرر جامعه امنیت سایبری، بسیاری از مردم فکر می‌کنند که تغییر حروف با اعداد – مانند ebra3 – باعث می‌شود رمز عبور در هنگام حمله مقاوم‌تر باشد. اما در حقیقت هیچ فرقی نمی‌کند. هنگامی که این اتفاق می‌افتد، کاربران با دو مشکل مواجه می‌شوند، رمز عبور ناامن و توهم امنیتی، زیرا رمز عبور ظاهرا دشوار به نظر می‌رسد، اما رمزگشایی از آن برای کامپیوتر آسان است.

شما می‌توانید با درک بهتر این موضوع، که چگونه پسووردها به خطر می‌افتند و آموختن محاسبات مربوط به آن، تنظیم رمزهای عبور خوب را یاد بگیرید و آن را به دیگران آموزش دهید.

همه در یک مکان

بیایید فرض کنیم یک جیب‌بر کارت اعتباری شما را دزدیده و سپس سعی می‌کند از آن برای دسترسی به حساب شما استفاده کند. (بیایید فرض کنیم که بانک شما عابربانک دزدیده شده را پس از پنج بار (یا بیشتر) تلاش ناموفق مسدود نمی‌کند). کارت شما یک رمز 4 رقمی برای برداشت پول دارد. حالا چه میزان شانس دارید که پول شما به سرقت نرود؟

احتمال این‌که او رمز عبور شما را تصادفی حدس بزند چقدر است؟

برای رقم اول ده گزینه ممکن وجود دارد. زیرا رقم اول رمز شما می‌تواند هر عددی از 0 تا 9 باشد. برای رقم دوم نیز ده گزینه وجود دارد. زیرا محدودیتی برای رقم دوم وجود ندارد که امکانات آن را محدود کند. (یعنی که می‌توانید از یک رمز با اعداد تکراری استفاده کنید).برای رقم سوم و چهارم نیز همین‌طور است.

10.000 رمز عبور ممکن وجود دارد که یکی از آن‌ها می‌تواند مال شما باشد. 10 * 10 * 10 *10 = 10.000 . یک نمونه تصادفی از 10.000 کلمه عبور. در نتیجه احتمالی برابر با 1 در 10.000 وجود دارد که مهاجم به طور دقیق رمز عبور شما را پیش‌بینی کند.

از آن‌جایی که انسان‌ها نمی‌توانند اعداد تصادفی یا هر چیز دیگری تولید کنند، این در واقعیت کاملاً صادق نیست. چیزهایی هستند که در مغز ما تأثیر می‌گذارند. در حالی که به نظر می‌رسد اعداد را تصادفی به دست آورده‌ایم، تمایل داریم از اعداد متوالی استفاده کنیم و در گروه‌های دو یا چهارعددی تکراری اعداد را حدس بزنیم.

الگوهای رایج پسوورد

در عمل، زیرمجموعه‌هایی از آن 10.000 احتمال وجود دارند که به طور قابل توجهی در دنیای واقعی بیشتر اتفاق می‌افتند. به عنوان مثال، 1234 یا 1111 سریع‌تر به ذهن ما می‌رسد، و بسیار منظم‌تر از 7148 نشان داده می‌شود.

اگرچه بعید است که مجرم زمان کافی برای وارد کردن 10.000 ترکیب را در یک دستگاه خودپرداز داشته باشد، یک کامپیوتر استاندارد می‌تواند در ثانیه ده‌ها میلیارد تلاش انجام دهد. یک مهاجم به راحتی می‌تواند یک رمز 4 رقمی واقعی را رمزگشایی کند.

در نتیجه، یک رمز عبور 4 رقمی به سرعت کرک می‌شود. افزایش فضای نمونه پسوورد می‌تواند تا حد زیادی کرک شدن آن را دشوار کند. حدس زدن یک رمز عبور صحیح از بین یک تریلیون ترکیب، دشوارتر از هزارتا است.

فضای پسوورد چیست؟

Password Space یا فضای پسوورد، تعداد کل ترکیب‌های ممکن رمز عبور برای یک الفبای خاص، مجموعه‌ای از کاراکترها و حداکثر طول رمز عبور است. امنیت و آسیب‌پذیری رمزهای عبور را با محاسبه تعداد حدس‌های تصادفی که می‌توان برای یافتن رمز عبور در طول حمله brute force انجام داد، اندازه‌گیری می‌کنند.

اندازه کاراکترهای مجاز (الفبا، اعداد، نمادها و غیره) و طول رمز عبور تعیین می‌کنند که فضای بالقوه رمز عبور چقدر بزرگ است. در نتیجه، هرچه پسووردهای طولانی‌تر و پیچیده‌تری استفاده شوند، برای کرکرها چالش‌برانگیزتر خواهد بود که یک رمز عبور غیر قابل کرک شدن را با brute force تشخیص بدهند. زیرا فضای پسوورد گسترده‌تر خواهد شد.

نحوه محاسبه فضای نمونه پسوورد

در مثال کارت اعتباری، فضای پسوورد با ضرب تعداد کاراکترهای مجاز برای ارقام مجاز محاسبه شد. ده کاراکتر واجد شرایط برای هر کدام از ارقام رمز عبور وجود داشتند. 10*10*10*10 یا 10 به توان 4.

برای محاسبه فضای پسوورد نمونه، می‌توانیم از فرمول S = CN استفاده کنیم.

در این فرمول:

S = تعداد کل رمزهای عبور ممکن در فضای نمونه .

C = تعداد کاراکترهای موجود در مجموعه کاراکترهای موجود

N = تعداد کاراکترهای رمز عبور ما.

تعداد کاراکترهای بالقوه عددی و حروفی برای پسوورد
  • اگر از رمز عبوری استفاده می‌کنید که فقط حروف بزرگ دارد، پس C = 26 . و اگر از رمز عبوری استفاده می‌کنید که دارای حروف بزرگ و حداقل یک حرف کوچک است، پس C = 52 . اگر از رمز عبوری استفاده می‌کنید که حروف بزرگ دارد و حداقل یک حرف کوچک و عدد در خود دارد، در نتیجه C = 62 خواهد بود. اگر از رمز عبوری استفاده می‌کنید که همه کاراکترها در آن پخش شده‌اند، پس C = 95 است. اکنون، بیایید رمزهای عبور مختلف را با هم مقایسه کنیم و ببینیم فضای نمونه آن‌ها با یکدیگر چه تفاوتی خواهد داشت: مثلاً: YGMEOH C = 26 (فقط با حروف بزرگ) و N=6  S = 308,915,776 در نتیجه، حدود 309 میلیون ترکیب ممکن برای رمز عبور به دست می‌آید.

ریاضیات رمز عبور

بیایید دقیق‌تر توضیح دهیم. اگر S= CN و S= 266 باشد، با استفاده از همه کاراکترها و طول 6 رقمی رمز عبور، ما 308,915,776 ترکیب ممکن خواهیم داشت.

مثال: @Q:t-2

C = 95

N=6

S = 735,091,890,625 یا حدود 735 میلیارد ترکیب پسوورد ممکن.

S= CN و S= 956 ، منجر به 735,091,890,625 ترکیب ممکن خواهد شد.

فقط با استفاده از حروف کوچک و افزایش طول با کاراکتر، چنین مثالی داریم:

مثال: tfucbxqhjyepvgmw   C = 26

N = 16 و S = 43,608,742,899,428,874,059,776 ترکیب پسوورد، تقریباً 59 میلیاردبار بیشتر از @Q:t-2.

به عنوان آخرین مثال:

S= CN و S= 2616 ، منجر به 43,608,742,899,428,874,059,776 ترکیب رمز عبور می‌شود. از عدد و ارقام فوق مشخص است که افزایش فضای نمونه، کرک کردن رمز عبور را سخت می‌کند، نه صرفاً درج نمادها یا اعداد. گسترش فضای نمونه با افزایش کاراکترها امکان‌پذیر است.

نحوه اندازه‌گیری قدرت رمز عبور: آنتروپی

آنتروپی در این رابطه، معیاری برای اندازه‌گیری فضای نمونه یک رمز عبور خاص است. در حقیقت معیاری از قدرت رمز عبور است. اندازه‌گیری این‌که کرک کردن یک رمز عبور چقدر سخت است، بدون دانستن چگونگی ایجاد آن پسوورد، آسان نیست. با این وجود، داشتن یک عدد – در بیت‌های آنتروپی بیان شده است- که نشان می‌دهد کرک کردن پسوورد آسان است یا سخت، مفید است. هر چه آنتروپی بالاتر باشد، شکستن رمز عبور سخت‌تر می‌شود. هر چه آنتروپی کمتر باشد، شکستن آن آسان‌تر است.

به یاد بیاورید که اعداد حسابی ده احتمال دارند. 0 تا 9. اما یک عدد باینتری – که به عنوان بیت نیز شناخته می‌شود – فقط دو احتمال دارد: 0 و 1. یعنی S=CN برای اعداد اعشاری 10N است، اما برای یک بیت، 2E است. که E در آن نشان‌دهنده تعداد بیت‌ها است. بنابراین، اگر یک بیت فضای نمونه‌ای از دو احتمال را نشان دهد، آنتروپی 50 بیتی فضایی با 250 = 2*2*2*… احتمال را تعریف می‌کند. بنابراین، رمز عبور 50 بیتی آنتروپی از مجموعه‌ای متشکل از 250 رمز عبور منحصر به فرد دریافت می‌شود. به همین ترتیب، یک رمز عبور با 51 بیت از یک مجموعه 251 بیتی به دست می‌آید، که شکستن آن را از یک رمز عبور 50 بیتی سخت‌تر می‌کند.

فرمول محاسبه آنتروپی رمز عبور

از فرمول زیر می‌توان برای محاسبه آنتروپی رمز عبور استفاده کرد:

E= log2 (CN) یا E = N x log2 (C)

به عنوان مثال، اجازه دهید آنتروپی BerbeCUE201 را در این‌جا محاسبه کنیم. C= 26 +26 + 10 =62 و N = 11 و E = N x log2 (C) . E = 11 x log2 (62) = 11 x 5.9541 . در نتیجه E = 65.5 بیت از S= 2E . S = 265.5 و در نهایت S = 52,175,271,301,331,128,849.398 ترکیب.  برای Berbecue2(!0>}}} آنتروپی برابر E = N x log2 (C) خواهد بود که در آن E = 16 x log2 (95) = 16 x 6.5698 که منجر به این می‌شود که E = 105.1 بیت از S= 2E باشد. در نهایت S = 2105.1 و S = 43,476,296,738,970,232,553,127,150,068,066.389 ترکیب خواهد بود. مثال‌های بالا تأیید می‌کنند که هر چه آنتروپی بالاتر باشد، کرک کردن رمز عبور سخت‌تر می‌شود.

بنابراین آنتروپی نشان می‌دهد که چند تلاش آزمایشی برای کرک کردن یک رمز عبور لازم است. از نظر آماری، حریف رمز عبور را زودتر از آخرین تلاش به دست می‌آورد. آن‌ها قبل از به دست آوردن ترکیب مناسب ندارند. بنابراین هنگام محاسبه قدرت رمز عبور، تعداد حدس‌های مورد انتظار در نظر گرفته می‌شود، نه تعداد تمام حدس‌ها. این تعداد اغلب حدود 50 درصد از تعداد کل تلاش‌های لازم برای حدس زدن صحیح رمز عبور است. برای رمز عبور 105.1 بیتی،S= 2E – 1 S = 2105.1 – 1 S = 21,738,148,369,485,116,276,563,575,034,033.194 ترکیب پیش‌بینی می‌شود.

چرا  آنتروپی بالا کافی نیست؟

انتخاب رمز عبور ایمن شامل عوامل زیادی است که آنتروپی رمز عبور یکی از آن‌ها است. اگر دو رمز عبور آنتروپی یکسانی داشته باشند، یکی از آن‌ها نسبتاً قوی و دیگری بسیار ضعیف است. دلیل این امر دیکشنری‌های رمز عبور است که کاتالوگی از رمزهای عبور فاش‌شده در اینترنت را ارائه می‌کنند.

استفاده از چنین کاتالوگ‌هایی، منجر به حملاتی موسوم به Dictionary Attack می‌شود. جایی که هر دشمنی که سعی در کرک کردن رمز عبور شما داشته باشد، قبل از اقدام به حمله، بی‌رحمانه دیکشنری‌های رمز عبور را امتحان می‌کند. بنابراین، اگر از رمز عبوری استفاده می‌کنید که در این دیکشنری‌ها وجود دارد، تعداد بیت‌های آنتروپی اهمیتی نخواهد داشت. زیرا رمز شما سریعاً کرک می‌شود.

الگوریتم هش رمز عبور (Hashing Algorithm)

اگر ادمین‌های وب  پسووردهای خود را به صورت متن ساده بر روی سرور خود ذخیره کنند، و مهاجمان بتوانند به وب سرور دسترسی پیدا کنند، حتی اگر این پسووردها قوی باشند، به راحتی به دست مهاجمان می‌افتند. به همین دلیل است که به شدت توصیه می‌شود رمزهای عبور قبل از ذخیره‌سازی، salt و hash شوند. به جای ذخیره خود رمز عبور، امضایی از آن توسط یک مکانیسم hashing تولید می‌شود، و hash ذخیره می‌شود.

Salting پسووردها شامل اضافه کردن یک رشته از 32 کاراکتر تصادفی یا بیشتر به یک رمز عبور، قبل از hash کردن آن‌ها است.

الگوریتم‌های hashing فرآیندهایی یک طرفه هستند که بازسازی رمزعبور از طریق امضای hash را از نظر محاسباتی غیرممکن می‌کنند. این الگوریتم‌ها رمزهای عبور را به مجموعه‌ای مبهم از اعداد و حروف غیرقابل برگشت تبدیل می‌کند. الگوریتم‌های متعددی را می‌توان برای hashing استفاده کرد: از جمله bcrypt، MD5، SHA، NTLM و غیره.

چگونه پسووردها کرک می‌شوند

1- هش کردن تمام پسووردهای ممکن در فضای آزمایشی

از آن‌جایی که بازگرداندن رمزهای عبور hash شده به متن ساده غیرممکن است، کاری که می‌توانید برای کرک کردن یک رمز عبور این‌چنینی انجام دهید، این است که تمام رمزهای عبور ممکن را در فضای آزمایشی hash کنید و hashی را پیدا کنید که با hash شده‌ی هدف شما مطابقت دارد. اگر پیدا شد، پسوورد را با موفقیت کرک کرده‌اید. Hash کردن رمزهای عبور نیاز به hash rate –قدرت محاسباتی- دارد و محاسبه برخی از الگوریتم‌های hash در مقایسه با سایر الگوریتم‌ها سخت‌تر است و باعث می‌شود آن‌ها زمان‌بر باشند، یا حتی شکستن‌ آن‌ها سخت باشد. به همین دلیل است که الگوریتم SHA-1 یک راه ضعیف برای hashing است. زیرا hash های SHA-1 به سرعت توسط کامپیوتر محاسبه می‌شوند و این باعث آسیب‌پذیری آن می‌شود.

همان‌طور که قبلاً توضیح داده شد، هر چه فضای نمونه رمز عبور شما جامع‌تر باشد، مهاجم باید قبل از یافتن هر hash منطبق، احتمالات بیشتری را hash کند. گاهی اوقات، یک فضای نمونه گسترده‌تر، می‌تواند کرک کردن رمز عبور شما را غیر ممکن کند. چرا که برای شکستن آن، به صدها هزارسال زمان نیاز است.

2- brute force

حمله brute force زمانی اتفاق می‌افتد که مهاجم سعی می‌کند رمز عبور صحیح را از بین احتمالات رمز عبور در فضای نمونه حدس بزند. این کار با ارسال تعداد زیادی رمز عبور، تا زمانی که رمز عبور صحیح پیدا شود انجام می‌شود. این رویکرد تقریباً منسوخ شده است، زیرا بسیار ناکارآمد است. این روش فقط در صورتی کار می‌کند که رمز عبور شما بسیار کوتاه باشد، یا این‌که مهاجم بداند شما فقط از مجموعه کاراکتر خاصی استفاده کرده‌اید (به عنوان مثال، اعداد، حروف الفبا یا تنها الفبای عددی).

3- Dictionary attack

مهاجمان معمولاً درباره نحوه ایجاد رمزهای عبور توسط افراد، به ویژه رمزهای عبور طولانی‌تر، که در آن حمله brute force ناکارآمد است، مفروضاتی ایجاد می‌کنند. همان‌طور که قبلاً در مورد نحوه کارکرد مغز انسان در انتخاب پسوورد صحبت شد، انتخاب‌های ما تحت تأثیر الگوهای خاصی است. بنابراین، مهاجمان کاتالوگی از عبارات، الگوها و رمزهای عبور رایج مانند mypassword ایجاد می‌کنند و شروع به آزمایش آن‌ها می‌کنند تا ببینند آیا hash هایشان با هدفشان مطابقت دارد یا خیر. اگر آن‌طور نیست، آن را کمی اینور و آنور می‌کنند. مثلاً آن را به myp4ssword تبدیل می‌کنند و دوباره آن را امتحان می‌کنند.

هر حمله‌ای که به این شکل انجام شود، Dictionary attack نامیده می‌شود. که در آن برای ایجاد رمزهای عبور ساختگی از کلماتی که بیشتر مردم استفاده می‌کنند، کرکر از قدرت محاسباتی برنامه خود استفاده می‌کند.

منبع: hackernoon  نویسنده: ابوبکر معروف

Leave feedback about this

  • کیفیت
  • قیمت
  • خدمات

PROS

+
Add Field

CONS

+
Add Field
Choose Image
Choose Video
X