وقتی رمز عبور طولانی هم به ضرر شما تمام میشود
وبگاههای امنیتی همیشه به کاربران توصیه میکنند که از گذرواژههای طولانی، پیچیده و تصادفی، برای حفاظت از حسابهای کاربری خود استفاده کنند.
وبگاههای امنیتی همیشه به کاربران توصیه میکنند که از گذرواژههای طولانی، پیچیده و تصادفی، برای حفاظت از حسابهای کاربری خود استفاده کنند. اما اکنون شواهدی به دست آمده که نشان میدهد گذرواژههای طولانی میتوانند، به گونهای دیگر، برای امنیت سامانههای رایانهای مضر باشند.
این مشکل نوعی آسیبپذیری در بستر توسعهی وب Django Web است. به طور پیشفرض، این نرمافزار از الگوریتم PBKDF2 برای تبدیل گذرواژههای متنی به رشتههای طولانی، که هشهای رمزنگاریشده نامیده میشوند، استفاده میکند. مانند scrypt و bcrypt، این الگوریتم یکی از امنترین راههایی است که وبگاهها میتوانند گذرواژهها را ذخیره کنند؛ زیرا PBKDF2 آنها را از فرایندهای تولید هشِ متعددی عبور میدهد که البته باعث افزایش قابل توجه زمان و منابع رایانشیِ لازم، میشود. این مسأله باعث میشود در صورتی که رخنهای به پایگاه دادهی گذرواژهها صورت بگیرد، مهاجمان به قرنها زمان برای شکستن رمزنگاری گذرواژهها نیاز داشته باشند.
اما همانطور که توسعهدهندگان Django متوجه شدهاند، این امنیت فوقالعاده میتواند یک شمشیر دولبه باشد. آنها در پستی در وبگاه خود این موضوع را شرح دادهاند:
«متاسفانه از این پیچیدگی میتوان به عنوان یک بردار حمله نیز بهرهبرد. Django هیچ حدِ بالایی برای طول گذرواژهها تعیین نمیکند، و این یعنی یک مهاجم میتواند با وارد نمودن یک گذرواژهی بسیار طولانی – که حتماً غلط باشد – کارگزاری را که از Django استفاده میکند، مجبور به انجام یک محاسبهی هش طولانی کند. به عنوان مثال این گذرواژه میتواند یک مگابایت باشد، که در صورت استفاده از PBKDF2 نیازمند حدود یک دقیقه محاسبه خواهد بود.
این موضوع، اجازه انجام حملات انسداد سرویس با استفاده از ارسال مکرر گذرواژههای طولانی و اتلاف منابع کارگزار برای محاسبهی هش آنها، را میدهد.»
پس از آنکه یک کاربر این آسیبپذیری را در انجمنهای عمومی توسعهدهندگان Django مطرح ساخت، مسئولین نگهداری Django به سرعت به وصلهی آن پرداختند. بهروزرسانی ارائه شده که گذرواژهها را به ۴۰۹۶ بایت محدود میسازد هماکنون در وبگاه Django موجود است.