كيف يعمل

كيف يُبقي Crocodile محادثاتك ملكًا لك

جولة في البنية والبروتوكول بلغة بسيطة. يبدأ كل فصل بالفكرة؛ افتح «تحت الغطاء» للتفاصيل التقنية.

الفصل 1

أربعة أنواع من الأطراف

يوزّع Crocodile العمل بحيث لا يرى كلامك إلا من تتحدث معهم، أما الأجزاء التي يشغّلها غرباء فلا تراه أبدًا.

تطبيقك

يحتفظ بمفاتيحك، ويشفّر كل ما ترسله، ويفكّ تشفير ما تستلمه. سجل رسائلك يعيش هنا، وليس في أي مكان آخر.

يعرف: كل ما ترسله وتستلمه: فهو ملكك.

المضيف

في كل غرفة صوتية أو مساحة يُختار تطبيق أحد الأعضاء ليمرّر حركة البيانات المشفّرة إلى البقية. إنه عضو كأي عضو آخر.

يعرف: عناوين IP للأعضاء ومن يتحدث، ولا يعرف أبدًا ما يُقال.

خوادم التنسيق

مقاسم هاتف يشغّلها متطوعون: تخزّن الملفات الشخصية والمساحات، وتخبر بمن هو متصل، وتختار المضيفين. وتتّحد في شبكة واحدة.

يعرف: الملفات الشخصية والعضويات ومن هو متصل، ولا تعرف أبدًا ما يُقال.

الدليل

دليل هاتف لخوادم التنسيق، لتعرف التطبيقات الجديدة من أين تبدأ. لا يعرف شيئًا عن الناس.

يعرف: قائمة الخوادم فقط.

الفصل 2

حسابك مفتاح، لا كلمة مرور

عند تثبيت Crocodile ينشئ تطبيقك على حاسوبك سرًّا عشوائيًا طوله 32 بايت. ومنه ينشأ مفتاحان: أحدهما لتوقيع ما تنشره، والآخر لاستلام الرسائل المشفّرة. ومعرّف المستخدم الخاص بك هو بصمة لمفتاح التوقيع.

ولأن المعرّف محسوب من المفتاح، لا يستطيع خادم أن يضع مفتاحًا آخر وينتحل شخصيتك. لا كلمة مرور تُسرق، ولا إعادة تعيين يمكن انتزاعها بخداع فريق الدعم. يُعرض عليك السر مرة واحدة كمفتاح استرداد، ويبقى على أجهزتك مشفّرًا بسلسلة مفاتيح النظام.

تحت الغطاء
  • من البذرة ذات 32 بايت يُشتق مفتاح توقيع Ed25519 ومفتاح تشفير X25519. معرّف المستخدم هو أول 26 حرفًا من base32(SHA-256(المفتاح العام للتوقيع)).
  • ينشر كل جهاز سجل جهاز موقّعًا مع حزمة مفاتيح مسبقة (X25519 + ML-KEM-768) تُجدَّد أسبوعيًا. وتُحذف أسرار المفاتيح المسبقة القديمة بعد فترة سماح.
  • تتيح أرقام الأمان لشخصين مقارنة مفاتيحهما عبر قناة أخرى، كما في تطبيقات المراسلة الآمنة الأخرى.
  • تُخزّن البيانات المحلية (الهوية، المفاتيح المسبقة، السجل) مشفّرة بمفتاح تحميه سلسلة مفاتيح نظام التشغيل.

الفصل 3

إيجاد أسرع خادم

ينزّل تطبيقك قائمة خوادم التنسيق من الدليل، ويقيس سرعة استجابة كل منها، ويتصل بأسرعها. ويبقى الثاني في الاحتياط؛ فإن توقف خادمك، ينتقل تطبيقك إليه فورًا.

قبل أي شيء يثبت الخادم هويته، ويتفق التطبيق والخادم على مفاتيح لهذا الاتصال. وبعد ذلك، حتى البيانات الوصفية التي يتبادلانها تُشفَّر فوق HTTPS، فيمكن تشغيله بأمان على خادم منزلي أيضًا.

