در ۲ دقیقه آن را بررسی کنید
در مرورگر خود F12 را فشار دهید. بدون نصب هیچ چیزی. بدون نیاز به دانش برنامهنویسی.
| ادعا | نحوه تایید آن | تب |
|---|---|---|
| هیچ کوکی از هیچ نوعی وجود ندارد | Application → Cookies → خالی است. Solo2 هیچ کوکی نصب نمیکند. نشست شما در localStorage نگه داشته میشود، نه در کوکیها. بدون _ga |
Application |
| هیچ سرویس شخص ثالثی در اپلیکیشن وجود ندارد | Network → فیلتر کردن بر اساس دامنه → فقط درخواستها به solo2.net |
Network |
| آنالیتیکس فقط در صفحه معرفی (landing) است، نه در اپلیکیشن | Network → در /* |
Network |
| تاریخچه شما در مرورگر شما زندگی میکند | Application → IndexedDB → solo2-vault-{userId} |
Application |
| لیست مخاطبین فقط محلی است | Application → IndexedDB → store pares |
Application |
| بدون CDNهای خارجی | Network → تمام فایلهای JS/CSS از همان دامنه بارگذاری میشوند. هیچ cdn.jsdelivr.net وجود ندارد. |
Network |
| نشستها حداکثر ۲۴ ساعته هستند | Application → localStorage → solo2_session |
Application |
| میتوانید ببینید از چه نوع اتصالی استفاده میکنید | در رابط کاربری چت: نشانگر P2P (سبز) در مقابل Mirror/TURN (نارنجی) در هر لحظه قابل مشاهده است. | UI |
| Umami بدون کوکی است | Application → Cookies → هیچ کوکی از stats.menzuri.com ظاهر نمیشود. |
Application |
| کلید اصلی شما به صورت تصادفی تولید میشود | Application → هنگام ثبتنام، Solo2 بیست و چهار کلمه منحصر به فرد تولید میکند. آنها از رمز عبور شما مشتق نمیشوند — آنها یک کلید مستقل با ۲۵۶ بیت آنتروپی واقعی هستند. | Application |
اگر نحوه استفاده از DevTools را میدانید
تاییدهایی که نیاز به دانش فنی دارند. اگر HTTP، WebRTC و رمزنگاری پایه را درک میکنید، میتوانید این ادعاها را تایید کنید.
| ادعا | نحوه تایید آن |
|---|---|
| پیامهای رمزگذاری شده E2E | Network → درخواستها به /cmd |
| سیگنالهای WebRTC رمزگذاری شده E2E | Network → پیامهای سیگنال به عنوان بلابهای باینری رمزگذاری شده ارسال میشوند. آنها JSON قابل خواندن با offer نیستند. |
| کلید اصلی مستقل از رمز عبور است | Network → لاگین یک wrapped_master_key دریافت میکند. |
| پدینگ یکنواخت در آینه (mirror) | Network → بستههای WebSocket/DataChannel هنگام استفاده از ریلی (relay) اندازه ثابتی دارند. اندازهها را در تب Network بررسی کنید. |
| رمز عبور محافظت شده (به صورت متن ساده ارسال نمیشود) | Network → لاگین یک هش ارسال میکند، نه متن ساده. شما نمیتوانید تایید کنید سرور از چه الگوریتمی استفاده میکند (Argon2id)، اما میتوانید تایید کنید رمز عبور اصلی شما هرگز از مرورگر خارج نمیشود. |
| درخواستهای پیوند پس از ۳ روز منقضی میشوند | یک درخواست ایجاد کنید، به آن پاسخ ندهید، پس از ۳ روز بررسی کنید که ناپدید شده است. نیاز به صبر و دو حساب کاربری دارد. |
| اعلانهای Push رمزگذاری شده | Network → درخواستهای push به Service Worker رمزگذاری شده میرسند (استاندارد Web Push). محتوای رمزگذاری شده در تب Network دیده میشود. |
| اتصال P2P مستقیم در مقابل ریلی (relay) | chrome://webrtc-internals/ |
این را نمیتوانید تایید کنید
ما منافق خواهیم بود اگر بگوییم همه چیز قابل تایید است. این ادعاها مستلزم این است که به ما اعتماد کنید — یا منتظر بمانید تا کد را منتشر کنیم.
| ادعا | چرا قابل تایید نیست |
|---|---|
| Double Ratchet با چرخش کلید | عملیات رمزنگاری در یک فایل باینری WASM انجام میشود. کاربر بارگذاری آن را میبیند، اما نمیتواند بخواند چه الگوریتمی اجرا میکند. |
| کلید اصلی با آنتروپی واقعی (۲۵۶ بیت) تولید میشود | تولید از crypto.getRandomValues در مرورگر استفاده میکند. شما میبینید که ۲۴ کلمه تولید میشوند، اما نمیتوانید از F12 کیفیت آنتروپی یا امن بودن CSPRNG را تایید کنید. |
| X25519 + Ed25519 + ChaCha20-Poly1305 | همان مشکل: پشته رمزنگاری داخل WASM است. منحنیها و الگوریتمها را نمیتوان از مرورگر تایید کرد. |
| سرور "کاملاً نابینا" است | شما میتوانید تایید کنید که کلاینت دادههای قابل خواندن ارسال نمیکند. آنچه سرور با متادیتاهای اتصال (IPها، زمانها) انجام میدهد، نیاز به اعتماد یا حسابرسی سرور دارد. |
| سرور روابط را پس از پیوند ذخیره نمیکند | نیاز به دسترسی به کد و پایگاه داده سرور دارد. |
| IPها ثبت نمیشوند | شما نمیتوانید تایید کنید سرور چه چیزی را در لاگهای خود ثبت میکند. |
| کلیدها با هر پیام میچرخند | در داخل WASM اتفاق میافتد. شما میبینید که پیامها ارسال میشوند، اما نمیتوانید چرخش کلیدها را مشاهده کنید. |
| دادههای حذف شده واقعاً ناپدید میشوند | شما میتوانید از IndexedDB محلی حذف کنید، اما نمیتوانید تایید کنید که سرور کپیها را نگه نمیدارد (اگرچه مانیفست میگوید هرگز آنها را نداشته است). |
چرا WASM یک مانع واقعی است
لایه رمزنگاری Solo2 در WebAssembly کامپایل شده است — یک فرمت باینری که مرورگر شما اجرا میکند اما نمیتوانید آن را به صورت متن بخوانید. این بدان معناست که شما نمیتوانید از F12 تایید کنید از چه الگوریتمی استفاده میکنیم.
فایل JavaScript فشرده شده (که برای رابط کاربری استفاده میکنیم) قابل بازگشت است: مرورگر میتواند آن را دوباره فرمت کند و ساختار کد قابل خواندن است. این یک مانع عملی است، نه یک سد واقعی. اما WASM کامپایل شده از Zig به طور اساسی متفاوت است.
ما میگوییم که این Double Ratchet با X25519 است. شما میتوانید به حرف ما اعتماد کنید، یا میتوانید منتظر بمانید تا کد منبع لایه رمزنگاری را منتشر کنیم تا هر کسی بتواند آن را حسابرسی کند. ما در حال کار روی آن هستیم.
ما چه میکنیم تا بتوانید بیشتر اعتماد کنید
انتشار هشهای SHA-256 فایلهای .wasm
ما هش رمزنگاری هر فایل WASM را در تولید منتشر خواهیم کرد. به این ترتیب هر حسابرسی میتواند تایید کند که فایل باینری که در مرورگر شما اجرا میشود دقیقاً با فایلی که ما کامپایل کردهایم مطابقت دارد.
باز کردن لایه رمزنگاری به عنوان متنباز
انتشار کد منبع لایه رمزنگاری (Zig) به عنوان یک مخزن عمومی. همان مدل Signal: پروتکل رمزنگاری باز، بقیه کدها بسته. هر کسی میتواند کد منبع را کامپایل کرده و هش فایل .wasm حاصل را با فایلی که در تولید است مقایسه کند.
امنیت وابسته به تاریکی نیست
مدل امنیتی ما طوری طراحی شده است که حتی اگر کد منبع عمومی باشد کار کند. اگر امنیت وابسته به این باشد که هیچکس نتواند کد را بخواند، امنیت نخواهد بود — بلکه امید خواهد بود.
۵ لایه امنیتی مستند شده
رمز عبور (دسترسی به سرور)، ۲۴ کلمه (کلید اصلی واقعی)، راز دستگاه (حفاظت از خزانه) و چرخش Double Ratchet. هر لایه مستقل و در مانیفست شفافیت ما قابل تایید است.