TgWitness / التوثيق

التوثيق / 08

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

قد تتغير الرسالة. لكن يجب أن يظل سجل ما لاحظته قابلاً للتحقق.

استكشف تجربتين صغيرتين أدناه. تستخدمان رسائل خيالية، وتبقيان داخل متصفحك ولا تتصلان أبدًا بـ Telegram.

رسالة واحدة، ثلاث ملاحظات

عندما يرسل Telegram رسالة جديدة أو إشعارًا بالتعديل أو الحذف، يقوم برنامج التجميع بإضافة ثلاث ملاحظات منفصلة. لا يحل التعديل محل السجل الأول، كما أن إشعار الحذف لا يمحوه.

01 / مسار الرسالةتسلسل توضيحي
Telegram delivers an update to the collector, which appends a journal record. Telegramأداة التجميعالسجل تحديث →إضافة →
عرض الدردشة الحالية الرسالة رقم 42
تم حذف الرسالة

لقد اختفت الرسالة من شاشة الدردشة.

سجل الملاحظات 3 سجلات
  1. 01
    message.new

    نلتقي الساعة 10:00

    ✓
  2. 02
    message.edited

    نلتقي الساعة 11:00

    ✓
  3. 03
    message.deleted

    إشعار بالحذف رقم #42

    ✓

تُحتفظ بجميع الملاحظات الثلاث التي تم تلقيها في السجل.

مسار مبسط لمصدر واحد تم اختياره مسبقًا. كما تشارك السجلات التشغيلية السجل الفعلي. يعتمد التسجيل على ما يمكن للحساب رؤيته وما يقدمه Telegram.

لا يوفر إشعار الحذف وقتًا موثوقًا للحذف ولا هوية الشخص الذي حذف الرسالة. والحفاظ على عدم معرفة هذه القيم يحافظ على التمييز بين الملاحظة والتخمين.

تعديل سجل. تتبع الهاش.

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

02 / HASH-CHAIN SANDBOXSHA-256 حقيقي · نماذج من السجلات
السجل 01تم استلام الرسالةh₁ = SHA-256(e₁)روابط إلى 64 صفرًا
السجل 02نلتقي الساعة 11:00h₂ = SHA-256(e₂)يتضمن h₁
السجل 03تم رصد عملية حذفh₃ = SHA-256(e₃)يتضمن h₂
محفوظة في مكان آخر3 سجلات · الرأس h₃قارن هذه الحدود المحددة بالسجل المرفق.

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

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

القواعد الفعلية، في بضع أسطر

HASH + SIGNATURE
h0 = 064
hi = hex(SHA-256(C(ei)))
σi = Ed25519.Sign(sk, unhex(hi))

يقوم C بتسلسل حقول الأحداث التسعة بتنسيق JSON UTF-8: مفاتيح مرتبة، بدون مسافات بيضاء إضافية، بدون هروب ASCII وبدون NaN/اللانهاية. قيمة previous_hash للحدث هي hi−1. تعني القيمة h0 المعروضة 64 حرفًا صفرًا؛ وتغطي التوقيعات 32 بايتًا من الملخص الخام.

الحقول التسعة هي seq وobserved_at وsource_at وkind وchat_id وmessage_id وactor_id وpayload وprevious_hash. هذا هو ترميز JSON الموثق لـ TgWitness؛ ولا يُعد التجزئة والتوقيع في حد ذاتهما حقول إدخال للتجزئة.

نقطة تفتيش محفوظة
Nexport ≥ Ncheckpoint
hexport[Ncheckpoint] = Hcheckpoint

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

ثلاثة أسئلة، ثلاث عمليات تحقق مختلفة

تُجيب سلسلة التجزئة المطابقة على سؤال يتعلق بالسلامة. وهي لا تثبت إتمام تسليم الرسالة عبر Telegram، ولا صحة الرسالة، ولا وقت الملاحظة الموثوق به بشكل مستقل.

تابع التحقيق الكامل للحساب بدءًا من الحصول على البيانات وحتى إعداد ملف القضية.