هشینگ و احراز هویت: رمزهای عبور شما چگونه در وب‌سایت‌ها ذخیره می‌شوند؟

هنگام یادگیری درباره رمزنگاری و استفاده از آن همراه با رمزهای عبور قوی، بسیار مهم است که به نحوه ذخیره‌سازی این رمزها روی سرور وب‌سایت نیز توجه کنیم. مسئله اینجاست که وقتی اطلاعاتی را به یک سرور ارسال می‌کنید، آن اطلاعات دیگر از کنترل شما خارج شده، مگر اینکه خودتان آن سرور را مدیریت کنید. به همین دلیل، بسیار حیاتی است که مدیران سرورها، تا حد امکان اطلاعات را فقط به‌صورت رمزنگاری‌شده و غیرقابل خواندن ذخیره کنند.

حملاتی مثل تزریق SQL یا نفوذ به پایگاه‌داده می‌توانند اطلاعاتی که به‌صورت متن ساده (Plain Text) ذخیره شده‌اند را فاش کنند—و متأسفانه این اتفاقات بیشتر از آن چیزی که تصور می‌کنید رایج هستند. هش کردن (Hashing) شباهت‌هایی به رمزنگاری دارد، اما بیشتر در زمینه ذخیره‌سازی امن رمزهای عبور استفاده می‌شود.

در بسیاری از وب‌سایت‌ها، زمانی که برای اولین‌بار ثبت‌نام می‌کنید، رمز عبور شما روی سرور ذخیره می‌شود تا در دفعات بعدی با وارد کردن همان رمز، اعتبارسنجی شوید. اما این روش—even اگر SSL هم داشته باشد—از نظر امنیتی بسیار ضعیف است.

وب‌سایت‌ها و سرورهای امن (که امروزه باید اکثریت باشند) رمز عبور شما را پیش از ارسال به سرور هش می‌کنند، یعنی آن را به رشته‌ای غیرقابل خواندن تبدیل می‌کنند. این کار معمولاً با استفاده از الگوریتم‌هایی مانند SHA-256 یا SHA-512 انجام می‌شود. این الگوریتم‌ها اغلب با روش‌هایی مثل PBKDF2 همراه هستند که برای افزایش مقاومت رمز در برابر حملات «Brute Force» به کار می‌روند (برای اطلاعات بیشتر: مقاله شو‌نایر درباره رمزهای ضعیف).

در هنگام ورود بعدی به سایت، مرورگر شما رمز عبور را مجدداً هش کرده و آن را با نسخه هش‌شده موجود در سرور مقایسه می‌کند. اگر هر دو برابر باشند، شما تأیید هویت می‌شوید و وارد حساب کاربری‌تان خواهید شد.

کمی جزئی‌تر: Key Stretching و PBKDF2 اصطلاحی به نام تعداد تکرار (Iteration Count) در این حوزه وجود دارد که نشان‌دهنده میزان قدرت محاسباتی لازم برای آزمون هر رمز عبور است. هرچه تعداد تکرارها بیشتر باشد، رمز شما در برابر حملات مقاوم‌تر خواهد بود. علاوه بر این، شرکت‌ها می‌توانند از Salt استفاده کنند—رشته‌ای تصادفی که به انتهای رمز عبور اضافه شده و مانع از موفقیت حملات دیکشنری می‌شود. (برای اطلاعات بیشتر: مقاله ویکی‌پدیا درباره Salt)

برای مقایسه، تعداد پیش‌فرض تکرارها در برخی ابزارها به شرح زیر است:

LastPass – ۵,۰۰۰ (در سمت کاربر) + ۱۰۰,۰۰۰ (در سمت سرور)
TrueCrypt – ۱,۰۰۰
VeraCrypt – ۵۰۰,۰۰۰
FileVault2 – ۴۱,۰۰۰

برای اطلاعات بیشتر: به بخش مدیرهای رمز عبور امن در راهنما مراجعه کنید.