رمزهای عبور چگونه کرک می‌شوند؟

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

رمزهای عبور تکراری حاصل از رخنه‌های اطلاعاتی

هر ساله به پایگاه داده سرویس‌های متعددی نفوذ می‌شود و اطلاعات کاربری آن‌ها برای فروش یا انتشار رایگان در اینترنت قرار می‌گیرد. مهاجمان جفت‌های آدرس ایمیل و رمز عبور را از یک رخنه برداشته و آن‌ها را به‌طور خودکار روی بانک‌ها، ارائه‌دهندگان ایمیل، فروشگاه‌ها و شبکه‌های اجتماعی آزمایش می‌کنند — حمله‌ای که پر کردن اطلاعات کاربری (credential stuffing) نامیده می‌شود. این کار هیچ نیازی به حدس زدن ندارد و به یک دلیل ساده کار می‌کند: مردم رمزهای خود را دوباره استفاده می‌کنند. حتی یک رمز عبور بسیار قوی نیز اگر در چند جا یکسان باشد، در اینجا کمکی نخواهد کرد.

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

فیشینگ

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

آنچه کمک می‌کند: باز کردن سایت‌ها از نشانک‌های شخصی خود به جای کلیک روی لینک‌ها. از یک برنامه مدیریت رمز عبور استفاده کنید: این برنامه‌ها رمز را فقط در آدرس دقیقی که برای آن ذخیره شده پیشنهاد می‌دهند؛ بنابراین اگر پیشنهادی ارائه نشد، آن را به عنوان یک هشدار در نظر بگیرید و قبل از تایپ دستی، آدرس را به دقت بررسی کنید. همچنین احراز هویت دومرحله‌ای را فعال نمایید که باعث می‌شود رمز سرقت‌شده به تنهایی ناکافی باشد. البته کدهای یک‌بارمصرف را می‌توان همانند رمز عبور فیشینگ کرد. اما کلیدهای عبور (passkeys) و کلیدهای امنیتی سخت‌افزاری FIDO2 از این راه فیشینگ نمی‌شوند، زیرا تنها به سایت اصلی پاسخ می‌دهند — ویژگی‌ای که NIST آن را مقاومت در برابر فیشینگ می‌نامد.

بدافزارها

برنامه‌هایی به نام سارقان اطلاعات (infostealers) رمزهای ذخیره‌شده در مرورگر را به همراه کوکی‌های نشست کپی کرده و ظرف چند ثانیه پس از اجرا به بیرون می‌فرستند، در حالی که کی‌لاگرها هر آنچه را تایپ می‌شود ثبت می‌کنند. یک کوکی نشست مسروقه می‌تواند به مهاجم اجازه دهد بدون نیاز به رمز عبور و بدون مرحله دوم، به حسابی که از قبل وارد آن شده‌اید دسترسی پیدا کند. این برنامه‌ها معمولاً از طریق نرم‌افزارهای کرک‌شده، به‌روزرسانی‌های جعلی و پیوست‌های ایمیل منتقل می‌شوند.

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

حدس زدن در فرم ورود

امتحان کردن مستقیم رمزها در یک وب‌سایت کند است: یک سرویس استاندارد پس از چند بار اشتباه، تأخیر ایجاد می‌کند، دسترسی را می‌بندد یا کد کپچا می‌خواهد. این امر حمله مداوم به یک حساب را ناکارآمد می‌کند؛ بنابراین یک رویکرد رایج برعکس عمل می‌کند: تعداد انگشت‌شماری از رایج‌ترین رمزها — 123456، password، qwerty123 — روی میلیون‌ها حساب مختلف آزمایش می‌شوند، روشی که اسپری کردن رمز عبور (password spraying) نامیده می‌شود. حدس زدن هدفمند نیز به همین شکل با اطلاعات شخصی انجام می‌شود: نام فرزندان و حیوانات خانگی، تاریخ تولد، تیم ورزشی مورد علاقه که همگی به راحتی در شبکه‌های اجتماعی پیدا می‌شوند.

آنچه کمک می‌کند: هر رمزی که نه رایج باشد و نه بر اساس اطلاعات شخصی شما ساخته شده باشد — مشاهده کنید چگونه یک رمز عبور قوی بسازیم.

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

یک سرویس استاندارد رمزهای عبور را به صورت متن خوانا ذخیره نمی‌کند، بلکه آن‌ها را به صورت هش نگهداری می‌نماید — خروجی یک تابع یک‌طرفه که امکان بازگشت به رمز اصلی از طریق آن وجود ندارد. وقتی چنین پایگاه داده‌ای افشا می‌شود، مهاجمان رمزهای محتمل را آزمایش می‌کنند: آن‌ها هش کاندیداها را روی سخت‌افزار خود محاسبه کرده و با هش‌های مسروقه مقایسه می‌نمایند. هیچ فرم ورودی سرعت آن‌ها را کم نمی‌کند و سرعت کار به تابع هش انتخابی سرویس و تنظیمات آن بستگی دارد. برای توابع سریع و قدیمی مانند MD5، یک کارت گرافیک مدرن می‌تواند ده‌ها میلیارد کاندیدا را در ثانیه آزمایش کند. توابعی که برای ذخیره رمز عبور طراحی شده‌اند — مانند Argon2id یا در سیستم‌های قدیمی‌تر bcrypt — عمداً کند هستند و این نرخ را به میزان چندین مرتبه بزرگی کاهش می‌دهند، به همین دلیل است که توصیه‌های امنیتی فعلی آن‌ها را نام می‌برند.

