تحقّق في دقيقتين
اضغط F12 في متصفحك. بدون تثبيت أي شيء. بدون معرفة البرمجة.
| التصريح | كيفية التحقق | التبويب |
|---|---|---|
| لا توجد ملفات تعريف ارتباط تتبّعية | Application → Cookies → فقط ملف تعريف ارتباط جلسة تقني. بدون _ga, _fbp, _gid ni similares |
Application |
| لا توجد خدمات أطراف ثالثة في التطبيق | Network → فلتر حسب النطاق → فقط طلبات إلى solo2.net. Cero llamadas a Google, Facebook, Amazon, etc. |
Network |
| التحليلات فقط في صفحة العرض، وليس في التطبيق | Network → في /info/* se ve stats.menzuri.com. En la app (/) no aparece ningún script de analytics |
Network |
| سجل محادثاتك يعيش في متصفحك | Application → IndexedDB → solo2-vault-{userId} con stores messages, files, etc. Datos locales |
Application |
| قائمة جهات الاتصال محلية فقط | Application → IndexedDB → store pares existe localmente. Network → no hay petición de "contacts" ni "friends" al servidor |
Application |
| بدون شبكات توصيل محتوى خارجية | Network → جميع ملفات JS/CSS تُحمَّل من نفس النطاق. لا يوجد cdn.jsdelivr.net, cdnjs.cloudflare.com, unpkg.com |
Network |
| جلسات بحد أقصى 24 ساعة | Application → localStorage → solo2_session expira. Puedes cerrar sesión y ver que desaparece |
Application |
| يمكنك رؤية نوع الاتصال الذي تستخدمه | في واجهة الدردشة: مؤشر P2P (أخضر) مقابل Mirror/TURN (برتقالي) مرئي في جميع الأوقات | UI |
| Umami لا يستخدم ملفات تعريف الارتباط | Application → Cookies → لا يظهر أي ملف تعريف ارتباط من stats.menzuri.com incluso tras visitar el landing |
Application |
| مفتاحك الرئيسي يُنشأ عشوائياً | Application → عند التسجيل، يُنشئ Solo2 24 كلمة فريدة. لا تُشتق من كلمة مرورك — إنها مفتاح مستقل بـ256 بت من العشوائية الحقيقية | Application |
إذا كنت تعرف استخدام DevTools
تحققات تتطلب معرفة تقنية. إذا كنت تفهم HTTP وWebRTC والتشفير الأساسي، يمكنك تأكيد هذه التصريحات.
| التصريح | كيفية التحقق |
|---|---|
| رسائل مُشفَّرة E2E | Network → الطلبات إلى /cmd contienen payloads binarios opacos (zcatpack). El contenido no es texto legible. No puedes confirmar qué algoritmo se usa, pero sí que no viaja en claro |
| إشارات WebRTC مُشفَّرة E2E | Network → رسائل الإشارة تنتقل ككتل ثنائية مُشفَّرة. ليست JSON مقروء مع offer/answer en claro |
| المفتاح الرئيسي مستقل عن كلمة المرور | Network → تسجيل الدخول يتلقى wrapped_master_key cifrado del servidor. El cliente lo descifra localmente con la contraseña. La clave maestra nunca viaja en claro. Cambiar contraseña no cambia la identidad |
| حشو موحّد في المرآة | Network → حزم WebSocket/DataChannel بحجم ثابت عند استخدام relay. افحص الأحجام في تبويب Network |
| كلمة المرور محمية (لا تنتقل كنص عادي) | Network → تسجيل الدخول يُرسل بصمة (hash)، وليس نصاً عادياً. لا يمكنك التحقق من الخوارزمية المُستخدمة في الخادم (Argon2id)، لكن يمكنك التأكد من أن كلمة مرورك الأصلية لا تُغادر المتصفح أبداً |
| طلبات الربط تنتهي صلاحيتها في 3 أيام | أنشئ طلباً، لا تُجب عليه، تحقّق بعد 3 أيام أنه اختفى. يتطلب صبراً وحسابين |
| إشعارات الدفع مُشفَّرة | Network → طلبات push إلى Service Worker تصل مُشفَّرة (معيار Web Push). يمكن رؤية الحمولة المُشفَّرة في تبويب Network |
| اتصال P2P مباشر مقابل relay | chrome://webrtc-internals/ muestra los ICE candidates y si la conexión es relay (TURN) o srflx/host (directa) |
هذا لا يمكنك التحقق منه
سنكون منافقين لو قلنا إن كل شيء قابل للتحقق. هذه التصريحات تتطلب أن تثق بنا — أو أن تنتظر حتى ننشر الكود المصدري.
| التصريح | لماذا لا يمكن التحقق |
|---|---|
| Double Ratchet مع تبديل المفاتيح | العمليات التشفيرية تحدث داخل ملف WASM ثنائي. المستخدم يرى تحميله، لكنه لا يستطيع قراءة الخوارزمية المُنفَّذة |
| المفتاح الرئيسي يُنشأ بعشوائية حقيقية (256 بت) | التوليد يستخدم crypto.getRandomValues داخل المتصفح. يمكنك رؤية توليد 24 كلمة، لكنك لا تستطيع التحقق من F12 من جودة العشوائية ولا من أن CSPRNG آمن |
| X25519 + Ed25519 + ChaCha20-Poly1305 | نفس المشكلة: حزمة التشفير داخل WASM. لا يمكن تأكيد المنحنيات ولا الخوارزميات من المتصفح |
| الخادم "أعمى تماماً" | يمكنك التحقق من أن العميل لا يُرسل بيانات مقروءة. ما يفعله الخادم بالبيانات الوصفية للاتصال (عناوين IP، الطوابع الزمنية) يتطلب ثقة أو تدقيق الخادم |
| الخادم لا يحفظ العلاقات بعد الربط | يتطلب الوصول إلى كود وقاعدة بيانات الخادم |
| عناوين IP لا تُسجَّل | لا يمكنك التحقق مما يُسجّله الخادم في سجلاته |
| المفاتيح تتبدّل مع كل رسالة | يحدث داخل WASM. ترى إرسال الرسائل، لكنك لا تستطيع مراقبة تبديل المفاتيح |
| البيانات المحذوفة تختفي فعلاً | يمكنك الحذف من IndexedDB المحلية، لكنك لا تستطيع التحقق من أن الخادم لا يحتفظ بنسخ (رغم أن البيان يقول إنه لم يملكها قط) |
لماذا WASM حاجز حقيقي
طبقة التشفير في Solo2 مُجمَّعة في WebAssembly — صيغة ثنائية ينفّذها متصفحك لكنك لا تستطيع قراءتها كنص. هذا يعني أنك لا تستطيع التحقق من F12 من الخوارزمية المُستخدمة.
JavaScript المُصغَّر (الذي نستخدمه للواجهة) قابل للعكس: يمكن للمتصفح إعادة تنسيقه وبنية الكود مقروءة. إنه عائق عملي، وليس حاجزاً حقيقياً. لكن WASM المُجمَّع من Zig مختلف جذرياً — es un binario de bajo nivel donde los nombres originales desaparecen y las optimizaciones del compilador transforman el código más allá de lo reconocible.
نقول إنه Double Ratchet مع X25519. يمكنك الوثوق بكلمتنا، أو يمكنك الانتظار حتى ننشر الكود المصدري لطبقة التشفير ليتمكن أي شخص من تدقيقه. نعمل على ذلك.
ما نفعله لتتمكن من الوثوق أكثر
نشر بصمات SHA-256 لملفات .wasm
سننشر البصمة التشفيرية (hash) لكل ملف WASM في الإنتاج. هكذا يستطيع أي مُدقّق التحقق من أن الملف الثنائي المُنفَّذ في متصفحك يتطابق تماماً مع ما جمّعناه.
فتح طبقة التشفير ككود مفتوح المصدر
نشر الكود المصدري لطبقة التشفير (Zig) كمستودع عام. نفس نموذج Signal: بروتوكول تشفير مفتوح، بقية الكود مغلقة. يستطيع أي شخص تجميع الكود المصدري ومقارنة بصمة ملف .wasm الناتج مع الموجود في الإنتاج.
الأمان لا يعتمد على الغموض
نموذج أماننا مُصمَّم ليعمل حتى لو كان الكود المصدري عاماً. إذا كان الأمان يعتمد على عدم قدرة أحد على قراءة الكود، فلن يكون أماناً — بل أمنية.
5 طبقات أمان مُوثَّقة
كلمة المرور (الوصول إلى الخادم)، 24 كلمة (المفتاح الرئيسي الحقيقي)، سر الجهاز (حماية الخزينة) وتبديل Double Ratchet. كل طبقة مستقلة وقابلة للتحقق في بيان الشفافية.