TgWitness / مستندسازی

مستندسازی / 08

ببینید مدرک چگونه کار می‌کند

یک پیام می‌تواند تغییر کند. ثبت آنچه مشاهده کرده‌اید باید قابل بررسی باقی بماند.

در ادامه دو آزمایش کوچک را بررسی کنید. این آزمایش‌ها از پیام‌های ساختگی استفاده می‌کنند، در مرورگر شما باقی می‌مانند و هرگز به تلگرام متصل نمی‌شوند.

یک پیام، سه مشاهده

وقتی تلگرام یک پیام جدید، یک ویرایش و یک اطلاعیه حذف را ارسال می‌کند، ابزار جمع‌آوری سه مشاهدهٔ جداگانه را اضافه می‌کند. ویرایش، رکورد اول را جایگزین نمی‌کند. اطلاعیه حذف نیز آن را پاک نمی‌کند.

۰۱ / مسیر پیامسکانس نمایشی
Telegram delivers an update to the collector, which appends a journal record. تلگراممجموعه‌کنندهمجله به‌روزرسانی →ضمیمه →
نمای گفتگو کنونی پیام شمارهٔ ۴۲
پیام حذف شد

پیام از نمای چت ناپدید شده است.

دفترچهٔ مشاهدات ۳ رکورد
  1. 01
    message.new

    ساعت ۱۰:۰۰ ملاقات کنید

    ✓
  2. 02
    message.edited

    ساعت ۱۱:۰۰ ملاقات کنید

    ✓
  3. 03
    message.deleted

    اطلاعیه حذف برای #۴۲

    ✓

تمام سه مشاهده دریافت‌شده در دفترچه شواهد باقی می‌مانند.

مسیر ساده‌شده برای یک منبع از پیش انتخاب‌شده. سوابق عملیاتی نیز دفترچه واقعی را به اشتراک می‌گذارند. ضبط بستگی به آنچه حساب کاربری می‌تواند ببیند و آنچه تلگرام ارائه می‌دهد دارد.

یک اطلاعیهٔ حذف نه زمان حذف قابل‌اعتماد را ارائه می‌دهد و نه شخص حذف‌کنندهٔ پیام را. ناشناخته نگه‌داشتن این مقادیر تمایز بین مشاهده و حدس را حفظ می‌کند.

یک رکورد را تغییر دهید. هش را دنبال کنید.

هر رکورد حاوی هش رکورد قبلی است. هش خود رکورد، فیلدهای رویداد از جمله آن لینک را پوشش می‌دهد. یک نقطهٔ کنترل خارجی، طول مشخصی از مجله و هش سرآغاز آن را تثبیت می‌کند.

۰۲ / محوطهٔ آزمایشی زنجیرهٔ هشSHA-256 واقعی · سوابق نمونه
ثبت ۰۱پیام دریافت شدh₁ = SHA-256(e₁)پیوندها به ۶۴ صفر
ثبت ۰۲ساعت ۱۱:۰۰ ملاقات کنیدh₂ = SHA-256(e₂)شامل h₁
ثبت ۰۳حذف مشاهده شدh₃ = SHA-256(e₃)شامل h₂
در جای دیگری نگهداری می‌شود۳ رکورد · سر h₃این مرز ثابت را با دفترچهٔ ارائه‌شده مقایسه کنید.

تغییر یک رویداد، هَش آن را تغییر می‌دهد. بازسازی زنجیره، سر آن را تغییر می‌دهد. حذف انتها، آن را کوتاه‌تر از نقطهٔ کنترل باقی‌مانده می‌کند.

این sandbox هش‌ها را محاسبه می‌کند، نه امضاها را. اعتبارسنج واقعی همچنین امضای Ed25519، توالی و لینک هر رویداد را بررسی می‌کند. بازسازی صرف هش‌ها نمی‌تواند امضاهای معتبری تحت کلید مورد اعتماد ایجاد کند.

قوانین واقعی، در چند خط

هَش + امضا
h0 = 064
hi = hex(SHA-256(C(ei)))
σi = Ed25519.Sign(sk, unhex(hi))

C نُه فیلد رویداد را به‌عنوان JSON با کدگذاری UTF-8 سریالی می‌کند: کلیدهای مرتب‌شده، بدون فضای خالی اضافی، بدون فرار ASCII و بدون NaN/infinity. previous_hash رویداد برابر hi−1 است. h0 نمایش‌داده‌شده به معنای ۶۴ کاراکتر صفر است؛ امضاها ۳۲ بایت خام هش را پوشش می‌دهند.

نه فیلد عبارتند از seq، observed_at، source_at، kind، chat_id، message_id، actor_id، payload و previous_hash. این رمزگذاری JSON مستندشده TgWitness است؛ خود هش و امضا فیلدهای ورودی هش نیستند.

نقطه کنترل حفظ‌شده
Nexport ≥ Ncheckpoint
hexport[Ncheckpoint] = Hcheckpoint

امضای نقطهٔ کنترل را زیر کلید جمع‌آورندهٔ سنجاق‌شده تأیید کنید، سپس مرز آن را با دفترچهٔ تأییدشده مقایسه کنید. خروجی بعدی ممکن است رکوردهای بیشتری داشته باشد؛ اما همچنان باید با نقطهٔ کنترل قبلی مطابقت داشته باشد.

سه سؤال، سه بررسی متفاوت

یک زنجیره هش تطبیق‌یافته به یک پرسش یکپارچگی پاسخ می‌دهد. این زنجیره تحویل کامل تلگرام، صحت یک پیام یا زمان مشاهده مورد اعتماد مستقل را اثبات نمی‌کند.

تحقیقات کل حساب را از مرحلهٔ به‌دست‌آوردن تا بستهٔ پرونده دنبال کنید.