TgWitness / التوثيق

مرجع / الأدلة

كيف تعمل الأدلة

شرح سلسلة التجزئة والتوقيعات ونقاط التحقق والشهود باستخدام الصيغ الدقيقة التي يستخدمها المُحقق.

يحتفظ TgWitness بما رصده الحساب المجمع، ويربط تلك الملاحظات في سجل موقّع، ويسمح لشخص آخر بالتحقق من عملية التصدير باستخدام مفتاح موثوق ونقطة تحقق سابقة محفوظة.

يضيف موقع التوثيق المحلي أمثلة تفاعلية على الرابط /docs/concepts/، ومستكشف قرارات نقاط التفتيش على الرابط /docs/witness/. جميع الرسائل النموذجية، والأعداد، والتأخيرات هي خيالية. يتم حساب التجزئات في بيئة الاختبار الخاصة بالسلسلة باستخدام خوارزمية SHA-256 في المتصفح. لا يتم إرسال أي شيء إلى Telegram.

تتغير الرسالة؛ وتتراكم الملاحظات#

مخطط التسلسلTelegram → أداة التجميع: رسالة جديدة: نلتقي الساعة 10:00; أداة التجميع → سجل موقّع: إضافة رسالة جديدة; Telegram → أداة التجميع: تحديث: نلتقي الساعة 11:00; أداة التجميع → سجل موقّع: إضافة «message.edited»; Telegram → أداة التجميع: إشعار بالحذف; أداة التجميع → سجل موقّع: إضافة message.deleted; ملاحظة بشأن سجل موقّع: يتم الاحتفاظ بالملاحظات المتعلقة بالرسائل الأصلية والمعدلة والمحذوفةTelegramأداة التجميعسجل موقّعرسالة جديدة: نلتقي الساعة 10:00إضافة رسالة جديدةتحديث: نلتقي الساعة 11:00إضافة «message.edited»إشعار بالحذفإضافة message.deletedيتم الاحتفاظ بالملاحظات المتعلقة بالرسائل الأصليةوالمعدلة والمحذوفة
الرسم التخطيطي كنص
  1. Telegram → أداة التجميع: رسالة جديدة: نلتقي الساعة 10:00
  2. أداة التجميع → سجل موقّع: إضافة رسالة جديدة
  3. Telegram → أداة التجميع: تحديث: نلتقي الساعة 11:00
  4. أداة التجميع → سجل موقّع: إضافة «message.edited»
  5. Telegram → أداة التجميع: إشعار بالحذف
  6. أداة التجميع → سجل موقّع: إضافة message.deleted
  7. ملاحظة بشأن سجل موقّع: يتم الاحتفاظ بالملاحظات المتعلقة بالرسائل الأصلية والمعدلة والمحذوفة

يفترض هذا التسلسل المبسط أن Telegram قد سلمت كل تحديث وأن الحساب المحدد يمكنه رؤيته. كما تشارك الأحداث التشغيلية في السجل. لا يوفر إشعار الحذف معلومات عن الشخص الذي قام بالحذف أو الوقت الدقيق للحذف. تعتبر عمليات التسليم المتكررة ملاحظات منفصلة؛ ولا يوجد حذف للتكرارات على مستوى السجل بأكمله.

ما الذي يشمله التجزئة (هاش)#

المراقبة، الترميز، التجزئة والتوقيع: كل حدث جديد يتضمن التجزئة السابقة.

اقرأ الصيغة من الداخل إلى الخارج: C يحول الحقول التسعة إلى بايتات محددة؛ SHA-256 يُنتج ملخصها؛ hex هي الطريقة التي يُخزَّن بها هذا الملخص. التجزئة السابقة موجودة بالفعل داخل الحدث. unhex يُعيد تحويل التجزئة المخزنة إلى 32 بايتًا يوقع عليها Ed25519.

مخطط سلسلة ثابت

لنفترض أن C(ei) هو JSON القياسي بتنسيق UTF-8 لحقول الأحداث التسعة. الأول previous_hash يتكون من 64 حرف صفر. يتضمن كل سجل لاحق التجزئة السداسية العشرية للسجل السابق:

hi = hex(SHA256(C(ei)))
σi = Ed25519.Sign(sk,unhex(hi))

يغطي التوقيع 32 بايتًا من الملخص الخام. يحتوي مدخل التجزئة بالضبط على seq، observed_at، source_at، kind، chat_id، message_id، actor_id، payload وprevious_hash. يتم فرز مفاتيح الكائنات؛ ويتم حذف المسافات البيضاء ورموز الهروب ASCII ؛ ويتم رفض قيم NaN واللانهاية. انظر الترميز الدقيق.

