چرا به تنهایی SHA-256 برای ذخیره سازی رمز عبور مناسب نیست

چک کردن فایل و ذخیره سازی رمز عبور سمت سرور مشکلات مختلف را حل می کند. ذخیره سازی رمز عبور همچنین باید هر حدس آنلاین را گران کند.

3 دقیقه خواندنزمان مورد نیاز: خواندن؛ پیاده سازی نیازمند بررسی جداگانه است
در این راهنما

هشینگ رمزگذاری نیست: هیچ عملیات رمزگشایی متناظری وجود ندارد. با این وجود، پس از نشت پایگاه داده یک مهاجم می تواند حدس ها را هش کند و آنها را با پرونده های سرقت شده بدون عبور محدودیت نرخ ورود برنامه شما مقایسه کند.

SHAسرعت تبدیل به یک نقطه ضعف می شود

SHA-256 برای بررسی یکپارچگی و بسیاری از برنامه های رمزنگاری مفید است. سرعت آن برای ذخیره سازی رمز عبور نامطلوب است. اضافه کردن نمک به SHA256(salt + password) حدس ها را به اندازه کافی گران نمی کند. هزینه های نمک و محاسباتی به اهداف مختلف خدمت می کنند.

یک قالب معتبر یا حلقه ای از هش های معمولی را اختراع نکنید. استفاده از یک کتابخانه حفظ رمز عبور

یک تابع اختصاصی Password-hashing را انتخاب کنید

OWASP ترجیح می دهد Argon2id برای سیستم های جدید، با رمزنگاری به عنوان یک جایگزین زمانی که در دسترس نیست. PBKDF2 الزامات انطباق خاصی را ارائه می دهد. Bcrypt برای سیستم های میراثی مناسب است اما محدودیت هایی دارد، از جمله طول ورودی.

از توابع کتابخانه برای ایجاد و تأیید، تولید نمک و ذخیره سازی پارامتر استفاده کنید. پارامترهای هزینه را از راهنمایی فعلی و اندازه گیری در سرور هدف انتخاب کنید. حساب کاربری برای ورود همزمان و محدودیت های منابع: هش پر هزینه نباید انکار خدمات را بی اهمیت کند. محدود کردن نرخ آنلاین ضروری است.

درک نمک و فلفل

نمک به طور تصادفی و منحصر به فرد برای هر رکورد است؛ نیازی نیست که مخفی باشد. مشخصات الگوریتم و پارامترهای تأیید را نیز ذخیره کنید، اغلب در رکورد رمزگذاری شده کتابخانه.

فلفل یک راز اختیاری است که در خارج از پایگاه داده رمز عبور نگهداری می شود. این می تواند در برخی از سناریوهای نقض کمک کند، اما چرخش و مدیریت کلید را پیچیده می کند. نه نمک و نه یک تابع هش مناسب را جایگزین می کند.

ارتقاء سوابق پس از تایید موفقیت آمیز

در یک ورود موفق، ابتدا رکورد قدیمی را بررسی کنید و سپس رمز عبور ارسال شده را اگر پارامترهای منسوخ شوند دوباره تکرار کنید. شما نمی توانید رمز عبور اصلی را از هش های موجود بازیابی کنید تا کل پایگاه داده را مهاجرت کنید. حساب های فعال نیاز به تنظیم مجدد جداگانه یا سیاست مهاجرت دارند. بازسازی یک نشت قبلی را خنثی نمی کند.

قبل از استقرار، کلمات عبور نادرست، مهاجرت میراث، محدودیت های طولانی و بار را آزمایش کنید. هرگز رمز عبور را ثبت نکنید یا آنها را به تجزیه و تحلیل ارسال کنید.