من یه مثال بزنم برای فهم این موضوع چون خیلی میتونه توی طراحی یه سیستم به ما کمک کنه که امن بشه
توی مهندسی نرمافزار میشه این ایده رو با یه تسک ساده فهمید: فرض کن قراره لاگین با کلید خصوصی پیادهسازی کنی.
طراحی ضعیف اینه که کاربر یه secret یا چیزی شبیه پسورد رو برای سرور بفرسته تا سرور چکش کنه. اینجا هر جایی که اون secret رد بشه، یه نقطهی خطره: لاگها، دیتابیس، ترافیک شبکه، یا حتی یه باگ ساده توی بکاند.
طراحی بهتر اینه که سرور یه متن تصادفی و یکبارمصرف به کاربر بده؛ کاربر اون رو با کلید خصوصی خودش امضا کنه، و سرور فقط امضا رو با کلید عمومی verify کنه.
یعنی کاربر ثابت میکنه «من صاحب این کلیدم»، بدون اینکه خود کلید خصوصی هیچوقت از دستگاهش خارج بشه.
ربطش به مقاله هم همینجاست: امنیت خوب یعنی سیستم رو طوری طراحی کنی که حتی اگر کسی وسط راه وایستاده باشه، چیزی برای دزدیدن گیرش نیاد. راز نباید محافظتشده منتقل بشه؛ بهتره اصلاً منتقل نشه.
@codehalics | کدهالیک
Post #645
702
کدهالیک | codehalic مقاله دربارهی یه ایدهی خیلی عجیب ولی باحال توی رمزنگاریه: اینکه گاهی «چیزی که نمیتونیم ثابت کنیم» میتونه خودش تبدیل بشه به ابزار امنیتی. اول از یه مفهوم به اسم اثبات بدون افشای اطلاعات یا Zero-Knowledge Proof شروع میکنه؛ یعنی من میخوام به تو ثابت کنم…
- ❤ 3