تحقّق في دقيقتين
اضغط F12 في متصفحك. بدون تثبيت أي شيء. بدون معرفة البرمجة.
| التصريح | كيفية التحقق | التبويب |
|---|---|---|
| لا توجد ملفات تعريف ارتباط من أي نوع | Application → Cookies → فارغ. Solo2 لا يُثبّت أي ملفات تعريف ارتباط. يتم الحفاظ على جلستك في localStorage، وليس في ملفات تعريف الارتباط. بدون _ga |
Application |
| لا توجد خدمات أطراف ثالثة في التطبيق | Network → فلتر حسب النطاق → فقط طلبات إلى solo2.net |
Network |
| التحليلات فقط في صفحة العرض، وليس في التطبيق | Network → في /* |
Network |
| سجل محادثاتك يعيش في متصفحك | Application → IndexedDB → solo2-vault-{userId} |
Application |
| قائمة جهات الاتصال محلية فقط | Application → IndexedDB → store pares |
Application |
| بدون شبكات توصيل محتوى خارجية | Network → جميع ملفات JS/CSS تُحمَّل من نفس النطاق. لا يوجد cdn.jsdelivr.net |
Network |
| جلسات بحد أقصى 24 ساعة | Application → localStorage → solo2_session |
Application |
| يمكنك رؤية نوع الاتصال الذي تستخدمه | في واجهة الدردشة: مؤشر P2P (أخضر) مقابل Mirror/TURN (برتقالي) مرئي في جميع الأوقات | UI |
| Umami لا يستخدم ملفات تعريف الارتباط | Application → Cookies → لا يظهر أي ملف تعريف ارتباط من stats.menzuri.com |
Application |
| مفتاحك الرئيسي يُنشأ عشوائياً | Application → عند التسجيل، يُنشئ Solo2 24 كلمة فريدة. لا تُشتق من كلمة مرورك — إنها مفتاح مستقل بـ256 بت من العشوائية الحقيقية | Application |
إذا كنت تعرف استخدام DevTools
تحققات تتطلب معرفة تقنية. إذا كنت تفهم HTTP وWebRTC والتشفير الأساسي، يمكنك تأكيد هذه التصريحات.
| التصريح | كيفية التحقق |
|---|---|
| رسائل مُشفَّرة E2E | Network → الطلبات إلى /cmd |
| إشارات WebRTC مُشفَّرة E2E | Network → رسائل الإشارة تنتقل ككتل ثنائية مُشفَّرة. ليست JSON مقروء مع offer |
| المفتاح الرئيسي مستقل عن كلمة المرور | Network → تسجيل الدخول يتلقى wrapped_master_key |
| حشو موحّد في المرآة | Network → حزم WebSocket/DataChannel بحجم ثابت عند استخدام relay. افحص الأحجام في تبويب Network |
| كلمة المرور محمية (لا تنتقل كنص عادي) | Network → تسجيل الدخول يُرسل بصمة (hash)، وليس نصاً عادياً. لا يمكنك التحقق من الخوارزمية المُستخدمة في الخادم (Argon2id)، لكن يمكنك التأكد من أن كلمة مرورك الأصلية لا تُغادر المتصفح أبداً |
| طلبات الربط تنتهي صلاحيتها في 3 أيام | أنشئ طلباً، لا تُجب عليه، تحقّق بعد 3 أيام أنه اختفى. يتطلب صبراً وحسابين |
| إشعارات الدفع مُشفَّرة | Network → طلبات push إلى Service Worker تصل مُشفَّرة (معيار Web Push). يمكن رؤية الحمولة المُشفَّرة في تبويب Network |
| اتصال P2P مباشر مقابل relay | chrome://webrtc-internals/ |
هذا لا يمكنك التحقق منه
سنكون منافقين لو قلنا إن كل شيء قابل للتحقق. هذه التصريحات تتطلب أن تثق بنا — أو أن تنتظر حتى ننشر الكود المصدري.
| التصريح | لماذا لا يمكن التحقق |
|---|---|
| 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 مختلف جذرياً
نقول إنه Double Ratchet مع X25519. يمكنك الوثوق بكلمتنا، أو يمكنك الانتظار حتى ننشر الكود المصدري لطبقة التشفير ليتمكن أي شخص من تدقيقه. نعمل على ذلك.
ما نفعله لتتمكن من الوثوق أكثر
نشر بصمات SHA-256 لملفات .wasm
سننشر البصمة التشفيرية (hash) لكل ملف WASM في الإنتاج. هكذا يستطيع أي مُدقّق التحقق من أن الملف الثنائي المُنفَّذ في متصفحك يتطابق تماماً مع ما جمّعناه.
فتح طبقة التشفير ككود مفتوح المصدر
نشر الكود المصدري لطبقة التشفير (Zig) كمستودع عام. نفس نموذج Signal: بروتوكول تشفير مفتوح، بقية الكود مغلقة. يستطيع أي شخص تجميع الكود المصدري ومقارنة بصمة ملف .wasm الناتج مع الموجود في الإنتاج.
الأمان لا يعتمد على الغموض
نموذج أماننا مُصمَّم ليعمل حتى لو كان الكود المصدري عاماً. إذا كان الأمان يعتمد على عدم قدرة أحد على قراءة الكود، فلن يكون أماناً — بل أمنية.
5 طبقات أمان مُوثَّقة
كلمة المرور (الوصول إلى الخادم)، 24 كلمة (المفتاح الرئيسي الحقيقي)، سر الجهاز (حماية الخزينة) وتبديل Double Ratchet. كل طبقة مستقلة وقابلة للتحقق في بيان الشفافية.