تحت الغطاء
  • يسرد الدليل كل خادم موقّعًا من الخادم نفسه، مع إخفاء عنوانه. وتتحقق التطبيقات من التوقيع قبل استخدام أي سجل.
  • رسالة الترحيب الموقّعة من الخادم تحمل عرضًا جديدًا لتبادل مفاتيح هجين (X25519 + ML-KEM-768). يتحقق التطبيق منها بالمفتاح الموجود في الدليل، ويرد، ويوقّع على النص الكامل للتبادل. وكل إطار بعد ذلك يُشفَّر بـ AES-256-GCM ويُحشى.
  • تجيب الخوادم أيضًا على STUN عبر منفذين، فتعرف التطبيقات عنوانها العام ونوع NAT لديها دون سؤال Google أو Cloudflare.

الفصل 4

خوادم لا تستطيع الكذب بشأنك

ملفك الشخصي، والمساحات التي تنشئها، ودعواتها، ومن هم أعضاؤها، كلها سجلات صغيرة يوقّعها من كتبها. تخزّنها الخوادم وتشاركها، وكل خادم وكل تطبيق يتحقق من التوقيعات. قد يرفض خادم تمرير سجل، لكنه لا يستطيع تعديله أو اختلاقه.

تجد خوادم التنسيق بعضها وتكوّن شبكة. يُحفظ كل سجل على عدة خوادم تُختار بحسب تجزئة، وتنسخ هذه الخوادم التغييرات إلى بعضها، فتستمر الشبكة في العمل حين يتعطل أي خادم.

تحت الغطاء
  • السجلات: ملف شخصي، قائمة أصدقاء مختومة، مساحة، دعوة، عضو، جهاز وملاحظة. لكل منها كاتب مخوَّل بكتابته، والتحقق (التوقيع، الصلاحية، إصدار «آخر كتابة تفوز») متطابق على الخوادم والعملاء.
  • قوائم الأصدقاء مشفّرة لأجهزة صاحبها فقط، وطلبات الصداقة تُرسل كملاحظات مختومة لا تذكر المرسل، فلا تعرف الخوادم من صديق من.
  • كل سجل ملك لأول بضعة خوادم على حلقة التجزئة المتسقة الخاصة بجزئه. ينسخ المالكون الكتابات، ويستدركون ما فاتهم بمؤشرات تسلسلية، ويسلّمون السجلات مع انضمام الخوادم ومغادرتها.

الفصل 5

صديق يستضيف، واحتياطي ينتظر

عندما ينضم الناس إلى غرفة صوتية أو يفتحون مساحة، ينظر خادم التنسيق في اتصال كل منهم (مدى انفتاح شبكتهم، وسرعة الرفع، وحاسوبهم، وهل يعمل على البطارية) ويختار العضو الأنسب ليكون المضيف. والذي يليه في الأفضلية هو الاحتياطي.

يتصل الجميع بتطبيق المضيف، الذي يمرّر الصوت المشفّر. ولتخفيف الحمل، يرسل إلى كل مستمع أعلى بضعة متحدثين صوتًا فقط. والصوت لا يكون مكشوفًا أبدًا أثناء مروره: إنه يحمل حزمًا مختومة فقط.

إن غادر المضيف أو تعذّر الوصول إليه، يتولى الاحتياطي المهمة ويعيد الجميع الاتصال به، وغالبًا دون أن يلاحظ أحد.

تحت الغطاء
  • يشغّل المضيف داخل تطبيقه وحدة SFU صغيرة (selective forwarding unit). ويفتح كل عضو معها اتصال WebRTC واحدًا فيه مسار صوت صاعد، وخمس خانات متحدثين هابطة، وقناة بيانات.
  • تُوزَّع خانات المتحدثين بحسب ترويسة مستوى الصوت RFC 6464 («last-N»)، وتُعاد كتابة الأرقام التسلسلية لتبقى كل خانة تدفقًا واحدًا متصلًا.
  • العروض والردود موقّعة بمفاتيح الهوية على الجلسة والحقبة والمعرّفين وبصمة DTLS، فلا يستطيع خادم تنسيق أن يتوسط بينهم.
  • كل تغيير للمضيف يزيد رقم الحقبة، وتُتجاهل العروض القديمة. يبلّغ الأعضاء الذين لا يستطيعون الوصول إلى المضيف عن ذلك، وحين يتفق نصفهم يتولى الاحتياطي المهمة.

الفصل 6

تشفير، طبقةً فوق طبقة

