این وب‌سایت با استفاده از نرم‌افزار توسعه‌داده‌شده توسط Kohei Koyanagi به‌صورت خودکار به چندین زبان ترجمه می‌شود. برای دقت بیشتر، به نسخه اصلی به انگلیسی مراجعه کنید.

چگونه از رمزهای عبور شما محافظت می‌کنیم

Splync هرگز رمز عبور شما را به صورت متن ساده ذخیره نمی‌کند

در مقالات قبلی، چگونگی محافظت HTTPS از مسیر بین برنامه شما و سرور ما و چگونگی امن‌سازی سرور توسط SSH را بررسی کردیم. حالا زمان آن است که داخل سرور را بررسی کنیم — چگونگی ایمن نگه‌داشتن رمز عبور شما توسط Splync پس از رسیدن به آنجا. اگر کسی رمز عبور شما را به دست آورد، می‌تواند به حساب شما وارد شود و به اطلاعات حساس از جمله سوابق هزینه‌های شما دسترسی پیدا کند. به همین دلیل است که Splync هرگز رمزهای عبور را به صورت متن ساده ذخیره نمی‌کند. به جای آن، هر رمز عبور به یک نسخه هش شده تبدیل می‌شود و سپس در پایگاه داده ذخیره می‌گردد. این یعنی چه؟ هشینگ یک تبدیل یک‌طرفه است — پس از تبدیل، هرگز نمی‌توان آن را به رمز عبور اصلی برگرداند. این روش در سراسر اینترنت، از بانک‌ها تا خدمات ابری بزرگ، استاندارد است، اما بسیاری از مردم نمی‌دانند که واقعاً چگونه کار می‌کند. بیایید آن را با یک مثال ساده روزمره بررسی کنیم.

مبانی هشینگ: یک مخلوط‌کن که همیشه به همان صورت مخلوط می‌کند

برای درک چگونگی کارکرد محافظت از رمز عبور، بیایید با یک روش ساده هشینگ به نام SHA-256 شروع کنیم. آن را به عنوان یک مخلوط‌کن در نظر بگیرید که همیشه مواد را به همان صورت مخلوط می‌کند. اگر همان رمز عبور را در مخلوط‌کن قرار دهید و دکمه را فشار دهید، همیشه یک اسموتی منحصر به فرد دریافت خواهید کرد — ترکیبی به هم ریخته از حروف و اعداد. ایده کلیدی این است که این فرآیند قابل برگشت نیست. همانطور که نمی‌توانید یک اسموتی را بگیرید و آن را به موز و شیر اصلی تبدیل کنید، نمی‌توانید هش به هم ریخته را بگیرید و رمز عبور اصلی را بازیابی کنید.

مثال از SHA-256: چگونه رمزهای عبور را بدون دانستن آنها تأیید کنیم

SHA-256 یکی از رایج‌ترین الگوریتم‌های هشینگ است. به عنوان مثال، رمز عبور "splync1234" را به "9cdafa20d069ecfb202e5f0bc937c73071cc6cd85634cc2d95d30ddcf2a71d41" هش می‌کند. در میلی‌ثانیه‌ها، هر بار که یک کاربر موجود رمز عبور ورود را وارد می‌کند، SHA-256 همیشه همان رمز عبور هش شده را تولید می‌کند. برنامه فقط رمز وارد شده را دوباره هش می‌کند و بررسی می‌کند که آیا با هش ذخیره شده مطابقت دارد یا خیر. در هیچ نقطه‌ای سیستم هرگز رمز عبور اصلی کاربر را نمی‌داند. اما اگر یک مهاجم لیستی از رمزهای عبور رایج و هش‌های آنها (که به عنوان حمله جدول رنگی معروف است) از پیش محاسبه کند تا به سرعت رمزهای عبور کاربران را حدس بزند چه؟ این نگرانی بسیار واقعی است. به همین دلیل است که سیستم‌های مدرن، از جمله Splync، به ساده SHA-256 تکیه نمی‌کنند.

