دستاویزات / 08
دیکھیں کہ شواہد کیسے کام کرتا ہے
ایک پیغام تبدیل ہو سکتا ہے۔ آپ نے جو مشاہدہ کیا اس کا ریکارڈ قابل تصدیق رہنا چاہیے۔
نیچے دو چھوٹے تجربات دریافت کریں۔ یہ فرضی پیغامات استعمال کرتے ہیں، آپ کے براؤزر میں ہی رہتے ہیں اور کبھی بھی ٹیلیگرام سے منسلک نہیں ہوتے۔
ایک پیغام، تین مشاہدات
جب ٹیلیگرام نیا پیغام، ترمیم یا حذف کرنے کا نوٹس بھیجتا ہے، تو جمع کرنے والا تین الگ الگ مشاہدات شامل کرتا ہے۔ ترمیم پہلے ریکارڈ کو تبدیل نہیں کرتی۔ حذف کرنے کا نوٹس اسے مٹا نہیں دیتا۔
پیغام چیٹ کے منظر سے غائب ہو گیا ہے۔
- 01✓
message.new10:00 بجے ملاقات کریں
- 02✓
message.edited11:00 بجے ملاقات کریں
- 03✓
message.deleted#42 کے لیے حذف کرنے کا نوٹس
تمام تین مشاہدات جرنل میں محفوظ رہتی ہیں۔
ایک حذف کرنے کا نوٹس نہ تو حذف کرنے کا قابلِ اعتماد وقت فراہم کرتا ہے اور نہ ہی اس شخص کی شناخت جو پیغام حذف کرنے والا تھا۔ ان اقدار کو نامعلوم رکھنے سے مشاہدے اور قیاس کے درمیان فرق برقرار رہتا ہے۔
ریکارڈ تبدیل کریں۔ ہیش کی پیروی کریں۔
ہر ریکارڈ میں پچھلے ریکارڈ کا ہیش شامل ہوتا ہے۔ اس کا اپنا ہیش واقعے کے فیلڈز کو کور کرتا ہے، بشمول اس لنک کے۔ ایک بیرونی طور پر برقرار رکھا گیا چیک پوائنٹ جرنل کی مخصوص لمبائی اور ہیڈ ہیش کو پن کرتا ہے۔
h₁ = SHA-256(e₁)64 صفر کے روابطh₂ = SHA-256(e₂)h₁ شامل ہےh₃ = SHA-256(e₃)h₂ شامل ہے۔h₃اس مقررہ حد کا موازنہ فراہم کردہ جرنل سے کریں۔ایک واقعے میں تبدیلی کرنے سے اس کا ہیش بدل جاتا ہے۔ چین کو دوبارہ تعمیر کرنے سے اس کا سرب بدل جاتا ہے۔ دم کو ہٹانے سے یہ محفوظ شدہ چیک پوائنٹ سے چھوٹا ہو جاتا ہے۔
ریکارڈ 2 اور مکمل ہیشز کا معائنہ کریں۔
یہ اس مثال میں بالکل اسی UTF-8 JSON کو ہیش کیا گیا ہے۔ اقدار فرضی ہیں؛ نو فیلڈز اور سیریلائزیشن جرنل فارمیٹ سے مطابقت رکھتے ہیں۔
- محفوظ شدہ ریکارڈ 2 ہیش
- ریکارڈ 2 ہیش دوبارہ شمار شدہ
اصلی قواعد، چند سطروں میں
hi = hex(SHA-256(C(ei)))
σi = Ed25519.Sign(sk, unhex(hi))
C نو ایونٹ فیلڈز کو UTF-8 JSON کے طور پر سیریلائز کرتا ہے: ترتیب شدہ کیز، اضافی وائٹسپیس نہیں، ASCII ایسکیپنگ نہیں اور NaN/انفینٹی نہیں۔ ایونٹ کا previous_hash hi−1 ہے۔ دکھایا گیا h0 کا مطلب 64 صفر حروف ہے؛ سگنیچرز 32 خام ڈائجسٹ بائٹس کو کور کرتے ہیں۔
یہ نو فیلڈز ہیں: seq، observed_at، source_at، kind، chat_id، message_id، actor_id، payload اور previous_hash۔ یہ TgWitness کی دستاویزی JSON انکوڈنگ ہے؛ ہیش اور سگنیچر بذاتِ خود ہیش-ان پٹ فیلڈز نہیں ہیں۔
hexport[Ncheckpoint] = Hcheckpoint
پِن کیے گئے کلیکٹر کی تحت چیک پوائنٹ کے دستخط کی تصدیق کریں، پھر اس کی حد کو تصدیق شدہ جرنل سے موازنہ کریں۔ بعد میں کیا گیا ایکسپورٹ مزید ریکارڈز پر مشتمل ہو سکتا ہے؛ اسے پھر بھی پہلے کے چیک پوائنٹ پر مطابقت رکھنا چاہیے۔
تین سوالات، تین مختلف چیکس
ہیشز اور دستخطوں کی تصدیق ایک علیحدہ معتبر کلید کے خلاف کریں۔
02 / تسلسلپہلے کیا برقرار رکھا گیا تھا؟ایک الگ گواہ کے ذریعے محفوظ کیے گئے چیک پوائنٹس کے ساتھ دستخط شدہ ایکسپورٹ کا موازنہ کریں۔
03 / ترسیلکیا یہ ٹیسٹ ایونٹس موصول ہوئے؟ہر اکاؤنٹ کے جرنل میں کنٹرول شدہ بھیجنے، ترمیم اور حذف کرنے کی کارروائیوں کا ملاپ کریں۔
ایک مماثل ہیش چین سالمیت کے سوال کا جواب دیتی ہے۔ یہ مکمل ٹیلیگرام کی ترسیل، پیغام کی صداقت یا کسی آزادانہ طور پر قابلِ اعتماد مشاہداتی وقت کو ثابت نہیں کرتی۔
حصول سے لے کر کیس پیکج تک پورے اکاؤنٹ کی تفتیش کی پیروی کریں۔