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

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

آشنایی با حملات دیکشنری یا Dictionary Attack

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

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

نوع دیگر رمز عبور از یک یا چند کلمه‌ی ساده تشکیل می‌شود. حدس زدن این رمز عبور ساده نیست اما اگر کسی همه‌ی کلمات پرکاربرد را یکی‌یکی امتحان کند و سپس حالت‌های دو کلمه‌ای و سه کلمه‌ای را امتحان کند چطور؟ نکته‌ی جالب این است که هکر یا برنامه‌نویس می‌تواند برنامه‌ای بنویسد که کلمات یک دیکشنری را یکی‌یکی به عنوان رمز عبور امتحان کند و همین‌طور حالت‌های دو کلمه‌ای را یکی‌یکی آزمایش کند!

منظور از حملات دیکشنری نوعی از حملات سایبری است که هکر برای ورود، مرتباً سعی و خطا کند و لغت‌های مختلف را امتحان کند. به عبارت دیگر برای پیدا کردن رمز عبور، از لیستی طولانی از واژگان و حتی از دیکشنری یا دیتابیسی کامل از لغت‌ها برای ورود استفاده شود.

تفاوت حملات دیکشنری با حملات سعی و خطا یا Brute-force در این است که ترکیبی تصادفی از حروف و کلمات به عنوان رمز عبور تست نمی‌شود، بلکه لیستی حاوی کلمات مهم‌تر و پرکاربردتر استفاده می‌شود. لذا این روش سریع‌تر به جواب می‌رسد و بازدهی بالاتری دارد.

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

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

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

دیکشنری فقط لیست کلمات نیست!

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

حتی اگر یک کلمه‌ی ساده انتخاب کنید و اعدادی به آن اضافه کنید هم مشکل حل نمی‌شود چرا که هکر این حالت را هم پیش‌بینی کرده است و لیستی از واژگان پرکاربرد در ترکیب با تعدادی عدد را برای ورود به حساب کاربری، تست می‌کند. به عنوان مثال اگر پسورد حساب شما، reza12 باشد، هکر نرم‌افزاری می‌نویسد که کلمه‌ی reza و سپس reza1 و reza2 و ... را برای ورود تست کند و در نهایت به پسورد انتخابی شما می‌رسد.

هکر می‌تواند نرم‌افزار هوشمندتری هم بنویسد که کلماتی مثل نام و نام خانوادگی را به همراه سال تولد امتحان کند. به عنوان مثال اسم reza به همراه سال‌های 1300 الی 1400 و یا ترکیب سال و ماه و روز، آزمایش شود. البته ممکن است reza حتی اسم خود شما نباشد بلکه اسم فرزند شما باشد اما به هر حال در حمله‌ی دیکشنری پسورد شما شناسایی می‌شود و نباید چنین پسوردی انتخاب کنید.

شاید به جای اعداد در سال تولد خودتان، از حروف استفاده کرده باشید. هکرها این حالت را هم در نظر می‌گیرند و نرم‌افزاری می‌نویسند که به عنوان مثال به جای عدد ۱، حرف a قرار دهد و به جای 2 حرف b قرار دهد. در این صورت هم پسورد ظاهراً پیچیده‌ای که انتخاب کرده‌اید، دیر یا زود کشف می‌شود.

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

هکر و روش تهیه کردن لیست پسوردهای احتمالی

در سایت معروف  Have I Been Pwned، لیستی حاوی بیش از ۱۰ میلیارد حساب کاربری که به نوعی پسورد آن امن نبوده و هک شده، موجود است و می‌توانید در این لیست جستجو کنید. این لیست مرتباً بروزرسانی می‌شود.

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

در سایت Have I Been Pwned علاوه بر سرچ کردن ایمیل، می‌توانید پسورد حساب کاربری خویش را هم جستجو کنید. البته اگر پسوردی که انتخاب کرده‌اید در لیست باشد، به این معنی نیست که حساب کاربری شما هک شده است اما اگر در لیست نباشد، می‌توانید نتیجه بگیرید که پسورد خاص و نسبتاً خوبی انتخاب کرده‌اید.

انواع حملات حدس زدن پسورد

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

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

