TgWitness / دستاویزات

حوالہ / شواہد

شواہد کیسے کام کرتے ہیں

ہیш چین، دستخط، چیک پوائنٹس اور گواہوں کی وضاحت ان عین فارمولوں کے ساتھ کی گئی ہے جو تصدیق کنندہ استعمال کرتا ہے۔

TgWitness وہ سب کچھ محفوظ کرتا ہے جو اکٹھا کرنے والے اکاؤنٹ نے دیکھا، ان مشاہدات کو ایک دستخط شدہ جرنل میں مربوط کرتا ہے اور کسی دوسرے شخص کو ایک معتبر کلید اور پہلے محفوظ کیے گئے چیک پوائنٹ کے خلاف ایکسپورٹ کی تصدیق کرنے دیتا ہے۔

مقامی دستاویزاتی ویب سائٹ پر /docs/concepts/ پر انٹرایکٹو مثالیں اور /docs/witness/ پر ایک چیک پوائنٹ ڈسژن ایکسپلورر شامل ہیں۔ تمام مثال کے پیغامات، گنتی اور تاخیر فرضی ہیں۔ چین سینڈباکس میں ہیشز براؤزر میں SHA-256 کے ساتھ کیلکولیٹ کیے جاتے ہیں۔ کچھ بھی ٹیلیگرام کو بھیجا نہیں جاتا۔

پیغام بدل جاتا ہے؛ مشاہدات جمع ہوتے جاتے ہیں#

سلسلہ وار خاکہٹیلیگرام → جمع کنندہ: نیا پیغام: 10:00 بجے ملاقات کریں; جمع کنندہ → مصنوعی دستخط شدہ جرنل: پیغام۔نیو منسلک کریں; ٹیلیگرام → جمع کنندہ: ترمیم: 11:00 بجے ملاقات; جمع کنندہ → مصنوعی دستخط شدہ جرنل: پیغام کے بعد "۔edited" منسلک کریں; ٹیلیگرام → جمع کنندہ: مٹانے کا نوٹس; جمع کنندہ → مصنوعی دستخط شدہ جرنل: پیغام کو منسلک کریں۔ حذف شدہ; مصنوعی دستخط شدہ جرنل پر نوٹ: اصل + ترمیم + حذف کا مشاہدہ برقرار رہتا ہےٹیلیگرامجمع کنندہمصنوعی دستخط شدہ جرنلنیا پیغام: 10:00 بجے ملاقات کریںپیغام۔نیو منسلک کریںترمیم: 11:00 بجے ملاقاتپیغام کے بعد "۔edited" منسلک کریںمٹانے کا نوٹسپیغام کو منسلک کریں۔ حذف شدہاصل + ترمیم + حذف کا مشاہدہ برقرار رہتا ہے
ڈایاگرام بطور متن
  1. ٹیلیگرام → جمع کنندہ: نیا پیغام: 10:00 بجے ملاقات کریں
  2. جمع کنندہ → مصنوعی دستخط شدہ جرنل: پیغام۔نیو منسلک کریں
  3. ٹیلیگرام → جمع کنندہ: ترمیم: 11:00 بجے ملاقات
  4. جمع کنندہ → مصنوعی دستخط شدہ جرنل: پیغام کے بعد "۔edited" منسلک کریں
  5. ٹیلیگرام → جمع کنندہ: مٹانے کا نوٹس
  6. جمع کنندہ → مصنوعی دستخط شدہ جرنل: پیغام کو منسلک کریں۔ حذف شدہ
  7. مصنوعی دستخط شدہ جرنل پر نوٹ: اصل + ترمیم + حذف کا مشاہدہ برقرار رہتا ہے

یہ سادہ ترتیب اس مفروضے پر مبنی ہے کہ ٹیلیگرام نے ہر اپ ڈیٹ فراہم کیا اور منتخب اکاؤنٹ اسے دیکھ سکتا تھا۔ آپریشنل واقعات بھی جرنل میں شیئر کیے جاتے ہیں۔ حذف کرنے کی اطلاع میں حذف کرنے والا یا حذف کا عین وقت شامل نہیں ہوتا۔ بار بار کی فراہمی الگ الگ مشاہدات ہیں؛ پورے جرنل میں ڈپلیکیٹ دباؤ نہیں ہوتا۔

ہیش کیا کور کرتا ہے#

مشاہدہ کریں، انکوڈ کریں، ہیش کریں اور دستخط کریں: ہر نئی ایونٹ میں پچھلا ہیش شامل ہوتا ہے۔

فارمولہ کو اندر سے باہر پڑھیں: C نو فیلڈز کو عین بائٹس میں تبدیل کرتا ہے؛ SHA-256 ان کا ڈائجسٹ تیار کرتا ہے؛ ہیکس وہ طریقہ ہے جس میں یہ ڈائجسٹ محفوظ کیا جاتا ہے۔ پچھلا ہیش پہلے ہی ایونٹ کے اندر موجود ہے۔ unhex محفوظ شدہ ہیش کو دوبارہ 32 بائٹس میں تبدیل کرتا ہے جن پر Ed25519 دستخط کرتا ہے۔

