سیستمهایی که بجای یک پسورد از دو پسورد و لاگین دو مرحله ای استفاده میکنند

بارها دیدم که افراد درمورد قرار دادن دو پسورد و دو مرحلهء لاگین برای بعضی سیستمها یا عملیات صحبت کرده اند. بنظر میرسد که آنها فکر میکنند به این شکل امنیت بیشتری برقرار میشود.

حالا بنده تحلیل و نکات مهم اینطور سیستمهای دو پسوردی و دو مرحله ای رو براتون میگم:

فرض کنید یک پسورد 12 کاراکتری داشته باشیم متشکل از حروف کوچک و اعداد.
فرضا پسورد کاملا رندوم باشه.
تعداد حالتهای این پسورد 36 به توان 12 است.

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

هکر برای Brute-force کردن پسورد اول حداکثر باید 36 به توان 12 حالت ممکن رو امتحان کنه.
اما برای کشف کردن دو پسورد در سناریوی دیگر، 2 تا 36 به توان 6 کار داره!

حالا حساب کنیم ببینیم که حالت اول (یک پسورد با دو برابر طول) چقدر قویتر از حالت دومه:

(36^12)/(2*(36^6))

که جوابش میشه: 1088391168

یعنی انتخاب یک پسورد با 12 کاراکتر طول، بیش از یک میلیارد برابر از انتخاب دو پسورد جداگانه با نصف طول (6)، امن تره!

پس همیشه به این نکته توجه داشته باشید که انتخاب یک پسورد با طول بیشتر، بسیار بسیار بسیار بهتر از انتخاب دو پسورد جداگانه است.

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

حالا نمیدونم واقعا سیستمهایی که چند پسورد مجزا دارن تا چه حد میتونن مفید یا لازم باشن و چرا. این مسئله ایست که خودش جای بحث و تحقیق دارد. آیا واقعا ضرورت یا مزیتی اونقدر زیاد در این روش هست که ارزش تحمیل زحمت بیشتر به کاربر و ضعف احتمالی پسورد رو داشته باشه؟ خود شما چه دلیل یا استدلالی برای توجیه این روش داشتید؟

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

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

