Hacker News

از کلیدهای عبور برای رمزگذاری اطلاعات کاربر استفاده نکنید

نظرات

1 min read Via blog.timcappalli.me

Mewayz Team

Editorial Team

Hacker News

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

احراز هویت و رمزگذاری اساساً کارهای متفاوتی هستند

احراز هویت به یک سوال پاسخ می دهد: "آیا شما همانی هستید که ادعا می کنید هستید؟" رمزگذاری پاسخ کاملاً متفاوتی را می دهد: "آیا این داده ها می توانند برای همه غیر از اشخاص مجاز غیرقابل خواندن باقی بمانند؟" این دو مشکل در اصول رمزنگاری مشترک هستند، اما الزامات مهندسی به شدت متفاوت است. احراز هویت باید یک بار در هر جلسه اتفاق بیفتد، می تواند شکست های گاه به گاه را با بازگردانی های زیبا تحمل کند، و نیازی به تولید خروجی یکسان در هر بار نیست. رمزگذاری مستلزم دسترسی قطعی و قابل تکرار کلید در کل طول عمر داده است - که می تواند سال ها یا دهه ها باشد.

هنگامی که با یک کلید عبور احراز هویت می‌کنید، دستگاه شما یک امضای رمزنگاری ایجاد می‌کند که ثابت می‌کند کلید خصوصی مرتبط با حساب خود را در اختیار دارید. سرور این امضا را تأیید می کند و اجازه دسترسی می دهد. در هیچ نقطه ای سرور - یا حتی برنامه شما - به خود مواد کلید خصوصی دسترسی پیدا نمی کند. این یک ویژگی است، نه یک محدودیت. کل مدل امنیتی کلیدهای عبور به کلید خصوصی بستگی دارد که هرگز از محاصره امن دستگاه شما خارج نمی شود. اما رمزگذاری مستلزم آن است که از یک کلید استفاده کنید برای تبدیل داده ها، و بعداً از همان کلید (یا همتای آن) برای معکوس کردن تبدیل استفاده کنید. اگر نمی توانید به طور قابل اعتماد به کلید دسترسی پیدا کنید، نمی توانید به طور قابل اعتماد رمزگشایی کنید.

پلتفرم‌هایی مانند Mewayz که اطلاعات حساس کسب‌وکار را مدیریت می‌کنند - فاکتورها، سوابق حقوق و دستمزد، مخاطبین CRM، اسناد منابع انسانی در 207 ماژول - به استراتژی‌های رمزگذاری نیاز دارند که بر روی کلیدهایی بادوام، قابل بازیابی و به‌طور مداوم در دسترس باشند. ساختن آن بر روی پایه ای که به طور خاص برای جلوگیری از دسترسی به کلید طراحی شده است، یک تناقض معماری است.

چرا کلیدهای عبور در برابر استفاده به عنوان کلیدهای رمزگذاری مقاومت می کنند

مشخصات WebAuthn، که زیربنای کلیدهای عبور است، عمداً با محدودیت هایی طراحی شده است که استفاده از رمزگذاری را غیرعملی می کند. درک این محدودیت‌ها نشان می‌دهد که چرا این شکافی نیست که مهندسی هوشمند بتواند آن را پر کند - این یک مرز طراحی اساسی است.

  • بدون صادرات کلید: کلیدهای خصوصی ایجاد شده در هنگام ثبت کلید عبور در محفظه های امن با پشتوانه سخت افزاری (TPM، Secure Enclave یا مشابه) ذخیره می شوند. سیستم عامل و APIهای مرورگر هیچ مکانیزمی برای استخراج مواد کلید خام ارائه نمی دهند. می‌توانید از کلید بخواهید چیزی را امضا کند، اما نمی‌توانید خود کلید را بخوانید.
  • تولید کلید غیر قطعی: ایجاد یک کلید عبور برای یک کاربر در دستگاهی دیگر، یک جفت کلید کاملا متفاوت تولید می‌کند. هیچ عبارت seed، هیچ مسیر مشتق و هیچ راهی برای بازسازی همان کلید در دستگاه دیگری وجود ندارد. هر ثبت از نظر رمزنگاری مستقل است.
  • در دسترس بودن محدود به دستگاه: حتی با همگام‌سازی کلید عبور (iCloud Keychain، Google Password Manager)، در دسترس بودن به مشارکت اکوسیستم بستگی دارد. کاربری که در آیفون ثبت نام می کند و بعداً به اندروید تغییر می کند ممکن است دسترسی خود را از دست بدهد. کاربری که دستگاهش گم شده، دزدیده شده یا به تنظیمات کارخانه بازنشانی شده است، با همین مشکل مواجه است.
  • فقط پاسخ به چالش: WebAuthn API navigator.credentials.get() را نشان می‌دهد که یک ادعای امضا شده را برمی‌گرداند نه مواد کلید خام. شما یک امضا در چالش ارائه شده توسط سرور دریافت می کنید — برای اثبات هویت مفید است، برای استخراج یک کلید رمزگذاری بی فایده است.
  • بدون انعطاف الگوریتم: کلیدهای عبور معمولاً از ECDSA با منحنی P-256 استفاده می‌کنند. حتی اگر بتوانید به کلید دسترسی داشته باشید، ECDSA یک الگوریتم امضا است، نه یک الگوریتم رمزگذاری. شما به تبدیل‌های اضافی (توافقنامه کلید ECDH، اشتقاق KDF) نیاز دارید که API در این زمینه پشتیبانی نمی‌کند.