جامد چین کا خاکہ

C(ei) کو نو ایونٹ فیلڈز کا معیاری UTF-8 JSON سمجھیں۔ پہلا 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 میں تبدیل کریں۔ اس کا دوبارہ حساب لگایا گیا ہیش اب میل نہیں کھاتا۔ بعد والی چین کو دوبارہ کیلکولیٹ کرنے سے اس کے لنکس ٹھیک ہو سکتے ہیں، لیکن اصل دستخط نئے ڈائجسٹ کو کور نہیں کر سکتے۔ اس کے برعکس، ایک مشاہدہ شدہ ٹیلیگرام ترمیم ایک نیا جرنل ریکارڈ بن جاتی ہے۔

ثابت تبدیلی کا خاکہ

صرف ہیش لنکس کسی کو متبادل چین کو دوبارہ کیلکولیٹ کرنے سے نہیں روکتیں۔ اعتماد ایک آزادانہ طور پر قابلِ اعتماد کلید کے تحت دستخطوں کی جانچ کرنے اور جمع کرنے والے کے باہر محفوظ کردہ حوالوں سے موازنہ کرنے سے پیدا ہوتا ہے۔

ایک ابتدائی چیک پوائنٹ کیا شامل کرتا ہے#

گنتی 3 برقرار رکھیں اور h3 ہیڈر رکھیں؛ بعد میں 4 ریکارڈز کی برآمد پوزیشن 3 پر چیک کی جاتی ہے۔

حوالہ ایک جگہ ساکن رہتا ہے جبکہ جرنل بڑھتا رہتا ہے۔ اگر چیک پوائنٹ کہے "3 ریکارڈز، ہیڈ h3"، تو چار ریکارڈز کی ایکسپورٹ پوزیشن 3 پر h3 سے میل کھا کر گزر سکتی ہے۔ اس کا نیا ترین ہیڈ h4 ہے، جس کے مختلف ہونے کی توقع ہے۔ صرف دو ریکارڈز کی ایکسپورٹ ناکام ہو جاتی ہے۔

جامد چیک پوائنٹ خاکہ

چیک پوائنٹ کے دستخط کی تصدیق کے بعد، ضروری ہے:

Nexport ≥ Ncheckpoint   and   hexport[Ncheckpoint] = Hcheckpoint

ایک ایکسپورٹ چیک پوائنٹ سے آگے تک پھیلا ہوا ہو سکتا ہے۔ اسے برقرار رکھی گئی حد پر مطابقت رکھنا ضروری ہے۔ اصلی ویریفائر ہر ایونٹ کے تسلسل، پچھلے لنک، ہیش اور دستخط کی بھی جانچ کرتا ہے۔ صرف آخری محفوظ شدہ ہیڈ کا موازنہ کرنے سے ایک تبدیل شدہ اندرونی ریکارڈ رہ جائے گا جس کا محفوظ شدہ ہیش اپ ڈیٹ نہیں کیا گیا تھا۔

جہاں گواہ کا مقام ہے#

دھارے کا خاکہجمع کنندہ / اکاؤنٹ سیشن / کلید A → صرف پڑھنے کے لیے چیک پوائنٹ اینڈ پوائنٹ; گواہ / پن کیے گئے کلیکٹر کی / اپنی کی B → الگ دستخط شدہ گواہ جرنل; گواہ / پن کیے گئے کلیکٹر کی / اپنی کی B → صرف پڑھنے کے لیے چیک پوائنٹ اینڈ پوائنٹ (چیک کی درخواست کریں); صرف پڑھنے کے لیے چیک پوائنٹ اینڈ پوائنٹ → گواہ / پن کیے گئے کلیکٹر کی / اپنی کی B (دستخط شدہ جواب); گواہ / پن کیے گئے کلیکٹر کی / اپنی کی B → سائن شدہ TGW1 پوسٹس والا چینل (بوٹ API / اپنا ٹوکن)ہوسٹ Aہوسٹ بیجمع کنندہ / اکاؤنٹ سیشن /کلید Aصرف پڑھنے کے لیے چیکپوائنٹ اینڈ پوائنٹگواہ / پن کیے گئے کلیکٹرکی / اپنی کی Bالگ دستخط شدہ گواہ جرنلسائن شدہ TGW1 پوسٹس والاچینلچیک کی درخواست کریںدستخط شدہ جواببوٹ API / اپنا ٹوکن
ڈایاگرام بطور متن
  1. جمع کنندہ / اکاؤنٹ سیشن / کلید A → صرف پڑھنے کے لیے چیک پوائنٹ اینڈ پوائنٹ
  2. گواہ / پن کیے گئے کلیکٹر کی / اپنی کی B → الگ دستخط شدہ گواہ جرنل
  3. گواہ / پن کیے گئے کلیکٹر کی / اپنی کی B → صرف پڑھنے کے لیے چیک پوائنٹ اینڈ پوائنٹ (چیک کی درخواست کریں)
  4. صرف پڑھنے کے لیے چیک پوائنٹ اینڈ پوائنٹ → گواہ / پن کیے گئے کلیکٹر کی / اپنی کی B (دستخط شدہ جواب)
  5. گواہ / پن کیے گئے کلیکٹر کی / اپنی کی B → سائن شدہ TGW1 پوسٹس والا چینل (بوٹ API / اپنا ٹوکن)