مخطط تدفق64 حرفًا صفرًا → السجل 1 / التجزئة h1; السجل 1 / التجزئة h1 → التسجيل 2 يتضمن h1 / هاش h2; التسجيل 2 يتضمن h1 / هاش h2 → التسجيل 3 يتضمن h2 / هاش h3; التسجيل 3 يتضمن h2 / هاش h3 → نقطة تفتيش موقعة: العدد 3، العنوان h3 (الاحتفاظ بها في مكان آخر)64 حرفًا صفرًاالسجل 1 / التجزئة h1التسجيل 2 يتضمن h1 /هاش h2التسجيل 3 يتضمن h2 /هاش h3نقطة تفتيش موقعة:العدد 3، العنوان h3الاحتفاظ بها في مكان آخر
الرسم التخطيطي كنص
  1. 64 حرفًا صفرًا → السجل 1 / التجزئة h1
  2. السجل 1 / التجزئة h1 → التسجيل 2 يتضمن h1 / هاش h2
  3. التسجيل 2 يتضمن h1 / هاش h2 → التسجيل 3 يتضمن h2 / هاش h3
  4. التسجيل 3 يتضمن h2 / هاش h3 → نقطة تفتيش موقعة: العدد 3، العنوان h3 (الاحتفاظ بها في مكان آخر)
التغيير إلى السجل المقدم ما الذي يكشفها
تعديل السجل 2 مع الاحتفاظ بقيمة التجزئة المحفوظة يختلف التجزئة (هاش) المعاد حسابها للحدث؛ ولم تعد توقيعها تشمل الحدث الذي تم تغييره
إعادة بناء السجل المعدل وكل قيمة هاش لاحقة فشلت التوقيعات الأصلية؛ كما أن نقطة التحقق المحتفظ بها عند الحدود المتأثرة لا تتطابق أيضًا
احذف الجزء اللاحق مع الحفاظ على البادئة المتبقية كما هي تكشف نقطة تفتيش سابقة محفوظة تتجاوز البادئة المقدمة أن التصدير قصير جدًّا
إعادة توقيع سجل بديل باستخدام مفتاح آخر تقوم بصمة مفتاح موثوقة منفصلة برفض الهوية البديلة

يؤدي تغيير حقل محفوظ إلى تغيير ملخصه؛ ولا تؤدي إعادة إنشاء التجزئات إلى استعادة التوقيعات الأصلية.

جرب المنطق على السجل 2: قم بتغيير Meet at 11:00 إلى Meet at 12:00 في الحدث المحفوظ. لم يعد التجزئة المعاد حسابها متطابقة. إعادة حساب السلسلة اللاحقة يمكن أن تصلح روابطها، لكنها لا تستطيع جعل التوقيعات الأصلية تغطي الملخصات الجديدة. على النقيض من ذلك، فإن أي تعديل يُلاحظ على Telegram يصبح سجلاً جديداً في السجل.

مخطط التغييرات الثابتة

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

ما تضيفه نقطة التحقق السابقة#

احتفظ بالعدد 3 والعنوان h3؛ يتم التحقق من تصدير لاحق لـ 4 سجلات في الموضع 3.

تظل الإشارة ثابتة بينما يتزايد حجم السجل. إذا كانت نقطة التحقق تقول «3 سجلات، رأس h3»، فيمكن أن يمر التصدير المكون من أربعة سجلات من خلال مطابقة h3 في الموضع 3. أحدث رأس لها هو h4، والذي من المتوقع أن يختلف. أما التصدير المكون من سجلين فقط فيفشل.

رسم تخطيطي لنقطة تفتيش ثابتة

بعد التحقق من توقيع نقطة التحقق، اطلب ما يلي:

Nexport ≥ Ncheckpoint   and   hexport[Ncheckpoint] = Hcheckpoint

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

أين ينتمي الشاهد#