برخی از توسعه‌دهندگان راه‌حل‌هایی پیشنهاد کرده‌اند - به عنوان مثال، از پسوند PRF (عملکرد شبه تصادفی) به WebAuthn برای استخراج کلیدهای متقارن در حین احراز هویت. در حالی که این برنامه افزودنی در مشخصات وجود دارد، پشتیبانی مرورگر ناسازگار است، در بسیاری از پلتفرم‌های تلفن همراه در دسترس نیست و همچنان مشکل اتصال دستگاه را به ارث می‌برد. کلیدی که از طریق PRF در یک دستگاه به دست می‌آید را نمی‌توان در دستگاه دیگری با کلید عبور متفاوت حتی برای یک حساب کاربری تکرار کرد.

سناریوی از دست دادن داده که هیچکس نمی خواهد ارسال کند

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

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

قانون اصلی طراحی سیستم رمزگذاری: اگر استراتژی مدیریت کلید شما دارای هر نقطه شکستی است که دسترسی به داده‌های کاربر را برای همیشه از بین می‌برد، یک ویژگی امنیتی ایجاد نکرده‌اید — یک مکانیسم از دست دادن داده با مراحل اضافی ساخته‌اید.

برای کسب‌وکاری که از طریق یک پلتفرم فعالیت می‌کند - مدیریت 50 رابطه با مشتری در یک CRM، پردازش حقوق و دستمزد ماهانه برای 30 کارمند، ردیابی ناوگان وسایل نقلیه - از دست دادن دائمی داده‌ها از یک تلفن حذف شده یک مشکل UX جزئی نیست. این یک فاجعه تداوم کسب و کار است. دقیقاً به همین دلیل است که معماری Mewayz مکانیسم‌های احراز هویت را از لایه‌های حفاظت از داده جدا می‌کند و تضمین می‌کند که هیچ دستگاهی نمی‌تواند دسترسی به اطلاعات حیاتی کسب‌وکار را در هر یک از ماژول‌های یکپارچه آن به خطر بیندازد.

چیزی که باید به جای آن استفاده کنید

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

رمزگذاری سمت سرور با کلیدهای مدیریت‌شده عملی‌ترین انتخاب برای اکثر برنامه‌ها باقی مانده است. پلتفرم شما با استفاده از کلیدهایی که از طریق یک سرویس مدیریت کلید (KMS) مناسب مدیریت می شوند - AWS KMS، Google Cloud KMS، HashiCorp Vault یا مشابه، داده ها را در حالت استراحت رمزگذاری می کند. کاربر احراز هویت (در صورت تمایل با کلیدهای عبور) و سرور به صورت شفاف رمزگذاری و رمزگشایی را انجام می دهد. این روشی است که بیشتر پلتفرم‌های SaaS از داده‌ها محافظت می‌کنند، و این کار به این دلیل است که کلیدها بادوام، پشتیبان‌گیری، قابل چرخش و مستقل از هر دستگاه کاربر هستند.

کلیدهای رمزگذاری مشتق شده از گذرواژه (با استفاده از Argon2id یا رمزگذاری برای استخراج کلید) زمانی مناسب هستند که به رمزگذاری با دانش صفر واقعی نیاز دارید، جایی که حتی سرور نمی‌تواند داده‌های کاربر را بخواند. مبادله این است که از دست دادن رمز عبور به معنای از دست دادن داده ها است، اما رمزهای عبور را می توان به خاطر سپردن، یادداشت کرد و در مدیران رمز عبور ذخیره کرد - آنها در یک محفظه سخت افزاری قفل نمی شوند. خدماتی مانند 1Password و Standard Notes به طور موثر از این رویکرد استفاده می کنند.

💡 DID YOU KNOW?

Mewayz replaces 8+ business tools in one platform

CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.

Start Free →
  1. از کلیدهای عبور (یا هر روش قوی) برای احراز هویت استفاده کنید — تأیید هویت کاربر.
  2. پس از احراز هویت، کلیدهای رمزگذاری را از طریق سیستم مدیریت کلید مجزا و هدفمند استخراج یا بازیابی کنید.
  3. اجرای مکانیسم‌های ذخیره یا بازیابی کلید — کلیدهای بازیابی، همگام‌سازی کلید چند دستگاهی، یا نگهداری کلید سازمانی برای حساب‌های تجاری.
  4. داده‌ها را در حالت استراحت و در حال انتقال با استفاده از AES-256-GCM یا XChaCha20-Poly1305 با کلیدهای KMS خود رمزگذاری کنید.
  5. کلیدها را به صورت دوره‌ای بچرخانید و پشتیبان‌گیری‌های رمزگذاری‌شده کلید را نگه دارید که از هر نقطه‌ای از خرابی باقی می‌ماند.

