چرا نداشتن پایگاه داده، بزرگ‌ترین ویژگی امنیتی ماست

وقتی افراد یک مولد رمز عبور آنلاین را ارزیابی می‌کنند، معمولاً سؤالاتی مانند: رمزها چقدر قوی هستند؟ چه مجموعه‌ای از کاراکترها پشتیبانی می‌شود؟ می‌توانم طول آن را تنظیم کنم؟ می‌پرسند. اما یک سؤال بسیار مهم‌تر تقریباً هرگز پرسیده نمی‌شود: رمز عبور من بعد از تولید کجا می‌رود؟

راز پنهان مولدهای رمز عبور سمت سرور

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

وقتی رمز عبور شما از طریق شبکه سفر می‌کند — حتی از طریق HTTPS — خطرات جدی وجود دارد:

  • لاگ‌های سرور: اکثر سرورها هر درخواست HTTP را ثبت می‌کنند. رمز عبور شما ممکن است در همان لحظه تولید در یک فایل لاگ نوشته شود.
  • ذخیره در پایگاه داده: بعضی سرویس‌ها رمزهای تولیدشده را برای آنالیتیکس یا دیباگ ذخیره می‌کنند. رمز به‌ظاهر منحصربه‌فرد شما ممکن است از قبل در پایگاه داده شخص دیگری باشد.
  • شنود شبکه: پروکسی‌های TLS، نودهای CDN و میدل‌ورها می‌توانند محتوای درخواست را قبل از رمزگذاری بررسی کنند.
  • اسکریپت‌های تحلیلی شخص ثالث: بسیاری از برنامه‌های وب اسکریپت‌هایی از گوگل آنالیتیکس، هات‌جر و... جاسازی می‌کنند که ورودی‌های کاربر را به‌صورت غیرفعال ضبط می‌کنند.

معماری ما: بدون لمس سرور

GeneratePassword.site از ابتدا با یک اصل غیرقابل‌مذاکره طراحی شد: رمز عبور شما هرگز دستگاهتان را ترک نمی‌کند. دقیقاً این‌طور کار می‌کند:

  1. سایت را در مرورگرتان باز می‌کنید.
  2. مرورگرتان فایل‌های HTML، CSS و JavaScript را دانلود می‌کند.
  3. تمام منطق تولید رمز عبور منحصراً داخل مرورگر شما با استفاده از Web Crypto API اجرا می‌شود.
  4. رمز تولیدشده روی صفحه شما نمایش داده می‌شود و هرگز به جایی ارسال نمی‌شود.
  5. وقتی صفحه را می‌بندید یا رفرش می‌کنید، رمز برای همیشه از بین می‌رود.

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

بدون پایگاه داده واقعاً یعنی چه؟

بیایید فکر کنیم چه اتفاقاتی می‌تواند برای یک سرویس با پایگاه داده بیفتد:

  • حملات SQL Injection: یک آسیب‌پذیری در کد سرور می‌تواند تمام رکوردهای ذخیره‌شده را افشا کند.
  • تهدیدات داخلی: یک کارمند یا پیمانکار ناخلف با دسترسی به پایگاه داده می‌تواند رکوردها را استخراج کند.
  • نقض داده: پیکربندی اشتباه ابر، پنل‌های ادمین در معرض خطر و نرم‌افزارهای وصله‌نشده میلیاردها رکورد را در سراسر جهان افشا کرده‌اند.
  • درخواست‌های قانونی: دولت‌ها و مجری قانون می‌توانند شرکت‌ها را مجبور کنند داده‌های ذخیره‌شده را تحویل دهند.
  • فروش داده به اشخاص ثالث: بعضی شرکت‌ها داده کاربران را به تبلیغ‌کنندگان می‌فروشند.

وقتی هیچ پایگاه داده‌ای وجود ندارد، هیچ‌کدام از این بردارهای حمله اعمال نمی‌شوند. نمی‌توانید داده‌ای که وجود ندارد را بدزدید.

موتور رمزنگاری: Web Crypto API

مولد ما از Math.random() استفاده نمی‌کند — تابعی که قابل پیش‌بینی بوده و برای اهداف امنیتی مناسب نیست. به‌جای آن از crypto.getRandomValues() استفاده می‌کنیم که رابط بومی مرورگر با مولد اعداد شبه‌تصادفی رمزنگاری‌شده سیستم‌عامل (CSPRNG) است. این همان منبع آنتروپی است که در اتصالات TLS، تولید کلید SSH و ابزارهای رمزگذاری دیسک استفاده می‌شود.

معماری باز: می‌توانید همه چیز را تأیید کنید

چون ابزار ما کاملاً در مرورگر شما اجرا می‌شود، می‌توانید ادعاهای ما را بدون اینکه اصلاً به ما اعتماد کنید تأیید کنید. ابزار توسعه‌دهنده مرورگرتان را باز کنید (F12)، به تب Network بروید و ببینید که هیچ داده رمزعبوری در طول تولید ارسال نمی‌شود. حتی می‌توانید صفحه را دانلود کرده و کاملاً آفلاین اجرا کنید — بدون هیچ اتصال اینترنتی کار می‌کند.

نتیجه: بدون پایگاه داده = بدون ریسک

دفعه بعد که یک مولد رمز عبور را ارزیابی می‌کنید، سؤال سخت را بپرسید: آیا این ابزار می‌تواند رمز من را ببیند یا ذخیره کند؟ اگر جواب بله است، یا شاید هم، ابزار دیگری انتخاب کنید. جواب ما یک خیر قاطع، قابل‌تأیید و معماری است. این بزرگ‌ترین ویژگی امنیتی ماست.