افزایش قدرت پردازش رایانهها، حل سریعتر مشکلات را ممکن میسازد، اما تهدیداتی را نیز به همراه دارد. یکی از پیامدهای مخرب چنین پیشرفتهایی، این است که رمز عبور هایی که تا چند سال قبل، حدس زدن آنها دشوار یا غیرممکن بود، اکنون در سال 2024 میتوانند توسط هکرها در عرض چند ثانیه شکسته شوند.
به عنوان مثال، پردازنده گرافیکی RTX 4090 میتواند یک رمز عبور هشت کاراکتری متشکل از حروف انگلیسی یکسان و اعداد و یا 36 کاراکتر ترکیبی را تنها در 17 ثانیه حدس بزند. نتایج مطالعات در خصوص مقاومت در برابر حملات بروت فورس (brute-force) نشان میدهد که درصد زیادی از رمزهای عبور (59٪) میتوانند در کمتر از یک ساعت شکسته شوند.
رمز عبور چگونه ذخیره میشود؟
وب سایتها برای اینکه بتوانند کاربران را احراز هویت کنند، نیازمند متدی برای ذخیره سازی نام کاربری و رمز عبور و استفاده از آنها برای تأیید دادههای وارد شده میباشند. رمز عبور در بیشتر موارد به جای متن ساده (plaintext) به صورت هش (hash) ذخیره میشود تا مهاجمان نتوانند در صورت دسترسی به پایگاه داده، این رشته را رمزگشایی کنند.
از این رو، برای جلوگیری از حدس زدن رمز عبور، پیش از هش کردن آن، مقداری به عنوان salt با کمک جداول rainbow (رنگین کمان)، اضافه میشود. اگرچه هش ها ذاتاً برگشت ناپذیر هستند، اما مهاجمی که به پایگاه داده دسترسی دارد، میتواند سعی کند رمزهای عبور را حدس بزند.
آنها تلاشهای نامحدودی خواهند داشت و به دفعات زیاد رمز عبور را امتحان میکنند، زیرا پایگاه داده هیچگونه محافظتی در برابر حملات بروت فورس ندارد. ابزارهای آماده برای حدس زدن گذرواژه، مانند hashcat به صورت آنلاین در دسترس میباشند.
متدلوژی
کسپرسکی در مطالعات خود، 193 میلیون رمز عبور را که در وب سایتهای دارک وب به صورت آزاد در دسترس بودند، مورد بررسی قرار داد. این شرکت توانست زمان حدس زدن گذرواژه را از روی هش و با استفاده از بروت فورس و الگوریتمهای پیشرفته مختلف مانند حملات دیکشنری (dictionary attacks) و یا شمارش (enumeration) ترکیب کاراکترهای رایج، تخمین بزند.
کسپرسکی با استفاده از دیکشنری، به لیستی از ترکیب کاراکترهایی که اغلب در رمزهای عبور استفاده می شوند، دست یافت. این کاراکترها شامل کلمات انگلیسی واقعی هستند اما محدود به آنها نمیشوند.
حملات بروت فورس
متد بروت فورس هنوز هم یکی از راحتترین و سادهترین روشها است. مهاجم، تمامی حالات رمز عبور ممکن را امتحان میکند تا زمانی که به رمز عبور صحیح دست یابد. کسپرسکی طی مطالعهای، سرعت بروت فورس رمزهای عبور یک دیتابیس را مورد بررسی و تحلیل قرار داد. این شرکت روسی، برای اطمینان از نتیجه آزمایشات خود، رمزهای عبور را با توجه به نوع کاراکترهای موجود در آنها به الگوهای زیر تقسیم کرد:
- a: رمز عبور فقط شامل حروف کوچک یا بزرگ است.
- aA: رمز عبور شامل ترکیبی از حروف کوچک و بزرگ است.
- 0: رمز عبور شامل اعداد است.
- !: رمز عبور شامل کاراکترهای خاص است.
زمان لازم برای شکستن رمز عبور با استفاده از روش بروت فورس به طول و تعداد انواع کاراکترها بستگی دارد. نتایج جدول زیر برای RTX 4090 GPU و الگوریتم هش MD5 همراه با salt محاسبه و ارائه شده است. سرعت شمارش در این پیکربندی، 164 میلیارد هش در ثانیه است (درصدهای جدول گرد شده است).
محبوبترین نوع رمز عبور (28%) شامل حروف کوچک و بزرگ، کاراکترهای خاص و اعداد است. بسیاری از این رمزهای عبور در نمونه مورد بررسی به سختی بروت فورس شدهاند.
حدود 5٪ از رمزهای عبور را میتوان در یک روز حدس زد، اما 85٪ از این نوع رمزهای عبور بیش از یک سال زمان نیاز دارند. زمان کرک رمز عبور به طول آن بستگی دارد. رمز عبور 9 کاراکتری را میتوان در طول یک سال حدس زد، اما رمز عبوری که حاوی 10 کاراکتر باشد، بیش از یک سال زمان خواهد برد.
گذرواژههایی که کمترین مقاومت را در برابر حملات بروت فورس دارند، آنهایی هستند که فقط از حروف یا فقط از اعداد و یا فقط از کاراکترهای خاص تشکیل شدهاند. 14 درصد از پسورهای بررسی شده توسط کسپرسکی در این دسته قرار دارند. اکثر آنها را میتوان در کمتر از یک روز کرک کرد. گذرواژه قوی حداقل از یازده کاراکتر تشکیل شده و ترکیبی از حروف کوچک و بزرگ، اعداد و کارکترهای خاص است.
حملات بروت فورس هوشمند
همانطور که بالاتر ذکر شد، بروت فورس یک الگوریتم حدس زدن رمز عبور غیربهینه است. گذرواژهها اغلب از ترکیب کاراکترهای خاصی همچون کلمات، نامها، تاریخها، دنباله ها (“12345” یا “qwerty”) تشکیل شدهاند. چنانچه الگوریتم بروت فورس اینگونه در نظر گرفته شود، آنگاه روند تست و تشخیص گذرواژه سریعتر خواهد شد.
- bruteforce_corr: یک نسخه بهینه از متد بروت فورس است. شما میتوانید از یک نمونه بزرگ برای اندازه گیری فرکانس یک الگوی رمز عبور خاص استفاده کنید. شما در مرحله بعد، میتوانید درصدی از زمان محاسباتی را به هر دسته، اختصاص دهید که با فرکانس واقعی آن مطابقت داشته باشد. بنابراین، اگر سه الگو وجود داشته باشد و نمونه اول در 50٪ موارد، و نمونههای دوم و سوم در 25٪ موارد استفاده شده باشند، آنگاه رایانه در هر دقیقه، 30 ثانیه را برای شمارش الگوی اول و 15 ثانیه را برای شمارش الگوهای دوم و سوم صرف خواهد کرد.
- zxcvbn: یک الگوریتم پیشرفته برای سنجش قدرت رمز عبور است. این الگوریتم، الگویی را که رمز عبور به آن تعلق دارد، مانند “کلمه، سه رقم” و یا “کاراکترهای خاص، کلمه موجود در دیکشنری، دنباله عددی” شناسایی میکند. الگوریتم در مرحله بعد، تعداد تکرارهای مورد نیاز برای شمارش هر عنصر در الگو را محاسبه میکند. این روش یک محدودیت دارد و آن هم این است که شمارش موفقیت آمیز، مستلزم تعیین رمز عبور یا در نظر گرفتن یک الگو است. شما میتوانید با استفاده از نمونههای ربوده شده، به محبوبیت الگوها پی ببرید و سپس مانند بروت فورس، مقداری از زمان محاسباتی را متناسب با وقوع آن به الگو اختصاص دهید. کسپرسکی این الگوریتم را به عنوان ” zxcvbn_corr” تعیین کرده است.
- Unigram: سادهترین نوع الگوریتم است. این الگوریتم به جای نیاز به الگوی رمز عبور، به میزان تکرار هر کاراکتر متکی است. این الگوریتم به هنگام شمارش، محبوبترین کاراکترها را اولویت بندی میکند. بنابراین، برای تخمین زمان کرک، کافی است احتمال ظاهر شدن کاراکترها در رمز عبور محاسبه شود.
- 3gram_seq و ngram_seq: الگوریتمهایی هستند که احتمال کاراکتر بعدی را بسته به n-1 کاراکتر قبلی محاسبه میکنند. الگوریتم پیشنهادی در حالی که با طولانیترین و متداولترین n-gramها آغاز میشود، شروع به شمارش یک کاراکتر میکند و سپس به ترتیب، کاراکتر بعدی را اضافه میکند. n-gram، دنبالهای از n “کلمه” است که از بدنه متن گرفته شده است. کسپرسکی در این مطالعه، از n-gramهایی از ۱ تا ۱۰ کاراکتر استفاده کرده است که بیش از ۵۰ بار در پایگاه داده رمز عبور ظاهر شده بودند. الگوریتم 3gram_seq به n-gramهایی تا سه کاراکتر محدود شده است.
- 3gram_opt_corr و ngram_opt_corr: این الگوریتم نسخه بهینه شده n-gram است. الگوریتم قبلی، رمز عبور را از ابتدای رشته با افزودن یک کاراکتر در هر بار تولید میکند. با این حال، در برخی موارد اگر از انتها، وسط و یا از چندین موقعیت رشته به طور همزمان کاراکتر اضافه شود، شمارش سریعتر انجام خواهد شد.
الگوریتمهای *_opt_*، انواع توصیف شده در بالا را برای یک رمز عبور خاص بررسی کرده و بهترین آنها را انتخاب میکنند.
کسپرسکی در این مطالعه بهترین زمان کرک در بین همه الگوریتمهای مورد استفاده را محاسبه کرده است. این یک مورد ایده آل فرضی است. شما برای پیادهسازی آن، باید یک الگوریتم مناسب را حدس بزنید یا هر یک از الگوریتمهای فوقالذکر را به طور همزمان بر روی یک GPU مخصوص به خود اجرا کنید.
جدول زیر نتایج سنجش قدرت رمز عبور را با اجرای الگوریتمها بر روی یک پردازنده گرافیکی RTX 4090 برای MD5 همراه با salt ارائه کرده است.
اکثر (57٪) رمزهای عبور بررسی شده حاوی یک کلمه موجود در دیکشنری بودند که به طور قابل توجهی قدرت و میزان امنیت آنها را کاهش میدهد. نیمی از اینها را میتوان در کمتر از یک دقیقه و 67٪ را در عرض یک ساعت کرک کرد. تنها 12 درصد از رمزهای عبور موجود در دیکشنری به اندازه کافی قوی هستند و حدس زدن آنها بیش از یک سال زمان خواهد برد. شواهد حاکی از آن است که حتی در هنگام استفاده از همه انواع کاراکترهای توصیه شده (حروف بزرگ و کوچک، اعداد و کاراکترهای خاص)، تنها 20 درصد از این رمزهای عبور در برابر حمله بروت فورس مقاوم هستند.
چند گروه را میتوان در میان محبوبترین توالیهای دیکشنری در رمزهای عبور نام برد، از جمله:
- نامها: ” ahmed”، ” nguyen”، ” kumar”، ” kevin” و ” Daniel “
- لغات محبوب: ” forever”، ” love”، ” google”، ” hacker” و ” gamer”
- رمزهای عبور استاندارد: password، qwerty12345، admin، 12345 و team
رمزهای عبور غیر دیکشنری، 43 درصد از نمونه مورد بررسی را تشکیل میدهند. برخی از این رمزها مانند آنهایی که از حروف و ارقام یکسان (10٪) و یا فقط اعداد (6٪) تشکیل شدهاند، ضعیف هستند. با این حال، افزودن تمام انواع کاراکترهای توصیه شده (الگوی aA0!) باعث میشود 76 درصد از این رمزهای عبور به اندازه کافی قوی باشند.
سخن پایانی
GPUهای مدرن قادر به شکستن رمزهای عبور کاربران با سرعت فوق العادهای هستند. سادهترین الگوریتم بروت فورس میتواند هر رمز عبور تا حداکثر هشت کاراکتر را در کمتر از یک روز بشکند. الگوریتمهای هک هوشمند میتوانند به سرعت حتی رمزهای عبور طولانی را حدس بزنند.
اینها از دیکشنری استفاده میکنند و جایگزینی کاراکتر “3” بجای “e”، “!” بجای “1” و “@” بجای “a” و دنبالههای محبوب qwerty، 12345 و asdfg را در نظر میگیرند. نتایج زیر در خصوص مطالعات انجام شده از قدرت رمز عبور است:
- بسیاری از رمزهای عبور کاربران به اندازه کافی قوی نیستند: ۵۹٪ از آنها را میتوان در عرض یک ساعت حدس زد.
- استفاده از کلمات معنی دار، نامها و ترکیبهای استاندارد کاراکترها، زمان حدس زدن رمز عبور را به میزان قابل توجهی کاهش میدهد.
- ضعیفترین رمز عبور، رمزی است که تماماً از ارقام، حروف و یا کلمات تشکیل شده باشد.
برای محافظت از حسابهای خود در برابر هک شدن، در نظر گرفتن نکات زیر ضروری است:
- به یاد داشته باشید که بهترین رمز عبور بصورت تصادفی و توسط کامپیوتر تولید میشود. برنامههای زیادی برای انجام این کار وجود دارد.
- از کلمات معنادار استفاده نکنید.
- رمز عبور خود را برای مقاومت در برابر هک بررسی کنید. شما میتوانید این کار را با کمک Password Checker، Kaspersky Password Manager یا zxcvbn انجام دهید.
- با رفتن به haveibeenpwned مطمئن شوید که رمزهای عبور شما در هیچ پایگاه داده هک شدهای، وجود ندارد. توصیه میشود از راه حلهای امنیتی که به کاربران در مورد انتشار رمز عبور هشدار میدهند، استفاده کنید.
- از استفاده از رمز عبور یکسان برای چندین وب سایت و یا حساب کاربری خودداری کنید. اگر رمزهای عبور شما منحصر به فرد باشند، شکسته شدن یکی از آنها آسیب کمتری به همراه خواهد داشت.