UTILS.
۱۰۰٪ در مرورگر
🧂

تولیدکننده و تأییدکننده‌ی هش KDF scrypt

یک کلید scrypt را از یک رمز عبور با هزینه‌ی قابل‌پیکربندی N، r، p استخراج کنید، یا یک رمز عبور را در برابر یک رشته‌ی scrypt ذخیره‌شده تأیید کنید. کاملاً در مرورگر شما اجرا می‌شود.

رمزهای عبور ۱۰۰٪ در مرورگر شما هش می‌شوند — چیزی بارگذاری نمی‌شود.

— خروجی اینجا نمایش داده می‌شود —

درباره این ابزار

تولیدکننده و تأییدکننده‌ی هش KDF scrypt، خروجی‌های scrypt را به‌صورت محلی در مرورگر شما استخراج و بررسی می‌کند. scrypt، طراحی‌شده توسط Colin Percival و استانداردسازی‌شده در RFC 7914، یک تابع استخراج کلید حافظه‌سخت است: هزینه‌اش عمداً تحت سلطه‌ی پهنای باند حافظه است تا سخت‌افزار کرک سفارشی مزیت اندکی به‌دست آورد. خط لوله عبارت است از PBKDF2-HMAC-SHA256 برای بسط رمز عبور، تابع ROMix ساخته‌شده روی BlockMix و هسته‌ی Salsa20/8 برای اجبار استفاده‌ی حافظه‌ی متوالی بزرگ، و یک PBKDF2-HMAC-SHA256 نهایی برای تولید کلید استخراج‌شده با طول انتخابی شما.

حالت تولید 16 بایت نمک تصادفی را از crypto.getRandomValues می‌خواند و scrypt را با سه پارامتر هزینه اجرا می‌کند: N هزینه‌ی CPU/حافظه است و باید توانی از دو باشد (پیش‌فرض 16384 = 2^14)، r اندازه‌ی بلوک است (پیش‌فرض 8)، و p ضریب موازی‌سازی است (پیش‌فرض 1). مصرف حافظه تقریباً 128 · N · r بایت است — حدود 16 MiB در پیش‌فرض‌ها — و ابزار وقتی تنظیمات شما از 256 MiB فراتر رود هشدار می‌دهد. خروجی یک رشته‌ی خودتوصیف‌گر $scrypt$ln=14,r=8,p=1$<base64 salt>$<base64 key> است که در آن ln = log2(N)، بنابراین هر پارامتر لازم برای تأیید همراه هش حمل می‌شود.

حالت تأیید ln، r، p، نمک و کلید ذخیره‌شده را از آن رشته تجزیه می‌کند، کلید استخراج‌شده را با رمز عبور نامزد بازمحاسبه می‌کند، و یک مقایسه‌ی زمان‌ثابت برای گزارش مطابقت یا عدم‌مطابقت انجام می‌دهد. هسته‌ی scrypt به‌صورت یک نسخه‌ی WebAssembly بدون eval تحت سیاست امنیتی سختگیرانه‌ی مرورگر اجرا می‌شود، بنابراین رمزهای عبور ۱۰۰٪ در مرورگر شما پردازش می‌شوند و چیزی بارگذاری نمی‌شود.

پرسش‌های پرتکرار

چرا N باید توانی از دو باشد؟
گام ROMix اسکریپت یک جدول دقیقاً N بلوکی را نمایه‌گذاری می‌کند و برای آدرس‌دهی integerify-and-mask خود به توان دو بودن N متکی است. ابزار مقادیر غیرتوان‌دو را رد می‌کند. انتخاب‌های معمول 16384 (2^14) برای استفاده‌ی تعاملی و 1048576 (2^20) برای رمزگذاری فایل هستند.
scrypt چقدر حافظه استفاده می‌کند؟
تقریباً 128 · N · r بایت. در پیش‌فرض‌های N=16384، r=8 این حدود 16 MiB است. از آنجا که مرورگر این را واقعاً تخصیص می‌دهد، مقادیر بزرگ N یا r می‌توانند روی دستگاه‌های کم‌RAM کند باشند یا شکست بخورند — ابزار بالای 256 MiB هشدار می‌دهد.
r و p چه چیزی را کنترل می‌کنند؟
r اندازه‌ی بلوک است، که هم مصرف حافظه و هم مقدار کار متوالی به‌ازای هر بلوک را مقیاس می‌دهد؛ افزایش r هزینه‌ی حافظه را در کنار N بالا می‌برد. p ضریب موازی‌سازی است، که p محاسبه‌ی مستقل scrypt را اجرا می‌کند، که هزینه‌ی CPU را بدون بالا بردن ردپای حافظه‌ی هر نمونه افزایش می‌دهد.
هش تولیدشده چه قالبی دارد؟
یک رشته‌ی خودتوصیف‌گر $scrypt$ln=<log2 N>,r=<r>,p=<p>$<base64 salt>$<base64 key>. هر پارامتر را تعبیه می‌کند، بنابراین حالت تأیید تنها به آن رشته و رمز عبور نیاز دارد. تمام محاسبه محلی است — چیزی بارگذاری نمی‌شود.

ابزارهای بیشتر