ساخت رمز عبور قوی: طول، تصادفی بودن و توصیههای NIST
چرا یک رمز عبور بلند و تصادفی از رمز کوتاه و پیچیده بهتر است، واقعاً چند بیت آنتروپی لازم دارید، رهنمود ۲۰۲۵ مؤسسهی NIST چه چیزی را تغییر داد و چطور رمزها را امن بسازید و نگه دارید.
بیشتر توصیهها دربارهی رمز عبور به قواعد نویسهها مربوط است: یک حرف بزرگ، یک عدد، یک نماد. این قواعد برای مهاجم اهمیت چندانی ندارد. چیزی که از شما محافظت میکند تعداد حدسهایی است که برای پیدا کردن رمزتان لازم است، و این تقریباً فقط به دو چیز بستگی دارد: طول رمز و میزان تصادفی بودن انتخاب آن.
چرا «P@ssw0rd!» ضعیف است
برنامههای شکستن رمز همهی ترکیبها را کورکورانه امتحان نمیکنند. آنها از فهرست رمزهای لورفته در نشتهای قبلی، کلمههای فرهنگ لغت، نامها و تاریخها شروع میکنند و بعد تغییرهای رایج را اعمال میکنند: a به @، o به 0، یک حرف بزرگ در ابتدا و یک عدد یا علامت تعجب در انتها. رمزی که اینطور ساخته شود تقریباً همهی قواعد پیچیدگی را رعایت میکند و باز هم جزو اولین حدسهاست.
به همین دلیل مؤسسهی ملی استاندارد و فناوری آمریکا (NIST) اکنون از سرویسهای آنلاین میخواهد بهجای اجبار به قواعد ترکیب نویسهها، رمزهای جدید را با فهرست رمزهای رایج و لورفته مقایسه کنند. جزئیات این رهنمود را پایینتر میخوانید.
آنتروپی: اندازهگیری قدرت بر حسب بیت
قدرت رمزی که تصادفی انتخاب شده باشد قابل محاسبه است. اگر هر نویسه از مجموعهای با N نویسهی ممکن برداشته شود، هر نویسه log₂(N) بیت آنتروپی اضافه میکند و رمزی به طول L دارای L × log₂(N) بیت است. هر بیت اضافه تعداد حدسهای لازم برای مهاجم را دو برابر میکند.
L × log2(N)
L = 16, N = 94:
16 × log2(94) = 16 × 6.55 ≈ 104.9 | رمز عبور | آنتروپی |
|---|---|
| ۸ حرف کوچک تصادفی | ۳۷٫۶ بیت |
| ۸ نویسهی تصادفی از کل صفحهکلید (۹۴) | ۵۲٫۴ بیت |
| ۴ کلمهی تصادفی از فهرستی ۷٬۷۷۶ کلمهای | ۵۱٫۷ بیت |
| ۱۲ نویسهی تصادفی از کل صفحهکلید | ۷۸٫۷ بیت |
| ۶ کلمهی تصادفی از فهرستی ۷٬۷۷۶ کلمهای | ۷۷٫۵ بیت |
| ۱۶ نویسهی تصادفی از کل صفحهکلید | ۱۰۴٫۹ بیت |
| ۲۰ حرف و رقم تصادفی (۶۲) | ۱۱۹٫۱ بیت |
شکستن رمز چقدر طول میکشد؟
سرعت حدس زدن به محل حمله بستگی دارد. فرم ورود یک سایت معمولاً فقط چند تلاش در دقیقه اجازه میدهد. حالت خطرناک، حملهی آفلاین پس از نشت اطلاعات است؛ وقتی مهاجم حدسهایش را روی سختافزار خودش با هشهای دزدیدهشدهی رمزها امتحان میکند. سرعت این کار به روش ذخیرهی رمزها در آن سرویس بستگی دارد: یک تابع هش قدیمی و سریع را میتوان با کارت گرافیک میلیاردها بار در ثانیه امتحان کرد، اما تابعی که عمداً کند ساخته شده، مثل bcrypt یا Argon2، فقط هزاران بار.
جدول زیر میانگین زمان پیدا کردن یک رمز تصادفی (نصف همهی حالتها) را با دو سرعت نشان میدهد. این دو سرعت فرضهایی برای مثالاند، نه اندازهگیری یک مهاجم خاص: ۱۰ میلیارد حدس در ثانیه برای هش سریع و ۱۰ هزار حدس در ثانیه برای هش کند.
| رمز عبور | آنتروپی | هش سریع: ۱۰ میلیارد حدس در ثانیه | هش کند: ۱۰ هزار حدس در ثانیه |
|---|---|---|---|
| ۸ حرف کوچک | ۳۷٫۶ بیت | حدود ۱۰ ثانیه | حدود ۴ ماه |
| ۴ کلمهی تصادفی | ۵۱٫۷ بیت | حدود ۲ روز | حدود ۵٬۸۰۰ سال |
| ۸ نویسه از کل صفحهکلید | ۵۲٫۴ بیت | حدود سه روز و نیم | حدود ۹٬۷۰۰ سال |
| ۶ کلمهی تصادفی | ۷۷٫۵ بیت | حدود ۳۵۰ هزار سال | بسیار بیشتر |
| ۱۲ نویسه از کل صفحهکلید | ۷۸٫۷ بیت | حدود ۷۵۰ هزار سال | بسیار بیشتر |
| ۱۶ نویسه از کل صفحهکلید | ۱۰۴٫۹ بیت | حدود ۵۹ هزار میلیارد سال | بسیار بیشتر |
حدود ۸۰ بیت، حدس زدن آفلاین را حتی در برابر هش سریع ناممکن میکند. ابزار ساخت رمز عبور قوی از همین مقیاس استفاده میکند: زیر ۵۰ بیت را ضعیف، ۵۰ تا ۷۹ بیت را خوب و از ۸۰ بیت به بالا را قوی میداند. تنظیم پیشفرض آن، یعنی ۲۰ نویسه از هر چهار گروه، حدود ۱۲۹ بیت آنتروپی دارد.
رهنمود ۲۰۲۵ مؤسسهی NIST چه میگوید
نشریهی ویژهی NIST SP 800-63B-4 که در ژوئیهی ۲۰۲۵ نهایی شد، برای سامانههای دولت فدرال آمریکا نوشته شده، اما بسیاری از شرکتها و تیمهای امنیتی در سراسر دنیا از آن پیروی میکنند. برای سرویسهایی که رمز عبور را بررسی میکنند، این رهنمود میگوید:
- رمزی که تنها راه ورود است باید دستکم ۱۵ نویسه باشد؛ رمزی که همراه عامل دوم به کار میرود دستکم ۸ نویسه.
- سرویسها باید دستکم ۶۴ نویسه را بپذیرند.
- سرویسها نباید قواعد ترکیب نویسهها را اجباری کنند؛ مثلاً ترکیب حروف بزرگ و کوچک، عدد و نماد.
- سرویسها نباید تغییر دورهای رمز را اجباری کنند؛ تغییر رمز وقتی لازم است که نشانهای از لو رفتن آن وجود داشته باشد.
- رمزهای جدید باید با فهرست سیاه رمزهای پرکاربرد، قابلپیشبینی یا لورفته مقایسه شوند.
- استفاده از مدیر رمز عبور و پرکردن خودکار باید مجاز باشد و چسباندن (paste) رمز هم باید ممکن باشد.
- یادآور رمزی که دیگران ببینند و پرسشهای امنیتی («نام اولین حیوان خانگیتان») مجاز نیستند.
جهتگیری روشن است: بلند، منحصربهفرد و غیرقابلپیشبینی بهتر از کوتاه و آراسته است.
سه راه برای ساختن رمز قوی
۱. بگذارید یک مولد، نویسهها را تصادفی انتخاب کند
رمز تصادفی ۱۶ تا ۲۰ نویسهای بهترین انتخاب برای هر حسابی است که در مدیر رمز عبور ذخیره میشود، چون هرگز خودتان آن را تایپ نمیکنید. ابزار ساخت رمز عبور قوی آن را در مرورگر شما با Web Crypto API (crypto.getRandomValues) و روش نمونهگیری ردکننده (rejection sampling) میسازد تا احتمال همهی نویسهها برابر باشد. همچنین مطمئن میشود هر گروه نویسهای که انتخاب کردهاید دستکم یک بار در رمز باشد تا سایتهایی که هنوز قواعد قدیمی دارند هم آن را بپذیرند. هیچ چیزی به سرور فرستاده نمیشود.
۲. برای رمزهایی که باید به خاطر بسپارید، عبارت عبور تصادفی بسازید
برای چند رمزی که باید تایپ کنید، مثل رمز ورود رایانه یا رمز اصلی مدیر رمز عبور، عبارتی از شش کلمه یا بیشتر که تصادفی انتخاب شدهاند راحتتر به خاطر میماند و روی گوشی هم راحتتر تایپ میشود. کلمهی کلیدی «تصادفی» است: کلمهها را با تاس از فهرستی مثل فهرست انگلیسی ۷٬۷۷۶ کلمهای بنیاد مرز الکترونیک (EFF) انتخاب کنید (هر کلمه حدود ۱۲٫۹ بیت اضافه میکند)، نه از یک شعر، ترانه یا ذهن خودتان.
۳. همه را در یک مدیر رمز عبور نگه دارید
استفادهی دوباره از یک رمز بزرگترین خطر است. وقتی یک سایت هک میشود، مهاجم همان ایمیل و رمز را در سایتهای بسیار دیگری امتحان میکند؛ روشی که به آن credential stuffing میگویند. با مدیر رمز عبور، هر حساب رمز تصادفی خودش را دارد و شما فقط یک رمز را به خاطر میسپارید.
فراتر از رمز عبور
- ورود دومرحلهای را روشن کنید، برای ایمیل، بانک و شبکههای اجتماعی. حساب ایمیل از همه مهمتر است، چون با آن میتوان رمز همهی حسابهای دیگر را بازنشانی کرد.
- هر جا passkey ارائه میشود از آن استفاده کنید. passkey رمز عبور را با یک کلید رمزنگاریشده روی دستگاه شما جایگزین میکند: چیزی برای حدس زدن و چیزی برای تایپ در صفحهی ورود جعلی وجود ندارد.
- بررسی کنید آیا رمزی لو رفته است. سرویس Pwned Passwords از Have I Been Pwned رمز را بدون دریافت خود آن بررسی میکند: فقط پنج نویسهی اول هش SHA-1 آن فرستاده میشود و مقایسه در سمت شما انجام میشود.
- رمز را وقتی عوض کنید که دلیلی وجود دارد؛ مثلاً اطلاعیهی نشت اطلاعات، استفاده از دستگاه مشترک یا کلیک روی لینک فیشینگ، نه طبق یک برنامهی ثابت.
ابزارهای این راهنما
پرسشهای متداول
رمز عبور چند نویسه باید باشد؟
اگر تنها محافظ یک حساب است دستکم ۱۵ نویسه؛ این حداقل فعلی NIST است. اگر مدیر رمز عبور آن را برایتان نگه میدارد، ۱۶ تا ۲۰ نویسهی تصادفی. برای عبارتی که باید حفظ کنید، شش کلمهی تصادفی یا بیشتر.
آیا رمز عبور حتماً باید نماد داشته باشد؟
اگر بلند و تصادفی باشد، نه. نماد هر نویسه را کمی قویتر میکند (log₂ ۹۴ ≈ ۶٫۵۵ بیت در برابر log₂ ۶۲ ≈ ۵٫۹۵ بیت برای حروف و رقمها)، اما چهار نویسهی اضافه حدود ۲۴ بیت اضافه میکند. وقتی سایتی نماد را اجباری کرده، از آن استفاده کنید.
آیا باید رمزهایم را مرتب عوض کنم؟
فقط وقتی دلیلی برای احتمال لو رفتن رمز وجود دارد. رهنمود ۲۰۲۵ NIST از سرویسها میخواهد تغییر دورهای را اجباری نکنند، چون به نسخههای قابلپیشبینی مثل «Bahar1405!» و بعد «Tabestan1405!» منجر میشود.
ساختن رمز عبور بهصورت آنلاین امن است؟
بله، اگر مولد بهصورت محلی اجرا شود و از مولد اعداد تصادفی رمزنگاری استفاده کند. مولد ما کاملاً در مرورگر شما با crypto.getRandomValues کار میکند؛ رمز نه فرستاده میشود و نه ذخیره.
«بیت آنتروپی» یعنی چه؟
لگاریتم مبنای ۲ تعداد حالتهای هماحتمال است. رمزی با ۸۰ بیت آنتروپی یکی از ۲ به توان ۸۰ حالت (حدود ۱٫۲ × ۱۰ به توان ۲۴) است و مهاجم بهطور میانگین به نصف این تعداد حدس نیاز دارد.
منابع و مطالعهی بیشتر
- NIST SP 800-63B-4: Authentication and Authenticator Management (2025) (csrc.nist.gov)
- EFF: New wordlists for random passphrases (www.eff.org)
- Troy Hunt: Understanding Have I Been Pwned’s use of SHA-1 and k-anonymity (www.troyhunt.com)
- Crypto: getRandomValues() – MDN Web Docs (developer.mozilla.org)