ویٹنس رول بیک ریکارڈ کرتا ہے، ایک ہی گنتی پر مختلف ہیڈ، تبدیل شدہ کیز، غلط جوابات اور غائب جوابات۔ صرف زیادہ تعداد اس بات کا ثبوت نہیں ہے کہ ہر سابقہ ریکارڈ تبدیل نہیں ہوا؛ محفوظ شدہ چیک پوائنٹس کے ساتھ ایکسپورٹ کا موازنہ کریں۔ دوسرے ہوسٹ پر موجود ویٹنس کلیکٹر کے ہوسٹ کی بندش سے بچاتا ہے؛ ایک الگ آپریٹر اضافی آزادی فراہم کرتا ہے۔

گواہ کلیکٹر کی رپورٹ کردہ جرنل کی حالت کی تصدیق کرتا ہے۔ یہ خود بخود تمام ٹیلیگرام پیغامات کا مشاہدہ نہیں کرتا۔ گواہ کی سیٹ اپ دیکھیں۔

معلوم کارروائیوں کے خلاف ٹیسٹ کی ترسیل#

ایک کنٹرول شدہ گروپ، الگ اکاؤنٹس اور ایک نیا مارکر استعمال کریں۔ جان بوجھ کر بھیجیں، ترمیم کریں اور حذف کریں، ہر مرحلے کے دوران ریکارڈنگ چیک کرتے رہیں۔ نتائج کے معائنہ کرنے سے پہلے متوقع اقدامات اور ایک آخری حد مقرر کریں۔

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

صرف متوقع کارروائیوں کے مطابق نتائج شمار کیے جاتے ہیں؛ دہرائی گئی رسیدیں مخرج میں اضافہ نہیں کرتیں۔ مخرج کا غیر صفر ہونا ضروری ہے۔ گمشدہ رسید کا کوئی ناپا گیا تاخیر نہیں ہوتا۔ دستاویز میں گھڑی کی غیر یقینی صورتحال کو درج کریں؛ اپنا کنٹرول شدہ حذف کرنے کی کارروائی کا وقت استعمال کریں، کیونکہ ٹیلیگرام حذف کرنے کا صحیح وقت فراہم نہیں کرتا۔ 5/6 (83.3%) جیسا نتیجہ ٹیسٹ کے اقدامات کو بیان کرتا ہے، نہ کہ تمام ٹیلیگرام ٹریفک کی مکملیت کو۔

ایک ورک فلو منتخب کریں#

مکمل تفتیشی رہنما ایک واقعے کے دوران چینل، گروپ، بوٹ اور نجی چیٹ کے عمل کو درج ذیل ترتیب سے پیش کرتی ہے:

  1. پورے اکاؤنٹ کے تفتیشی موڈ کو فعال کریں اور ہر قابلِ رسائی چیٹ کا انوینٹری بنائیں۔
  2. جرنل کے سنپ شاٹس، ہر چیٹ کی مکمل تاریخ اور محفوظ شدہ منسلکات حاصل کریں۔
  3. براہِ راست تبدیلیوں اور کسی بھی جان بوجھ کر پینل کے تعاملات کو ان کی رسیدوں کے ساتھ محفوظ رکھیں۔
  4. حوالہ جاتی ریکارڈز اور افراد کے پروفائلز کے ذریعے عددی بھیجنے والی شناختیں، جوابی تعلقات، بار بار بھیجے جانے والے مقامات اور فائل ہیشز کی پیروی کریں۔
  5. کراس چیٹ کی ٹائم لائن کو ٹائم اسٹیمپ اور واضح وقفوں کے ساتھ دوبارہ ترتیب دیں۔
  6. دوسرے اکاؤنٹ ورک اسپیسز کا موازنہ کریں جبکہ ان کی اصلیت اور کیز کو الگ رکھیں۔
  7. موقعے کے نوٹس کے ساتھ دستخط شدہ جرنلز، پروفائلز اور ہسٹری ایکسپورٹس کو مرتب اور تصدیق کریں۔

ویب سائٹ کے /docs/cases/ رہنما میں ایک انٹرایکٹو کیس نقشہ اور بوٹ تنازعات، حذف شدہ پیغامات اور شرکاء کے نام تبدیل کرنے کے لیے مختلف ورژن شامل ہیں۔ کیس نوٹس اور کراس-ورک اسپیس تجزیہ بیرونی ہیں؛ ایپلیکیشن خود بخود عالمی تفتیشی گراف یا ضم شدہ کیس آرکائیو تیار نہیں کرتی۔

مکمل شدہ توثیق اور باقی ماندہ کام · ایکسپورٹ اور تصدیق کریں · ایک اکاؤنٹ سے شروع کریں