كل شيء يُشفَّر قبل أن يغادر جهازك، والمفاتيح لا يملكها إلا الأشخاص في المحادثة. إليك ما يحدث لرسالة في طريقها.

رسالة واحدة، أربع طبقات

يوقّع تطبيقك الرسالة ليتمكن الآخرون من إثبات أنها منك، ويحشوها كي لا يكشف طولها شيئًا، ويشفّرها بمفتاح لا يملكه إلا أعضاء المحادثة، ويرسلها عبر اتصال مشفّر هو أيضًا. وأيًّا كان من في الطريق، فلن يرى إلا بايتات مبعثرة بحجم قياسي.

مستعد للحواسيب الكمومية

تُتبادل المفاتيح بطريقة هجينة تجمع X25519، وهي طريقة كلاسيكية مجرَّبة، مع ML-KEM-768، معيار ما بعد الكم الجديد. وعلى المهاجم أن يكسر الاثنين معًا. وهذا مهم لأن أحدًا قد يسجّل اليوم حركة بيانات مشفّرة وينتظر حاسوبًا كموميًا ليفكّها.

مفاتيح تتقدم إلى الأمام

يدور مفتاح كل عضو كالسقّاطة: بعد كل رسالة يُستبدل بالمفتاح التالي في سلسلة لا تسير إلا إلى الأمام، ويُحذف القديم. من يسرق مفتاحًا اليوم لا يستطيع قراءة رسائل الأمس. وكل 30 دقيقة، وكلما غادر أحد، يبدأ الجميع سلسلة جديدة بمفاتيح عشوائية جديدة، فيصبح المفتاح المسروق أيضًا عديم الفائدة سريعًا.

الصوت، إطارًا بإطار

يُشفَّر صوتك في إطارات صغيرة، نحو خمسين في الثانية، مباشرة بعد الميكروفون وقبل أن يصل إلى الشبكة. والإطار الذي يتعذر تشفيره يُتجاهل ولا يُرسل مكشوفًا أبدًا. ويستخدم الصوت معدل بتات ثابتًا، فلا يكشف حجم الحزم ما تقوله.

تحت الغطاء
  • الأسرار الثنائية (توزيع مفاتيح المرسل، مزامنة السجل، ربط الأجهزة، قنوات الخادم) تجمع X25519 وML-KEM-768 (FIPS 203) عبر HKDF-SHA256.
  • لمفاتيح المرسل سلسلتا HKDF: سلسلة النص تتقدم بعد كل رسالة، وسلسلة الصوت كل 30 ثانية. تُستبدل المفاتيح كل 30 دقيقة وعند مغادرة أحد، وتُرسل فقط إلى الأجهزة التي تحقق التطبيق بنفسه من عضويتها عبر السجلات الموقّعة.
  • الصوت: عامل Encoded Transform يشفّر كل إطار Opus بـ AES-256-GCM مع لاحقة موثّقة على نمط SFrame (معرّف المفتاح، الجيل، العدّاد).
  • النص: موقّع من الكاتب (Ed25519)، ومحشوّ بـ Padmé، ومشفّر بسلسلة النص.
  • الصناديق المختومة المرسلة إلى جهاز تستخدم المفتاح المسبق الحالي لذلك الجهاز ويوقّعها المرسل، فتحظى حتى الرسائل الموجهة إلى أجهزة غير متصلة بالسرية الأمامية.

الفصل 7

حين يتعذر الاتصال المباشر

بعض الشبكات، كجدران الحماية الصارمة في المكاتب أو الجامعات، تمنع الاتصالات المباشرة بين الحواسيب. يخبرك Crocodile حين يحدث ذلك، ويمكنك أن تسمح لخادم تنسيق بأن يرحّل حركة بياناتك.

يمرّر المُرحِّل حزمًا مشفّرة أصلًا من طرف إلى طرف: يرى أحجامها وتوقيتها، لا محتواها. ويدوم الإذن ساعة واحدة في كل مرة، ولا يُجدَّد إلا إن بقيت الحاجة إليه.