8 دیدگاه در “سیستمهایی که بجای یک پسورد از دو پسورد و لاگین دو مرحله ای استفاده میکنند

  1. با سلام

    ولی میشه یک تعامل انجام داد!

    مثلا یک سری دستوراتی برای سرور و همین دستورات را برای ادمین تعریف کنیم!

    اینطور امنیت چندین برابر می شود!

    برای مثال :
    کد نمایش : 4444444444
    444444 *5 -1000 *1500 cos و …

    و طرف کلاینت هم همین کارارو انجام بدهد(البته با نرم افزار)

    البته روش بالا یکم ساده هست میتونیم کمی الگوریتم رو پیچیده تر اش کنیم.

      • سلام.
        خوب بود . ولی اگه در سیستم دو پسووردی که من خودم هم ازش استفاده میکنم به کاربرا بگیم که طول پسوورداشنو بالای 12 کاراکتر انتخاب کنند دیگه مقاله ی شما بی فایده میشه که.
        بیشتر رو بحث مدیریت انسانی اشاره کردید.
        موفق باشید

        • خب مقاله من واسه همین بود که اونایی که نمیدونن بفهمن و یه فکری بکنن؛ بنابراین بی فایده نبوده.
          از طرف دیگر اگر پسورد بقدر کافی قوی باشه همون یک پسورد و یک مرحله لاگین هم امنیت کافی داره و نیازی نیست دو پسورد و دو مرحله داشته باشیم، مگر شاید در موارد و شرایط خاصی (در پایینتر توضیح دادم).

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

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

          امنیت مبحث گسترده و پیچیده و ظریفی است. اینو بنده تاحالا بارها گفتم.
          امنیت نیاز به تحلیل و دانش و بینش و تئوری و محاسبات داره. بحث برنامه نویسی عادی نیست که همینطور یه ایده بپره توی ذهنمون و کد بزنیم و بریم.
          در امنیت و رمزنگاری، ایده هایی که به ذهن میان میتونن خیلی ضعیف تر از چیزی باشن که فکر میکنیم، کاملا بی اثر باشن، یا حتی بعکس باعث کاهش امنیت بشن (گاهی در حد فاجعه بار). واقعا باید تخصص داشت و قبلا بقدر کافی مطالعه و تحقیق کرده باشیم و اصول و تئوری هایی رو که در این زمینه هستن و موارد عمومی و تاریخی رو بدونیم.
          بعدهم هیچ چیزی جای همفکری و تحقیق و مشورت، خصوصا با افراد متخصص و آگاه، رو نمیگیره. بخاطر همین میگم بازم باید تحقیق کرد. اصولیش اینه که تحقیق و مشورت عمومی صورت بگیره. مثلا در سایتهایی مثل security.stackexchange.com.

  2. عزیز امنیت که بالا میره اما اگه راهشو بلد باشی که از پسورد 2 مرحله ای استفاده کنی
    برای مثال از 2 لایه برای پسورد گذاری استفاده کرد:
    یک مرحله دیتابیسی که در مای اس کی ال یا هر دی بی ام اس دیگه ای سیو میشه
    یک مرحله ام پرتکشن سروری، مثلا از htpasswd برای پسورد گذاری استفاده کنی
    موفق باشی

    • اولا که شما اگر بخواید دو پسورد استفاده کنید میتونید دوتا پسورد رو بهم بچسبونید و بصورت یک مرحله ای ازش استفاده کنید. به این شکل قدرت پسورد هم خیلی بیشتر میشه طبق محاسباتی که قبلا دادم (از جمع قدرت همون دو پسورد بصورت جداگانه خیلی بیشتر). ولی اینکه دو پسورد رو در دو سیستم و دو مرحله جداگانه وارد کنیم، نسبت به پسورد یک مرحله ای و سیستم یک مرحله ای بله میتونه عملا بعضی مزایا و افزایش امنیت رو داشته باشه نسبت به فقط یک سیستم و لایه، مثلا بخاطر اینکه یک سیستم ممکنه حفرهء امنیتی خاصی رو داشته باشه اما سیستم دیگر احتمالا اون حفره رو نداره و بنابراین نفوذگر نمیتونه از هر دو سیستم براحتی و با استفاده از یک حفرهء امنیتی عبور کنه (و شاید یکی از سیستمها اصلا حفرهء امنیتی نداشته باشه که نفوذگر بتونه بفهمه و استفاده کنه)، ولی بنظر من این افزایش در امنیت اونقدری زیاد نیست که ارزش پیچیدگی و دردسر افزودش رو داشته باشه؛ باید توجه داشت که بطور معمول خود حجم و پیچیدگی افزوده روی امنیت و احتمال بروز خطای انسانی برنامه نویس و ایجاد حفره های امنیتی تاثیر منفی داره و نگهداری و بررسی و تست و باگیابی و باگزدایی سیستم رو دشوارتر میکنه؛ بنابراین باید از حجم و پیچیدگی افزوده ای که بازدهی و اهمیت کافی نداره که این تاثیرات منفی و هزینه های افزوده رو جبران کنه اجتناب کرد.
      ضمنا بنده در همین مورد استفاده از دو پسورد و دو مرحله لاگین قبلا در سایتهای پرسش و پاسخ خارجی سوال کرده ام، که افرادی در اونجا گفتن که با سیستم دو پسورد و دو مرحله لاگین امنیت میتونه یک مقداری بالا بره (اونم بیشتر در مواردی که پسورد دوم فقط در مواقع خاص و مثلا برای عملیات ادمینی بکار میره و نه برای لاگین عادی که زیاد و هرجایی انجام بشه) ولی نه خیلی، و توصیه کردن اگر واقعا نیاز به امنیتی بیش از سیستمهای پسوردی متداول دارم از احراز هویت دو فاکتوری (2FA) استفاده کنم.
      توضیح اینکه، پسورد بعنوان یک فاکتور محسوب میشه بصورت «چیز محرمانه ای که کاربر میدونه»، و بعنوان یک فاکتور امنیتی دیگر میتونیم از «چیزی که کاربر در اختیار دارد» (بعنوان مثال یک توکن سخت افزاری)، استفاده کنیم. این روش امنیت به مراتب بیشتری نسبت به روشهای پسوردی صرف ایجاد میکنه؛ حالا میخواید یک پسورد استفاده کنید یا 2 تا یا 10 تا فرق چندانی نمیکنه، بهرحال امنیت روش پسورد ذاتا از یک حد مشخصی تجاوز نمیکنه و نقاط ضعف ذاتی خودش رو داره (مثلا از نظر خطر key logger ها یا هر نوع جاسوسی و بعضی روشهای مهندسی اجتماعی چندان فرقی نمیکنه شما یک پسورد داشته باشید یا چند تا؛ اگر نفوذگر بتونه یک پسورد رو بدست بیاره در بیشتر یا خیلی موارد به احتمال زیاد میتونه چندتاش رو هم بدست بیاره) و برای مواردی که اهمیت خیلی بیشتری دارن کافی نیست و باید از روشهای احراز هویت چند فاکتوری استفاده کرد. دقت کنید که هر فاکتور هم در ماهیت تفاوت داره. مثلا پسورد یعنی «دانستن یک اطلاعات محرمانه»، ولی توکن سخت افزاری یعنی «در اختیار داشتن یک شیء فیزیکی انحصاری». یا مثلا فرض کنید اثر انگشت یا کد ارسال شده در SMS و غیره بعنوان فاکتور دیگر. البته بنده درمورد اینکه این فاکتورها دقیقا چه مواردی میتونن باشن اطلاعات موثق و حضور ذهن کافی ندارم. مثلا گویا یکی در همون سایت گفت که میشه از یک فایل با محتویات خاص هم بجای فاکتور دوم استفاده کرد؛ ولی من به این گفته زیاد اعتماد ندارم (مثلا چون فایل قابل کپی کردن راحته) و بهش شک کردم.
      این مقاله ویکیپدیا درمورد احزار هویت چند فاکتوری: http://en.wikipedia.org/wiki/2FA
      اگر دنبال امنیت واقعا اصولی و به طرز قابل توجهی بیشتر و قابل اعتماد باشید و این براتون اهمیت کافی داشته باشه و بخواید برای این امنیت مایه بذارید، بهتره دنبال روش احراز هویت چند فاکتوری برید. این روش یه روش علمی تر و اصولی تر و استانداردی است و امنیت به مراتب بیشتری رو میتونه تامین کنه. روش پسورد محدودیت ها و نقاط ضعف ذاتی داره؛ چه یک پسورد چه چندتا! با اینطور ترفندها یک مقداری میشه امنیتش رو بالا برد (حداقل بصورت تجربی)، ولی خیلی زیاد نیست و برای کاربردهای واقعا مهم و حساس کفایت نمیکنه.

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

*

شما می‌توانید از این دستورات HTML استفاده کنید: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>