Splync رمزهای عبور را با bcrypt هش می‌کند — قوی‌تر از SHA-256

Bcrypt برای هر کاربر یک نمک تصادفی استفاده می‌کند و آن نمک (و عامل هزینه) را مستقیماً در رشته هش ذخیره شده کدگذاری می‌کند. bcrypt را به عنوان یک مخلوط‌کن با یک چاشنی مخفی (نمک) و یک موتور آهسته (عامل کار) در نظر بگیرید — که هر مخلوطی را منحصر به فرد و سخت‌تر از کپی می‌کند. به دلیل اینکه نمک ۱۲۸ بیت است (≈۳×۱۰³⁸ امکان‌پذیری‌ها)، همان رمز عبور می‌تواند به تعداد بسیار زیادی از هش‌های ذخیره شده مختلف نگاشت شود. این باعث می‌شود جداول رنگی پیش‌محاسبه شده در مقیاس بی‌فایده باشند. هنگام ورود، Splync نمک و هزینه را از رشته bcrypt ذخیره شده می‌خواند، bcrypt را بر روی رمز عبور وارد شده با آن پارامترها دوباره اجرا می‌کند و نتیجه را با هش ذخیره شده مقایسه می‌کند. اگر با هم تطابق داشته باشند، رمز عبور صحیح است — اما به دلیل اینکه bcrypt به عمد کند است و نمک‌ها منحصر به فرد هستند، حملات جستجوی کامل برای حمله‌کننده بسیار پرهزینه‌تر می‌شوند.

مثالی ساده با bcrypt

بیایید ببینیم این در عمل چگونه به نظر می‌رسد. اگر رمز عبور "splync1234" را با bcrypt (با استفاده از هزینه ۱۲) هش کنید، ممکن است رشته‌ای مانند این بدست آورید: `$2b$12$gBeouKYdue9uvvuV0HtGgeVPymnrojMqP/wcRw28HFlGEGIQbyw7O`. در این رشته bcrypt، `$2b` نشانگر نسخه الگوریتم، `$12` نشانگر عامل هزینه (چند بار رمز عبور پردازش می‌شود)، `gBeouKYdue9uvvuV0HtGgeV` نمک تصادفی منحصر به فرد و `PymnrojMqP/wcRw28HFlGEGIQbyw7O` رمز عبور نهایی هش شده است. از آنجا که خود هش شامل نمک و هزینه است، Splync می‌تواند فرآیند هشینگ مشابه را برای تأیید بازتولید کند با استخراج این مقادیر از رشته ذخیره شده و مقایسه نتیجه. از سوی دیگر، اگر مهاجم نمک و هزینه را نداند، نمی‌تواند یک جدول رنگی واحد بسازد که برای هر کاربر کار کند.

رمزهای عبور هش شده محافظت دوگانه ارائه می‌دهند

این رویکرد یک مزیت مهم دیگر دارد. زیرا Splync هرگز رمزهای عبور ساده را ذخیره نمی‌کند، حتی اگر پایگاه داده نشت کند یا دزدیده شود، کاربران بلافاصله در خطر نیستند. مهاجمان نمی‌توانند با داده‌های دزدیده شده به صورت مستقیم وارد شوند، زیرا آنچه که دارند تنها رشته‌های درهم‌ریخته است. این طراحی به کاربران یک لایه محافظتی اضافی می‌دهد، علاوه بر حفاظت‌هایی که از قبل در اطراف سرور وجود دارد. هشینگ رمز عبور منحصر به Splync نیست؛ این روش استاندارد در صنعت فناوری است، که توسط غول‌هایی مانند گوگل، اپل و آمازون استفاده می‌شود. Splync بسیار ایمن طراحی شده است و با بهبود امنیت با ویژگی‌هایی مانند تأیید ایمیل، محافظت در برابر حملات جستجوی کامل و نظارت مستمر، امن‌تر خواهد شد.