ابزارهای برنامه‌نویسی

ساخت رمز عبور قوی: طول، تصادفی بودن و توصیه‌های 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، فقط هزاران بار.

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

میانگین زمان = 2^(bits − 1) ÷ تعداد حدس در ثانیه.
رمز عبورآنتروپیهش سریع: ۱۰ میلیارد حدس در ثانیههش کند: ۱۰ هزار حدس در ثانیه
۸ حرف کوچک۳۷٫۶ بیتحدود ۱۰ ثانیهحدود ۴ ماه
۴ کلمه‌ی تصادفی۵۱٫۷ بیتحدود ۲ روزحدود ۵٬۸۰۰ سال
۸ نویسه از کل صفحه‌کلید۵۲٫۴ بیتحدود سه روز و نیمحدود ۹٬۷۰۰ سال
۶ کلمه‌ی تصادفی۷۷٫۵ بیتحدود ۳۵۰ هزار سالبسیار بیشتر
۱۲ نویسه از کل صفحه‌کلید۷۸٫۷ بیتحدود ۷۵۰ هزار سالبسیار بیشتر
۱۶ نویسه از کل صفحه‌کلید۱۰۴٫۹ بیتحدود ۵۹ هزار میلیارد سالبسیار بیشتر

حدود ۸۰ بیت، حدس زدن آفلاین را حتی در برابر هش سریع ناممکن می‌کند. ابزار ساخت رمز عبور قوی از همین مقیاس استفاده می‌کند: زیر ۵۰ بیت را ضعیف، ۵۰ تا ۷۹ بیت را خوب و از ۸۰ بیت به بالا را قوی می‌داند. تنظیم پیش‌فرض آن، یعنی ۲۰ نویسه از هر چهار گروه، حدود ۱۲۹ بیت آنتروپی دارد.

رهنمود ۲۰۲۵ مؤسسه‌ی 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 کار می‌کند؛ رمز نه فرستاده می‌شود و نه ذخیره.

«بیت آنتروپی» یعنی چه؟

لگاریتم مبنای ۲ تعداد حالت‌های هم‌احتمال است. رمزی با ۸۰ بیت آنتروپی یکی از ۲ به توان ۸۰ حالت (حدود ۱٫۲ × ۱۰ به توان ۲۴) است و مهاجم به‌طور میانگین به نصف این تعداد حدس نیاز دارد.

منابع و مطالعه‌ی بیشتر

  1. NIST SP 800-63B-4: Authentication and Authenticator Management (2025) (csrc.nist.gov)
  2. EFF: New wordlists for random passphrases (www.eff.org)
  3. Troy Hunt: Understanding Have I Been Pwned’s use of SHA-1 and k-anonymity (www.troyhunt.com)
  4. Crypto: getRandomValues() – MDN Web Docs (developer.mozilla.org)
همه‌ی راهنماها