حملات واژه‌نامه‌ای

کاندیداها تصادفی نیستند. ابزارهای شکستن رمز با فهرست رمزهای واقعی لو رفته از رخنه‌های پیشین و فرهنگ کلمات و نام‌ها شروع می‌کنند، سپس قواعدی را اعمال می‌نمایند که عادات انسان‌ها را تقلید می‌کند: حرف اول بزرگ، یک سال یا علامت تعجب در انتها، یا جایگزینی یک حرف با نماد مشابه. رمزی مانند Summer2024! پیچیده به نظر می‌رسد، اما جزو اولین کاندیداهایی است که آزمایش می‌شود. نمک‌گذاری (salting) — افزودن یک مقدار تصادفی منحصربه‌فرد به هر رمز پیش از هش کردن — مانع استفاده مهاجمان از جدول‌های از پیش‌محاسبه‌شده موسوم به جدول‌های رنگین‌کمانی (rainbow tables) و شکستن همزمان تمام رمزهای مشابه می‌شود، اما یک رمز قابل پیش‌بینی را کمتر قابل پیش‌بینی نمی‌کند.

حمله جستجوی فراگیر (Brute Force)

هنگامی که واژه‌نامه‌ها به پایان می‌رسند، تنها راه باقی‌مانده امتحان تک‌تک ترکیب‌هاست، و برای یک رمز تولیدشده به صورت تصادفی، طول رمز تعیین‌کننده نتیجه است. به عنوان مثال، یک تابع هش سریع و رمزی را در نظر بگیرید که هر کاراکتر آن به صورت مستقل و با شانس برابر از بین 94 کاراکتر اسکی (ASCII) قابل چاپ (به استثنای فاصله) انتخاب شده باشد. حدود 6 × 1015 رمز عبور 8 کاراکتری از این نوع وجود دارد؛ با سرعت ده میلیارد حدس در ثانیه، آزمایش همه آن‌ها حدود یک هفته طول می‌کشد و به طور میانگین رمز درست در نیمی از این زمان پیدا می‌شود. برای 12 کاراکتر، آزمایش همه گزینه‌ها روی همان سخت‌افزار حدود 1.5 میلیون سال طول خواهد کشید و برای 16 کاراکتر، این عدد فراتر از هر مقایسه قابل درکی است. این تمام منطق استفاده از رمزهای تصادفی طولانی است: واژه‌نامه‌ها در برابر آن‌ها تقریباً بی‌فایده‌اند و تحت این فرضیات، امتحان کردن تمام ترکیب‌ها عملاً غیرممکن است. تولید کننده رمز عبور قوی ما آن‌ها را در مرورگر شما می‌سازد و برآورد آنتروپی هر یک را بر حسب بیت نمایش می‌دهد.

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

نگاه از روی شانه و مهندسی اجتماعی

قدیمی‌ترین روش‌ها به هیچ فناوری نیاز ندارند. رمز عبور از روی شانه فرد، از روی برچسب چسبانده‌شده به مانیتور یا از طریق اشتراک‌گذاری صفحه در یک تماس تصویری خوانده می‌شود؛ یا اینکه مهاجم به سادگی با جعل هویت پشتیبانی یا همکار آن را درخواست می‌کند — آنچه مهندسی اجتماعی (social engineering) نامیده می‌شود. هیچ سرویس معتبری هرگز رمز عبور شما را از طریق تلفن، ایمیل یا چت درخواست نخواهد کرد.

آنچه کمک می‌کند: هرگز رمز عبور خود را به کسی نگویید و ارسال نکنید، و آن را در جایی که دیگران بتوانند ببینند قرار ندهید.

نتیجه‌گیری کلی

در برابر حملات مختلف باید عادت‌های متفاوتی در پیش گرفت و سه قانون بیشترین کارایی را دارند: یک رمز منحصربه‌فرد برای هر حساب، تولیدشده توسط رایانه به جای انتخاب ذهنی، همراه با احراز هویت دومرحله‌ای — یا استفاده از کلید عبور به جای رمز، هر جا که سرویس اجازه دهد. این موارد همه چیز را پوشش نمی‌دهند — مثلاً سرقت نشست فعال — و به همین دلیل توصیه‌های مربوط به بدافزارها نیز به همان اندازه مهم هستند. مقالات بیشتر در مطالب تولیدکننده رمز عبور گردآوری شده‌اند.