وبلاگ · ۵ آوریل ۲۰۲۶

چگونه Solo2 متصل می‌شود بدون اینکه سرور چیزی بداند

سرور یک کار انجام می‌دهد: به دو دستگاه کمک می‌کند تا یکدیگر را پیدا کنند. بعد ناپدید می‌شود.

سرور چه چیزی درباره تو می‌داند

بیایید از اصول شروع کنیم. سرور Solo2 دقیقاً سه چیز درباره تو می‌داند: نام کاربری‌ات، شناسه منحصربه‌فردت و هش رمز عبورت. هش یک تبدیل ریاضی برگشت‌ناپذیر است — سرور می‌تواند تأیید کند که رمز عبورت صحیح است بدون اینکه بداند چیست. رمز عبور واقعی‌ات فقط در ذهنت و روی دستگاهت وجود دارد.

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

صندوق‌های پستی

دیواری از صندوق‌های پستی شماره‌دار را تصور کن، مثل یک اداره پست قدیمی. وقتی اپلیکیشنت می‌خواهد با کسی ارتباط برقرار کند، یادداشتی در صندوق پستی می‌گذارد که می‌گوید 'می‌خواهم با کاربر X صحبت کنم'. نه بیشتر. نمی‌گوید تو کی هستی. نمی‌گوید درباره چه می‌خواهی صحبت کنی. فقط یک یادداشت در صندوق پستی.

به‌طور دوره‌ای، تمام اپلیکیشن‌های متصل به Solo2 صندوق‌های پستی را بررسی می‌کنند تا ببینند آیا کسی یادداشتی برایشان گذاشته است. مثل این است که سری به اداره پست بزنی و بپرسی: 'چیزی برای من هست؟'. اگر مخاطبت یادداشتت را پیدا کند، از سرور آدرس IP‌ای که گذاشته‌ای را می‌خواهد. سرور آن را ارائه می‌دهد و آن اطلاعات فوراً از حافظه پاک می‌شود. هرگز روی هیچ دیسکی نوشته نمی‌شود. در حافظه موقت سرور برای میلی‌ثانیه‌های لازم برای پاسخ‌دادن زندگی می‌کند.

از آن لحظه به بعد، سرور ناپدید می‌شود

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

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

مکالمه قبل از شروع هم امن است

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

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

این در عمل چه معنایی دارد

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

دفعه بعد که کسی بهت گفت اپلیکیشنی 'پیام‌هایت را سرتاسری رمزنگاری می‌کند'، بپرس با همه چیز دیگر چه اتفاقی می‌افتد. چه کسی می‌داند با چه کسی صحبت می‌کنی. چه کسی می‌داند در چه ساعتی. چه کسی می‌داند چقدر مکرر. اگر جواب 'سرور ما، ولی ازش برای چیز بدی استفاده نمی‌کنیم' باشد — آن یک قول است. در Solo2، جواب متفاوت است: هیچ‌کس نمی‌داند. چون کسی نیست که بپرسی.