بررسیگر قدرت رمز عبور
تحلیل در زمان واقعی با موتور zxcvbn: دیکشنریهای رمزهای رایج، الگوهای کلیدی، دنبالهها، تکرارها و تاریخها همه امتیاز شما را کاهش میدهند — معیاری بسیار دقیقتر از شمارش کلاسهای حروف کوچک/بزرگ/ارقام/نماد برای امنیت است. همه چیز به صورت محلی اجرا میشود؛ رمز عبور شما هرگز از مرورگر خارج نمیشود.
- موتور
- zxcvbn
- امتیاز
- مقیاس ۰ تا ۴
- حریم خصوصی
- هرگز آپلود نمیشود
- دیکشنری
- رمزهای رایج داخلی
تنظیمات سیاست پیشرفته
جداشده با ویرگول یا خط جدید، بدون در نظر گرفتن حروف. zxcvbn به طور خودکار تغییرات حروف، جایگزینیهای لیت (مثلاً Pa$$w0rd) و معکوسها را تشخیص میدهد.
مقایسه دو رمز عبور
چرا این مهم است
چرا «حروف کوچک + بزرگ + رقم + نماد» امنیت نیست
P@ssw0rd! تمام چهار شرط کاراکتر را برآورده میکند و همچنان در لیستهای نفوذهای واقعی بالا قرار دارد. قدرت مربوط به حدسپذیری است، نه محاسبه کلاسهای کاراکتر.
تطبیق رمزهای ضعیف
یک دیکشنری داخلی از رمزهای رایج و کلمات به شدت جریمه میشود — password، 123456 و P@ssw0rd به درستی بسیار ضعیف امتیاز میگیرند.
تشخیص الگو
مسیرهای صفحه کلید، توالیهای مستقیم، تکرارها، تاریخها و کلمات رایج فضای حدس مؤثر را کوچک میکنند.
آنتروپی مؤثر، نه تئوری
امتیاز، حدسهای واقعی از ساختارهای یافتشده را تخمین میزند — نه اندازه مجموعه کاراکتر ضربدر طول.
دو سناریو حمله
تخمینهای جداگانه برای شکافتن آفلاین با GPU و حدس آنلاین با نرخ محدود، بصری از هزینه مهاجم ایجاد میکند.
سیاست و لیست مسدود سفارشی
تنظیم حداقل طول و الزامات کلاس؛ افزودن نامهای شرکت یا نامهای رمز پروژه برای انطباق با قوانین رمز عبور شرکتی.
کاملاً محلی
رمز عبور شما هرگز مرورگر را ترک نمیکند یا با سرور تماس پیدا نمیکند؛ تنظیمات فقط در localStorage شما ذخیره میشوند.
درک قدرت رمز عبور
نحوه عملکرد امتیازدهی، معنی زمانهای شکافتن و آنچه در واقع یک رمز عبور خوب میسازد.
چگونه امتیاز ۰–۴ zxcvbn محاسبه میشود؟
zxcvbn ابتدا رمز عبور را به تکهها تقسیم میکند: کلمات دیکشنری (رمزهای رایج، کلمات انگلیسی)، مسیرهای صفحه کلید، توالیها، تکرارها، تاریخها و قطعات brute-force.
حدسها را به ازای هر تکه تخمین میزند، آنها را در یک تعداد حدس کل ترکیب میکند و آن را به یک امتیاز ۰–۴ نگاشت میکند. تبدیلهای رایج به طور خودکار در نظر گرفته میشوند — معکوس کردن حروف بزرگ و کوچک، جایگزینیهای لیت (@→a, 0→o)، پسوندهای سال — به همین دلیل P@ssw0rd علیرغم تنوع کاراکترهایش امتیاز پایینی میگیرد.
تفاوت آنتروپی مؤثر و اندازه مجموعه کاراکتر چیست؟
اندازه مجموعه کاراکتر، اندازه الفبا را در طول ضرب میکند — یک سقف تئوری که فرض میکند هر کاراکتر کاملاً تصادفی است، که رمزهای عبور واقعی تقریباً هرگز اینطور نیستند.
آنتروپی مؤثر (تعداد بیت نشان داده شده در اینجا) فضای حدس واقعی است که zxcvbn پس از یافتن کلمات دیکشنری و الگوها تخمین میزند. در طول یکسان، iloveyou2024 آنتروپی مؤثر بسیار کمتری نسبت به یک رشته تصادفی دارد.
چگونه زمانهای شکافتن تخمین زده میشوند — آیا قابل اعتماد هستند؟
زمان شکست = حدسهای تخمینی ÷ تعداد حدس در ثانیه. دو سرعت نمایش داده میشود: ~۱۰ میلیارد/ثانیه برای مزرعه GPU آفلاین (مهاجم هش را دارد)، و ~۱۰۰/ساعت برای ورود به سیستم با محدودیت نرخ آنلاین. اینها را به عنوان اندازههای مرتبه در نظر بگیرید، نه پیشبینیها: سرعت واقعی به الگوریتم هش بستگی دارد (bcrypt/Argon2 مراتب کندتر از MD5 هستند)، سختافزار و کیفیت واژهنامه. خطای ۱۰ برابر چیزی را تغییر نمیدهد؛ شکاف یک میلیون برابر تغییر ایجاد میکند.
چه چیزی واقعاً یک رمز عبور خوب میسازد؟
دو راه محکم وجود دارد: رشته تصادفی ۱۶+ کاراکتر از مدیر رمز عبور، منحصر به فرد برای هر سایت؛ یا عبارت عبور از ۴+ کلمه نامرتبط (مانند correct-horse-battery-staple) — طولانی و بیمعنی. هر کدام را که انتخاب کنید، آن را با احراز هویت چندعاملی (MFA) جفت کنید و هرگز همان رمز عبور را در سایتها تکرار نکنید.
سایت من نیاز به حروف بزرگ/کوچک/رقم/نماد دارد — چرا امتیاز پایین است؟
سیاست شرکت (طول، کلاسهای کاراکتر) یک پایه انطباق است: پاسخ میدهد "آیا مطابقت دارد؟". امتیاز zxcvbn پاسخ میدهد "آیا قابل حدس زدن است؟". این دو مستقل هستند. افزودن یک علامت تعجب و یک سال به یک کلمه رایج (password!2024) اکثر بررسیهای سیاست را passes میکند اما در عرض چند ثانیه به حمله واژهنامهای سقوط میکند.
آیا رمز عبور من در جایی آپلود میشود؟
خیر. همه چیز در مرورگر شما از طریق جاوااسکریپت اجرا میشود — هیچ درخواست شبکهای رمز عبور را ارسال نمیکند و همچنین آفلاین کار میکند. فقط سیاست سفارشی شما (قوانین طول، لیست مسدود شده) به صورت محلی ذخیره میشود؛ هرگز حاوی رمز عبور نیست.
بررسی قدرت رمز عبور در کد
برای افزودن بررسی قدرت زنده به فرم ثبتنام یا تغییر رمز عبور خودتان، از پورت zxcvbn برای زبان خود استفاده کنید:
<!-- CDN -->
<script src="https://unpkg.com/[email protected]/dist/zxcvbn.js"></script>
<script>
const res = zxcvbn('P@ssw0rd!');
console.log(res.score, res.crack_times_display);
</script>
// npm i @zxcvbn-ts/core
import { zxcvbn } from '@zxcvbn-ts/core';
const result = zxcvbn('P@ssw0rd!');
console.log(result.score, result.guesses_log10);
composer require bjeavons/zxcvbn-php
<?php
require __DIR__ . '/vendor/autoload.php';
use ZxcvbnPhp\Zxcvbn;
$zxcvbn = new Zxcvbn();
$res = $zxcvbn->passwordStrength('P@ssw0rd!');
echo $res['score'];
pip install zxcvbn
from zxcvbn import zxcvbn
res = zxcvbn('P@ssw0rd!')
print(res['score'], res['crack_times_display'])
go get github.com/nbutton23/zxcvbn-go
package main
import (
"fmt"
zxcvbn "github.com/nbutton23/zxcvbn-go"
)
func main() {
res := zxcvbn.PasswordStrength("P@ssw0rd!", nil)
fmt.Println(res.Score, res.Guesses)
}
# Add dependency
cargo add zxcvbn
use zxcvbn::zxcvbn;
fn main() {
match zxcvbn("P@ssw0rd!", &[]) {
Ok(estimate) => {
println!("score: {}", estimate.score()); // 0..4
if let Some(times) = estimate.crack_times() {
println!("offline: {:?}", times.offline_slow_hashing_1e4_per_second());
}
}
Err(err) => eprintln!("zxcvbn error: {err}"),
}
}
امتیازها و تخمینهای الگو ممکن است بسته به نسخه کتابخانهها کمی با این صفحه متفاوت باشند، اما اصول یکسان است. برای بررسیهای سمت سرور، همچنین یک سقف طول و محدودیت نرخ را اعمال کنید تا ورودیهای بزرگحجیم نتوانند برای سوزاندن CPU استفاده شوند.
سوالات متداول
این بررسی کننده قدرت رمز عبور چگونه کار میکند؟
این از zxcvbn، الگوریتم منبع باز Dropbox استفاده میکند: رمز عبور با واژهنامههای رمز عبور رایج، لغات انگلیسی، پیادهروی کیبورد، توالیها، تاریخها و الگوهای تکراری تطبیق داده میشود. تعداد متوسط تخمینی حدسهایی که مهاجم نیاز دارد به امتیاز ۰–۴ و تخمینهای زمان شکست نگاشت میشود.
P@ssw0rd پیچیده به نظر میرسد — چرا "بسیار ضعیف" است؟
این یکی از نمادینترین رمزهای عبور ضعیف در مجموعههای نقض است. مستقیماً در واژهنامههای zxcvbn ظاهر میشود، و حروف بزرگ به علاوه جایگزینیهای لیت (a→@, o→0) به طور خودکار شناسایی میشوند. کاراکترهای متنوع با ساختار کاملاً قابل پیشبینی دقیقاً همان چیزی است که واژهنامههای مهاجم مبتنی بر قانون اول امتحان میکنند.
رمز عبور باید چقدر طولانی باشد؟
هنگام تولید تصادفی، ۱۲+ کاراکتر معمولاً حملات آنلاین را شکست میدهد، در حالی که ۱۶+ در برابر شکست GPU آفلاین برای سالهای زیادی مقاومت میکند. طول بیشتر از پیچیدگی کاراکتر اهمیت دارد: یک رشته تصادفی ۲۰ کاراکتری کوچکحروف از یک رشته ۱۰ کاراکتری ترکیبی از هر چهار کلاس بهتر عمل میکند.
چرا زمان شکست آفلاین و آنلاین جداگانه است؟
سناریوهای حمله متفاوت هستند: پس از نقض پایگاه داده، مهاجم میتواند هشها را محلی روی GPU با میلیاردها حدس در ثانیه امتحان کند؛ در مقابل ورود زنده، محدودیت نرخ فقط تعداد کمی در ثانیه را اجازه میدهد. همان رمز عبور میتواند در یک سناریو تریلیون برابر طولانیتر از دیگری دوام بیاورد — بنابراین هر دو نمایش داده میشوند.
آیا ورودیهای من در جایی ذخیره میشوند؟
خیر. رمز عبور شما فقط در حافظه مرورگر شما زندگی میکند و با بارگذاری مجدد ناپدید میشود. فقط تنظیمات سیاست سفارشی شما (قوانین طول، لیست مسدود شده) در حافظه محلی نگهداری میشوند — هرگز حاوی رمز عبور نیستند.