مخطط تدفقالمجمع / جلسة الحساب / المفتاح A → نقطة نهاية نقطة تفتيش للقراءة فقط; Witness / مفتاح التجميع المثبت / المفتاح الخاص B → سجل شهود منفصل وموقع; Witness / مفتاح التجميع المثبت / المفتاح الخاص B → نقطة نهاية نقطة تفتيش للقراءة فقط (اطلب فحصًا); نقطة نهاية نقطة تفتيش للقراءة فقط → Witness / مفتاح التجميع المثبت / المفتاح الخاص B (إجابة موقعة); Witness / مفتاح التجميع المثبت / المفتاح الخاص B → قناة تحتوي على منشورات TGW1 الموقعة (واجهة برمجة تطبيقات (API) للروبوت / رمز مميز خاص)المضيف أالمضيف بالمجمع / جلسة الحساب /المفتاح Aنقطة نهاية نقطة تفتيشللقراءة فقطWitness / مفتاح التجميعالمثبت / المفتاح الخاص Bسجل شهود منفصل وموقعقناة تحتوي على منشوراتTGW1 الموقعةاطلب فحصًاإجابة موقعةواجهة برمجة تطبيقات (API)للروبوت / رمز مميز خاص
الرسم التخطيطي كنص
  1. المجمع / جلسة الحساب / المفتاح A → نقطة نهاية نقطة تفتيش للقراءة فقط
  2. Witness / مفتاح التجميع المثبت / المفتاح الخاص B → سجل شهود منفصل وموقع
  3. Witness / مفتاح التجميع المثبت / المفتاح الخاص B → نقطة نهاية نقطة تفتيش للقراءة فقط (اطلب فحصًا)
  4. نقطة نهاية نقطة تفتيش للقراءة فقط → Witness / مفتاح التجميع المثبت / المفتاح الخاص B (إجابة موقعة)
  5. Witness / مفتاح التجميع المثبت / المفتاح الخاص B → قناة تحتوي على منشورات TGW1 الموقعة (واجهة برمجة تطبيقات (API) للروبوت / رمز مميز خاص)

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

يشهد «الشهود» (Witness) بحالة السجل التي أبلغ عنها المُجمِّع. ولا يقوم بمراقبة جميع رسائل Telegram بشكل مستقل. انظر إعداد «الشهود».

اختبار التسليم مقابل الإجراءات المعروفة#

استخدم مجموعة خاضعة للرقابة، وحسابات جمع منفصلة، وعلامة جديدة. قم بالإرسال، والتحرير، والحذف بشكل متعمد، مع التحقق من التسجيل بين المراحل. حدد الإجراءات المتوقعة والموعد النهائي قبل فحص النتائج.

R = |observed∩expected| / |expected|      Δ t = treceipt - taction

يُحتسب فقط الإجراءات المتوقعة المطابقة؛ ولا تزيد الإيصالات المكررة من البسط. يجب أن يكون المقام غير صفر. لا يُقاس التأخير في حالة فقدان إيصال ما . قم بتوثيق عدم اليقين في التوقيت؛ واستخدم وقت إجراء الحذف الذي تتحكم فيه بنفسك، لأن Telegram لا يوفر وقت الحذف الدقيق. نتيجة مثل 5/6 (83.3٪) تصف الإجراءات الاختبارية، وليس اكتمال كل حركة مرور Telegram.

اختر مسار عمل#

فيما يلي دليل التحقيق الكامل الذي يتتبع حادثة تحدث عبر قناة ومجموعة وروبوت ومحادثة خاصة:

  1. قم بتفعيل «وضع التحقيق الشامل للحساب» وقم بجرد كل الدردشات التي يمكن الوصول إليها.
  2. احصل على لقطات من السجل، والسجل الكامل لكل محادثة، والمرفقات المحفوظة.
  3. احتفظ بالتغييرات الفورية وأي تفاعلات متعمدة مع اللوحة مع إيصالاتها.
  4. تتبع معرّفات المرسِل الرقمية، وعلاقات الردود، والوجهات المتكررة، و تجزئات الملفات من خلال السجلات المقتبسة وملفات تعريف الأشخاص.
  5. إعادة بناء تسلسل زمني مشترك بين الدردشات يتضمن كلًّا من الطوابع الزمنية والفجوات الواضحة.
  6. قارن بين مساحات عمل الحسابات الأخرى مع الحفاظ على فصل مصادرها ومفاتيحها.
  7. تجميع السجلات الموقعة والملفات الشخصية وبيانات السجل التاريخي المُصدَّرة والتحقق منها مع ملاحظات القضية.

يتضمن دليل «/docs/cases/» الخاص بالموقع خريطة تفاعلية للحالات ومتغيرات لنزاعات الروبوتات، والرسائل المحذوفة، وتغيير المشاركين لأسمائهم. ملاحظات الحالات والتحليل عبر مساحات العمل هي عناصر خارجية؛ ولا يقوم التطبيق تلقائيًا بإنشاء رسم بياني شامل للتحقيق أو أرشيف مدمج للحالات.

التحقق المكتمل والأعمال المتبقية · التصدير والتحقق · ابدأ بحساب واحد