در حالت کلی چند نوع حمله‌ی سایبری با هدف کشف پسورد داریم که در ادامه به صورت خلاصه بررسی می‌کنیم:

  • حمله‌ی سعی و خطا به روش سنتی: ساده‌ترین نوع حمله به منظور کشف پسورد این است که نرم‌افزاری نوشته شود که حالت‌های مختلف ترکیب کلمات و اعداد را برای ورود به حساب کاربری استفاده کند تا در نهایت به پسورد برسد. این نوع حمله‌ی سعی و خطا همان‌طور که توضیح دادیم یک حمله‌ی دیکشنری محسوب نمی‌شود بلکه بازدهی پایین‌تری دارد و مدت زمان بیشتری برای رسیدن به نتیجه لازم است.
  • حمله‌ی دیکشنری: در این نوع حمله به جای آنکه حروف و اعداد به صورت تصادفی پشت هم چیده شود، کلمات پرکاربرد و اعداد معنادار پشت‌سرهم چیده می‌شود و برای ورود تلاش می‌شود. لیست کلمات و اعداد و همین‌طور الگوریتم تست کردن پسورد، با توجه به سایت و شبکه‌ی موردنظر، بهینه‌سازی می‌شود تا بالاترین بازدهی حاصل شود.
  • حملات جستجوی پسورد: در این نوع حمله که مشابه حمله‌ی دیکشنری است، از لیستی از پسوردهای واقعی استفاده می‌شود که قبلاً کاربران مختلف برای حساب‌های کاربری در سایت‌ها و شبکه‌های مختلف انتخاب کرده‌اند و از منابع مختلف تهیه شده است. ممکن است پسوردهای انتخاب شده معنی‌دار نباشند اما در عین حال به مراتب استفاده شده باشد. به عنوان مثال پسورد ساده‌ای نظیر ۱۲۳۴۵۶۷۸۹ که متأسفانه تاکنون افراد زیادی برای حساب خویش استفاده کرده‌اند و در نهایت حسابشان هک شده است.
  • حملات جستجوی هوشمند پسورد: این نوع حمله شبیه به حالت قبلی است با این تفاوت که جای برخی حروف یا اعداد عوض می‌شود و همین‌طور به جای برخی حروف و اعداد، از حرف و عدد دیگری استفاده می‌شود.
  • حمله API: در این نوع حمله هدف پیدا کردن پسورد یک حساب کاربری نیست بلکه نرم‌افزاری نوشته می‌شود که رشته‌ای از کلمات و حروف ایجاد می‌کند که ممکن است با کلید کاربر در واسط برنامه‌نویسی یا به اختصار API یکسان باشد. اگر دسترسی به API امکان‌پذیر شود، هکر می‌تواند اطلاعات مهم و حساسی به دست آورد.

نکات مفید در انتخاب پسورد

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

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

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

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

نحوه حفاظت در برابر حملات کشف پسورد

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

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

  • برای ورود از روش لاگین چند فاکتوری یا چند مرحله‌ای استفاده کنید. به عنوان مثال پس از اینکه کاربر پسورد صحیح را وارد کرد، ورود انجام نشود بلکه پیامکی حاوی کد یکبار مصرف ارسال شود. اگر کاربر کد یکبار مصرف را سریع و صحیح وارد کرد، ورود انجام می‌شود و در غیر این صورت کاری انجام نمی‌شود. در لاگین دو فاکتوری می‌توانید ترکیبی از پیامک حاوی کد، تماس تلفنی برای ارسال کد و روش‌های دیگر نظیر استفاده از حسگر اثر انگشت و کلیدهای دیجیتال USB را به کار بگیرید.
  • الزام کاربران سایت یا شبکه و کامپیوتر به انتخاب رمز عبور یکتا، پیچیده و طولانی که حاوی کلمات، حروف و نمادها باشد.
  • ذخیره کردن پسوردها به شکلی امن و رمزگذاری شده بسیار مهم است. از ذخیره کردن پسورد در بانک داده به صورت رمزگذاری نشده و یا ذخیره کردن در فایل‌های ساده‌ی متنی یا فایل‌هایی با ساختار ساده نظیر xml خودداری کنید.
  • محدود کردن تعداد تلاش‌های ناموفق برای لاگین و قفل شدن خودکار حساب کاربری و حتی IP Address که برای ورود مرتباً تلاش کرده و ناموفق بوده است. می‌توانید پس از چند بار ورود ناموفق، کاربر را به انتخاب پسورد جدید و امن ملزم کنید.
  • استفاده از کپچا یا کدهای تصادفی ناخوانا که به صورت عکس در صفحه‌ی ورود قرار داده می‌شود. کپچا در جلوگیری از کارکرد ربات‌هایی که برای کشف پسورد مرتباً تلاش می‌کنند، مفید است و البته می‌بایست در گذر زمان تصاویر حاوی کد را تغییر داد چرا که برنامه‌نویس می‌تواند تصاویر را بررسی کرده و الگوی جدیدی برای ارزیابی خودکار کد موجود در عکس‌ها بنویسد.
  • استفاده از نرم‌افزارهای ایجاد پسورد پیچیده و به خاطر سپردن پسوردها روش خوبی است به شرط آنکه دسترسی به اطلاعات ذخیره شده توسط نرم‌افزار مدیریت پسورد را با انتخاب پسوردی که بسیار امن است، محدود کنید و همین‌طور از اپ یا نرم‌افزار مدیریت پسوردی استفاده کنید که خود امنیتی بالایی داشته باشد.