# साक्ष्य कैसे काम करता है

Canonical page: https://phishdestroy.github.io/TgWitness/hi/docs/reference/how-it-works/

हैश चेन, हस्ताक्षर, चेकपॉइंट और विटनेस को सटीक सूत्रों के साथ समझाया गया है, जिनका उपयोग सत्यापनकर्ता करता है।

TgWitness एक संग्रह करने वाले खाते द्वारा देखी गई चीज़ों को संरक्षित करता है, उन अवलोकनों को एक हस्ताक्षरित जर्नल में जोड़ता है और किसी अन्य व्यक्ति को एक विश्वसनीय कुंजी और पहले से सहेजे गए चेकपॉइंट के खिलाफ एक एक्सपोर्ट को सत्यापित करने देता है।

[स्थानीय दस्तावेज़ीकरण वेबसाइट](https://github.com/phishdestroy/TgWitness/blob/main/docs/internal/PUBLISHING.md#preview-the-website-locally)`/docs/concepts/` पर इंटरैक्टिव उदाहरण और `/docs/witness/` पर एक चेकपॉइंट निर्णय एक्सप्लोरर जोड़ती है। सभी उदाहरण संदेश, गणनाएं और देरी काल्पनिक हैं। चेन सैंडबॉक्स में हैश ब्राउज़र में SHA-256 के साथ गणना किए जाते हैं। कुछ भी टेलीग्राम पर नहीं भेजा जाता है।

## एक संदेश बदलता है; अवलोकन संचित होते हैं

क्रम आरेख · टेलीग्राम → संग्रहकर्ता: नया संदेश: 10:00 बजे मिलें; संग्रहकर्ता → हस्ताक्षरित जर्नल: संदेश जोड़ें।new; टेलीग्राम → संग्रहकर्ता: संपादन: 11:00 बजे मिलें; संग्रहकर्ता → हस्ताक्षरित जर्नल: संदेश संलग्न करें।संपादित; टेलीग्राम → संग्रहकर्ता: हटाने की सूचना; संग्रहकर्ता → हस्ताक्षरित जर्नल: संदेश.मिटाया गया जोड़ें; हस्ताक्षरित जर्नल पर नोट: मूल + संपादन + विलोपन अवलोकन बने रहते हैं · टेलीग्राम · संग्रहकर्ता · हस्ताक्षरित जर्नल · नया संदेश: 10:00 बजे मिलें · संदेश जोड़ें।new · संपादन: 11:00 बजे मिलें · संदेश संलग्न करें।संपादित · हटाने की सूचना · संदेश.मिटाया गया जोड़ें · मूल + संपादन + विलोपन अवलोकन बने रहते हैं

**चित्र को पाठ के रूप में**

1. टेलीग्राम → संग्रहकर्ता: नया संदेश: 10:00 बजे मिलें
2. संग्रहकर्ता → हस्ताक्षरित जर्नल: संदेश जोड़ें।new
3. टेलीग्राम → संग्रहकर्ता: संपादन: 11:00 बजे मिलें
4. संग्रहकर्ता → हस्ताक्षरित जर्नल: संदेश संलग्न करें।संपादित
5. टेलीग्राम → संग्रहकर्ता: हटाने की सूचना
6. संग्रहकर्ता → हस्ताक्षरित जर्नल: संदेश.मिटाया गया जोड़ें
7. हस्ताक्षरित जर्नल पर नोट: मूल + संपादन + विलोपन अवलोकन बने रहते हैं

यह सरलीकृत अनुक्रम यह मानता है कि टेलीग्राम ने प्रत्येक अपडेट डिलीवर किया और चयनित खाता इसे देख सकता था। परिचालन घटनाएँ भी जर्नल को साझा करती हैं। एक हटाने की सूचना हटाने वाले या हटाने का सटीक समय प्रदान नहीं करती है। दोहराई गई डिलीवरी अलग-अलग अवलोकन हैं; पूरे जर्नल में डुप्लिकेट को दबाया नहीं जाता है।

## एक हैश क्या कवर करता है

![निरीक्षण करें, एन्कोड करें, हैश करें और हस्ताक्षर करें: प्रत्येक नई घटना में पिछली हैश शामिल होती है।](https://phishdestroy.github.io/TgWitness/assets/evidence-chain-animated.svg)

फॉर्मूले को अंदर से बाहर की ओर पढ़ें: C नौ फ़ील्ड्स को सटीक बाइट्स में बदलता है; SHA-256 उनका डाइजेस्ट बनाता है; हेक्स वह तरीका है जिससे उस डाइजेस्ट को संग्रहीत किया जाता है। पिछला हैश पहले से ही इवेंट के अंदर है। अनहेक्स संग्रहीत हैश को वापस उन 32 बाइट्स में बदलता है जिन्हें Ed25519 साइन करता है।

[स्थिर श्रृंखला आरेख](https://github.com/phishdestroy/TgWitness/blob/main/docs/assets/presentation/evidence-chain-static.svg)

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 और इन्फिनिटी को अस्वीकार कर दिया गया है। [सटीक एन्कोडिंग](https://phishdestroy.github.io/TgWitness/hi/docs/reference/evidence/#event-canonicalization) देखें।

प्रवाह आरेख · 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 को बदलें, लेकिन इसके सहेजे गए हैश को बरकरार रखें | पुनर्गणित इवेंट हैश भिन्न होता है; इसका हस्ताक्षर अब बदले हुए इवेंट को कवर नहीं करता। |
| बदले हुए रिकॉर्ड और प्रत्येक बाद के हैश को पुनर्निर्माण करें | मूल हस्ताक्षर विफल हो जाते हैं; प्रभावित सीमा पर बनाए रखा गया चेकपॉइंट भी असंगत है |
| पूंछ हटाएँ लेकिन शेष उपसर्ग को बरकरार रखें | प्रदत्त प्रीफ़िक्स के परे एक पूर्व आरक्षित चेकपॉइंट यह दर्शाता है कि एक्सपोर्ट बहुत छोटा है |
| एक अन्य कुंजी के साथ प्रतिस्थापन जर्नल को पुनः हस्ताक्षरित करें | एक अलग भरोसेमंद कुंजी फिंगरप्रिंट प्रतिस्थापन पहचान को अस्वीकार करता है |

![सहेजे गए फ़ील्ड को बदलने से उसका डाइजेस्ट बदल जाता है; हैश को फिर से बनाने से मूल हस्ताक्षर बहाल नहीं होते।](https://phishdestroy.github.io/TgWitness/assets/evidence-tamper-animated.svg)

**रिकॉर्ड 2 पर लॉजिक आज़माएँ:** सहेजे गए इवेंट में `Meet at 11:00` को `Meet at 12:00` में बदलें। इसका पुनर्गणित हैश अब मेल नहीं खाता। बाद की चेन को फिर से गणना करने पर इसके लिंक ठीक हो सकते हैं, लेकिन यह मूल हस्ताक्षरों को नए डाइजेस्ट को कवर नहीं कर सकता। इसके विपरीत, एक देखी गई टेलीग्राम संपादन एक नया जर्नल रिकॉर्ड बन जाता है।

[स्थिर परिवर्तन आरेख](https://github.com/phishdestroy/TgWitness/blob/main/docs/assets/presentation/evidence-tamper-static.svg)

केवल हैश लिंक किसी को प्रतिस्थापन श्रृंखला की पुनः गणना करने से नहीं रोकते हैं। विश्वास स्वतंत्र रूप से विश्वसनीय कुंजी के तहत हस्ताक्षरों की जाँच करने और कलेक्टर के बाहर रखे गए संदर्भों से तुलना करने से आता है।

## एक पूर्व चेकपॉइंट क्या जोड़ता है

![3 का रिटेन काउंट और h3 हेडर बनाए रखें; 4 रिकॉर्ड का एक बाद का एक्सपोर्ट स्थिति 3 पर जांचा जाता है।](https://phishdestroy.github.io/TgWitness/assets/evidence-checkpoint-animated.svg)

**जर्नल के बढ़ने पर भी संदर्भ स्थिर रहता है।** यदि चेकपॉइंट कहता है "3 रिकॉर्ड, हेड h3", तो चार-रिकॉर्ड वाला एक्सपोर्ट, स्थिति 3 पर h3 से मेल खाकर पास हो सकता है। इसका नवीनतम हेड h4 है, जिसके अलग होने की उम्मीद है। केवल दो रिकॉर्ड का एक्सपोर्ट विफल हो जाता है।

[स्थिर चेकपॉइंट आरेख](https://github.com/phishdestroy/TgWitness/blob/main/docs/assets/presentation/evidence-checkpoint-static.svg)

चेकपॉइंट हस्ताक्षर सत्यापित करने के बाद, आवश्यक है:

Nexport ≥ Ncheckpoint and hexport[Ncheckpoint] = Hcheckpoint

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

## जहाँ एक गवाह का स्थान है

प्रवाह आरेख · कलेक्टर / खाता सत्र / कुंजी A → केवल-पठनीय चेकपॉइंट एंडपॉइंट; विटनेस / पिन किया गया कलेक्टर की / अपना की बी → अलग हस्ताक्षरित गवाह जर्नल; विटनेस / पिन किया गया कलेक्टर की / अपना की बी → केवल-पठनीय चेकपॉइंट एंडपॉइंट (चेक का अनुरोध करें); केवल-पठनीय चेकपॉइंट एंडपॉइंट → विटनेस / पिन किया गया कलेक्टर की / अपना की बी (हस्ताक्षरित उत्तर); विटनेस / पिन किया गया कलेक्टर की / अपना की बी → हस्ताक्षरित TGW1 पोस्ट वाला चैनल (बॉट एपीआई / अपना टोकन) · होस्ट A · होस्ट बी · कलेक्टर / खाता सत्र /कुंजी A · केवल-पठनीय चेकपॉइंटएंडपॉइंट · विटनेस / पिन किया गयाकलेक्टर की / अपना की बी · अलग हस्ताक्षरित गवाह जर्नल · हस्ताक्षरित TGW1 पोस्टवाला चैनल · चेक का अनुरोध करें · हस्ताक्षरित उत्तर · बॉट एपीआई / अपना टोकन

**चित्र को पाठ के रूप में**

1. कलेक्टर / खाता सत्र / कुंजी A → केवल-पठनीय चेकपॉइंट एंडपॉइंट
2. विटनेस / पिन किया गया कलेक्टर की / अपना की बी → अलग हस्ताक्षरित गवाह जर्नल
3. विटनेस / पिन किया गया कलेक्टर की / अपना की बी → केवल-पठनीय चेकपॉइंट एंडपॉइंट (चेक का अनुरोध करें)
4. केवल-पठनीय चेकपॉइंट एंडपॉइंट → विटनेस / पिन किया गया कलेक्टर की / अपना की बी (हस्ताक्षरित उत्तर)
5. विटनेस / पिन किया गया कलेक्टर की / अपना की बी → हस्ताक्षरित TGW1 पोस्ट वाला चैनल (बॉट एपीआई / अपना टोकन)

विटनेस रोलबैक, एक ही गिनती पर अलग हेड, बदली हुई कुंजियाँ, अमान्य उत्तर और अनुपस्थित प्रतिक्रियाओं को रिकॉर्ड करता है। केवल एक बड़ी गिनती यह स्थापित नहीं करती कि हर पिछला रिकॉर्ड अपरिवर्तित बना हुआ है; रखे गए चेकपॉइंट्स के साथ एक्सपोर्ट की तुलना करें। दूसरे होस्ट पर एक विटनेस कलेक्टर के होस्ट की आउटेज को साझा करने से बचाता है; एक अलग ऑपरेटर अतिरिक्त स्वतंत्रता प्रदान करता है।

गवाह कलेक्टर द्वारा रिपोर्ट की गई जर्नल की स्थिति की पुष्टि करता है। यह स्वतंत्र रूप से सभी टेलीग्राम संदेशों का अवलोकन नहीं करता है। [गवाह सेटअप](https://phishdestroy.github.io/TgWitness/hi/docs/reference/witness/) देखें।

## ज्ञात क्रियाकलापों के विरुद्ध परीक्षण वितरण

एक नियंत्रित समूह, अलग-अलग संग्रह खातों और एक नए मार्कर का उपयोग करें। जानबूझकर भेजें, संपादित करें और हटाएँ, हर चरण के बीच कैप्चर की जाँच करें। परिणामों की जाँच करने से पहले अपेक्षित क्रियाओं और एक कटऑफ़ को परिभाषित करें।

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

केवल मेल खाने वाली अपेक्षित क्रियाएँ ही गिने जाते हैं; डुप्लिकेट रसीदों से अंशक नहीं बढ़ता। विभाजक शून्य नहीं होना चाहिए। एक गुम हुई रसीद में कोई मापा गया विलंब नहीं होता है। घड़ी की अनिश्चितता को दस्तावेज़ करें; अपना स्वयं का नियंत्रित हटाने की क्रिया समय का उपयोग करें, क्योंकि टेलीग्राम सटीक हटाने का समय प्रदान नहीं करता है। 5/6 (83.3%) जैसा कोई परिणाम परीक्षण क्रियाओं का वर्णन करता है, न कि सभी टेलीग्राम ट्रैफ़िक की पूर्णता का।

## एक वर्कफ़्लो चुनें

[पूर्ण जांच वॉकथ्रू](https://phishdestroy.github.io/TgWitness/hi/docs/reference/investigation/) एक चैनल, समूह, बॉट और निजी चैट में हुई एक घटना का अनुसरण करता है:

1. पूरे खाते के जांच मोड को सक्षम करें और प्रत्येक सुलभ चैट की सूची बनाएं।
2. जर्नल स्नैपशॉट प्राप्त करें, प्रत्येक चैट का पूरा इतिहास और संरक्षित अटैचमेंट्स।
3. लाइव परिवर्तनों और किसी भी जानबूझकर किए गए पैनल इंटरैक्शन को उनके रसीदों सहित बनाए रखें।
4. उद्धृत रिकॉर्ड्स और लोगों की प्रोफाइल के माध्यम से संख्यात्मक प्रेषक आईडी, प्रतिक्रिया संबंध, दोहराए गए गंतव्य और फ़ाइल हैश का अनुसरण करें।
5. क्रॉस-चैट टाइमलाइन को टाइमस्टैम्प और स्पष्ट अंतरालों के साथ पुनर्निर्मित करें।
6. अन्य खाता वर्कस्पेस की तुलना करें, उनकी उत्पत्ति और कुंजियों को अलग रखते हुए।
7. हस्ताक्षरित जर्नल, प्रोफाइल और इतिहास एक्सपोर्ट्स को केस नोट्स के साथ संकलित और सत्यापित करें।

वेबसाइट के `/docs/cases/` गाइड में एक इंटरैक्टिव केस मैप और बॉट विवादों, हटाए गए संदेशों और नाम बदलने वाले प्रतिभागियों के लिए वेरिएंट शामिल हैं। केस नोट्स और क्रॉस-वर्कस्पेस विश्लेषण बाहरी हैं; एप्लिकेशन स्वचालित रूप से एक वैश्विक जांच ग्राफ या एक विलयित केस आर्काइव नहीं बनाता है।

[पूर्ण सत्यापन और शेष कार्य](https://phishdestroy.github.io/TgWitness/hi/docs/reference/verification/) · [निर्यात करें और सत्यापित करें](https://phishdestroy.github.io/TgWitness/hi/docs/reference/evidence/#investigation-handoff) · [एक खाते से शुरू करें](https://phishdestroy.github.io/TgWitness/hi/docs/reference/quickstart/)
