TgWitness / दस्तावेज़ीकरण

दस्तावेज़ीकरण / 08

देखें कि सबूत कैसे काम करता है

एक संदेश बदल सकता है। आपने जो देखा, उसका रिकॉर्ड जाँच योग्य रहना चाहिए।

नीचे दो छोटे प्रयोग देखें। ये काल्पनिक संदेशों का उपयोग करते हैं, आपके ब्राउज़र में ही रहते हैं और कभी भी टेलीग्राम से कनेक्ट नहीं होते।

एक संदेश, तीन अवलोकन

जब टेलीग्राम कोई नया संदेश, संपादन या हटाने की सूचना भेजता है, तो कलेक्टर तीन अलग-अलग अवलोकन जोड़ता है। संपादन पहले रिकॉर्ड को प्रतिस्थापित नहीं करता। हटाने की सूचना इसे मिटा नहीं देती।

01 / संदेश यात्राउदाहरणार्थ अनुक्रम
Telegram delivers an update to the collector, which appends a journal record. टेलीग्रामसंग्रहकर्ताजर्नल अपडेट →जोड़ें →
वर्तमान चैट दृश्य संदेश #42
संदेश हटा दिया गया

संदेश चैट दृश्य से गायब हो गया है।

अवलोकन जर्नल 3 रिकॉर्ड
  1. 01
    message.new

    10:00 बजे मिलें

    ✓
  2. 02
    message.edited

    11:00 बजे मिलें

    ✓
  3. 03
    message.deleted

    #42 के लिए हटाने की सूचना

    ✓

तीनों प्राप्त अवलोकन जर्नल में बने रहते हैं।

पहले से चयनित एक स्रोत के लिए सरलीकृत पथ। परिचालन रिकॉर्ड भी वास्तविक जर्नल साझा करते हैं। कैप्चर इस बात पर निर्भर करता है कि खाता क्या देख सकता है और टेलीग्राम क्या प्रदान करता है।

एक हटाने की सूचना न तो हटाने का विश्वसनीय समय बताती है और न ही संदेश हटाने वाले व्यक्ति की पहचान। इन मानों को अज्ञात रखना एक अवलोकन और एक अनुमान के बीच के अंतर को बनाए रखता है।

रिकॉर्ड बदलें। हैश का अनुसरण करें।

प्रत्येक रिकॉर्ड में पिछले रिकॉर्ड का हैश शामिल होता है। इसका अपना हैश घटना क्षेत्रों को कवर करता है, जिसमें वह लिंक भी शामिल है। एक बाहरी रूप से बनाए रखा चेकपॉइंट एक विशिष्ट जर्नल लंबाई और हेड हैश को पिन करता है।

02 / हैश-चेन सैंडबॉक्सवास्तविक SHA-256 · नमूना रिकॉर्ड
रिकॉर्ड 01संदेश प्राप्त हुआh₁ = SHA-256(e₁)64 शून्यों के लिंक
रिकॉर्ड 0211:00 बजे मिलेंh₂ = SHA-256(e₂)h₁ शामिल है
रिकॉर्ड 03मिटान देखा गयाh₃ = SHA-256(e₃)h₂ शामिल है
अन्यत्र संग्रहीत3 रिकॉर्ड · हेड h₃इस निश्चित सीमा की तुलना प्रदान किए गए जर्नल से करें।

किसी घटना को बदलने से उसका हैश बदल जाता है। श्रृंखला का पुनर्निर्माण करने से इसका सिर बदल जाता है। पूंछ हटाने से यह बचे हुए चेकपॉइंट से छोटा हो जाता है।

यह सैंडबॉक्स हैश की गणना करता है, हस्ताक्षर नहीं। वास्तविक सत्यापक प्रत्येक घटना के Ed25519 हस्ताक्षर, अनुक्रम और लिंक की भी जांच करता है। केवल हैश का पुनर्निर्माण विश्वसनीय कुंजी के अंतर्गत वैध हस्ताक्षर नहीं बना सकता।

वास्तविक नियम, कुछ पंक्तियों में

हैश + हस्ताक्षर
h0 = 064
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 एन्कोडिंग है; हैश और हस्ताक्षर स्वयं हैश-इनपुट फ़ील्ड नहीं हैं।

रख रखा गया चेकपॉइंट
Nexport ≥ Ncheckpoint
hexport[Ncheckpoint] = Hcheckpoint

पिन किए गए कलेक्टर कुंजी के अंतर्गत चेकपॉइंट हस्ताक्षर को सत्यापित करें, फिर इसकी सीमा को सत्यापित जर्नल से तुलना करें। बाद में किया गया एक्सपोर्ट अधिक रिकॉर्ड्स शामिल कर सकता है; फिर भी इसे पहले के चेकपॉइंट पर मेल खाना चाहिए।

तीन प्रश्न, तीन अलग-अलग जाँचें

एक मेल खाने वाली हैश श्रृंखला अखंडता संबंधी प्रश्न का उत्तर देती है। यह पूर्ण टेलीग्राम डिलीवरी, संदेश की सत्यता या स्वतंत्र रूप से विश्वसनीय अवलोकन समय स्थापित नहीं करती।

प्राप्ति से लेकर केस पैकेज तक पूरे खाते की जांच का अनुसरण करें।