این جداسازی نگرانی‌ها فقط بهترین روش نیست - این تنها معماری است که به شما امکان می‌دهد روش‌های احراز هویت را مستقل از استراتژی رمزگذاری خود ارتقا دهید. هنگامی که کلیدهای عبور در نهایت تکامل می یابند یا با چیز بهتری جایگزین می شوند، داده های رمزگذاری شده شما کاملاً در دسترس باقی می مانند.

افزونه PRF: وعده و دام

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

در عمل، پسوند PRF با موانع پذیرش قابل توجهی مواجه است. از اوایل سال 2026، پشتیبانی در مرورگرها و پلتفرم ها به طور چشمگیری متفاوت است. پیاده سازی سافاری با کروم متفاوت است. بسیاری از دستگاه های اندرویدی اصلاً از آن پشتیبانی نمی کنند. کلیدهای امنیتی سخت افزاری پشتیبانی متناقضی دارند. برای هر پلتفرمی که به یک پایگاه کاربری متنوع خدمت می‌کند - و Mewayz به بیش از 138000 کاربر در هر سیستم عامل و نوع دستگاه اصلی خدمات ارائه می‌کند - ایجاد رمزگذاری بر روی یک ویژگی با در دسترس بودن تکه‌ای از نظر عملیاتی غیرقابل دفاع است.

به طور اساسی تر، PRF مشکل چند دستگاه را حل نمی کند. خروجی شبه تصادفی از کلید عبور خاص در دستگاه خاص مشتق شده است. کاربری که کلیدهای عبور را در لپ تاپ و تلفن خود ثبت می کند، دو خروجی PRF متفاوت برای یک حساب دریافت می کند. شما باید داده ها را با کلید مشتق شده از یک دستگاه رمزگذاری کنید و سپس به نوعی آن کلید را دوباره رمزگذاری کنید یا با دستگاه دیگر به اشتراک بگذارید - که به هر حال شما را به ساختن یک سیستم مدیریت کلید مناسب بازمی گرداند. در آن نقطه، کلید مشتق از کلید عبور بدون افزودن امنیت، پیچیدگی را اضافه می کند.

درس هایی برای سازندگان: از ابزار مناسب برای لایه مناسب استفاده کنید

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

کلیدهای عبور در هدف طراحی شده خود عالی هستند. آنها تصاحب حساب های مرتبط با فیشینگ را تا 99.9٪ در استقرار داخلی Google کاهش داده اند. آنها حملات پر کردن اعتبار را به طور کامل حذف می کنند. آنها تجربه ورود به سیستم را ارائه می دهند که به طور همزمان امن تر و راحت تر از رمزهای عبور است. این یک دستاورد قابل توجه است و کافی است. درخواست از کلیدهای عبور برای حل رمزگذاری مانند این است که از فایروال خود بخواهید به عنوان سیستم پشتیبان شما نیز عمل کند - این معماری را به اشتباه درک می کند.

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

دریافت امنیت بدون پیچیدگی بیش از حد

برای اکثر برنامه‌های کاربردی SaaS و پلت‌فرم‌های تجاری، توصیه عملی ساده است: کلیدهای عبور را با علاقه برای احراز هویت استفاده کنید، و رمزگذاری را کاملاً در سمت سرور با KMS مدیریت‌شده مدیریت کنید. این به کاربران شما بهترین تجربه ورود به سیستم را می‌دهد و در عین حال از داده‌های آن‌ها با زیرساخت‌هایی که به‌طور خاص برای دوام و بازیابی طراحی شده محافظت می‌کند.

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

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

سوالات متداول

چرا نمی توان از کلیدهای عبور برای رمزگذاری داده های کاربر استفاده کرد؟

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

اگر به هر حال سعی کنید داده ها را با کلیدهای عبور رمزگذاری کنید چه اتفاقی می افتد؟

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

توسعه دهندگان باید به جای کلیدهای عبور برای رمزگذاری داده ها از چه چیزی استفاده کنند؟

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

Mewayz چگونه احراز هویت و امنیت داده را برای مشاغل مدیریت می کند؟

Mewayz یک سیستم‌عامل تجاری ۲۰۷ ماژول با شروع قیمت ۱۹ دلار در ماه ارائه می‌کند که با استفاده از بهترین شیوه‌های صنعت، احراز هویت را از حفاظت از داده‌ها جدا می‌کند. به جای استفاده نادرست از کلیدهای عبور، پلتفرم app.mewayz.com لایه‌های رمزگذاری مناسب را در کنار جریان‌های ورود ایمن پیاده‌سازی می‌کند و تضمین می‌کند که کسب‌وکارها می‌توانند به طور قابل اعتمادی از داده‌های مشتری محافظت کنند، بدون اینکه سناریوهای قفل را که ناشی از تلفیق احراز هویت

با رمزگذاری است، محافظت کنند.