تحت الغطاء
  • المُرحِّل هو TURN قياسي (RFC 5766) على منفذ UDP لخادم التنسيق، ببيانات اعتماد قصيرة العمر. وتحدّ الخوادم من عدد من يمكنهم استخدامه.
  • عند الاتصال يختبر التطبيق شبكته على منفذَي STUN، ويصنّفها مفتوحة أو مقيّدة (NAT متماثل) أو محجوبة، ويقترح المُرحِّل عند الحاجة.
  • كل اتصال يسجّل أربع خطوات (العرض، الرد، مسار الشبكة، القناة المشفّرة)، فإن فشل شيء يستطيع التطبيق أن يقول أين.

الفصل 8

رسائل تجد طريقها

لا يحتفظ أي خادم بسجلك، لذا تتناقل تطبيقات Crocodile الرسائل فيما بينها. إليك ما يحدث حين تكتب لشخص غير متصل.

  1. تنتظر معك

    تدخل الرسالة صندوق الصادر في تطبيقك وتُظهر ساعة صغيرة.

  2. يتصل صديقك

    لحظة يتصل كلاكما يسلّم تطبيقك الرسالة، مختومة لجهازه.

  3. تم التأكيد

    يؤكد تطبيقه الاستلام وتختفي الساعة. وفي المساحة، يستدرك الأعضاء الذين فاتتهم رسائل ما فاتهم من المضيف والاحتياطي.

  4. أو صندوق البريد

    إن أردت، يحتفظ خادم بالرسائل الخاصة لمدة تصل إلى 7 أيام، مختومة لكل جهاز بحيث لا يستطيع قراءتها، ويحذفها بعد تسليمها.

الفصل 9

إضافة حاسوب

يعرض حاسوبك الجديد رمزًا قصيرًا. اكتبه على حاسوب سجّلت الدخول فيه مسبقًا، ثم تحقق من أن الشاشتين تعرضان رمز الأمان نفسه المكوّن من ستة أرقام. إن تطابقا، يُنقل حسابك مشفّرًا ويصبح الجهاز الجديد جاهزًا.

رمز الأمان يشمل مفاتيح الجهازين معًا، فإن حاول أحد استبدال أحدهما في الطريق، يختلف الرمزان وستلاحظ ذلك.

المسرد

المصطلحات التي ستصادفها في الكتابات الأمنية، كلٌّ منها في جملة أو اثنتين.

التشفير من طرف إلى طرف
لا يملك المفاتيح إلا المرسل والمستلمون. وكل ما ينقل الرسالة بينهم، بما في ذلك الخوادم، لا يرى إلا بيانات مبعثرة.
من نظير إلى نظير
تتصل التطبيقات ببعضها مباشرة بدلًا من الاتصال بخادم مركزي.
تشفير ما بعد الكم
تشفير مصمم لمقاومة الحواسيب الكمومية المستقبلية القادرة على كسر الطرق التي يستخدمها معظم الإنترنت اليوم. ML-KEM هو المعيار الذي نشره NIST عام 2024.
السرية الأمامية
سرقة مفتاح اليوم لا تفتح الرسائل القديمة، لأن المفاتيح التي استُخدمت لها قد حُذفت.
الأمان بعد الاختراق
بعد سرقة مفتاح، تُقصي المفاتيح العشوائية الجديدة السارقَ مجددًا سريعًا. في Crocodile يحدث ذلك خلال 30 دقيقة، أو فورًا حين يغادر أحد.
التوقيع الرقمي
ختم رياضي يُصنع بمفتاح خاص. يستطيع أي أحد التحقق منه بالمفتاح العام، ولا يستطيع أحد تزويره دون المفتاح الخاص.
NAT وSTUN وTURN
تخفي موجّهات المنازل الحواسيبَ خلف عنوان عام واحد (NAT). يساعد STUN التطبيقات على معرفة عنوانها العام لتتصل مباشرة، ويرحّل TURN حركة البيانات حين يتعذر ذلك.
SFU
وحدة توجيه انتقائي (selective forwarding unit) تمرّر صوت كل متحدث إلى كل مستمع دون مزجه أو فك تشفيره. في Crocodile تعمل في تطبيق المضيف.
البيانات الوصفية
البيانات المتعلقة بالمحادثة لا محتواها: من تحدث مع من، ومتى، وكم مرة. يشفّر Crocodile المحتوى بالكامل ويقلّل البيانات الوصفية، لكن الخوادم ما زالت ترى بعضها.

اقرأ وثيقة البنية كاملة (بالإنجليزية)