# প্রমাণ কীভাবে কাজ করে

Canonical page: https://phishdestroy.github.io/TgWitness/bn/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 দিয়ে গণনা করা হয়। টেলিগ্রামে কিছুই পাঠানো হয় না।

## একটি বার্তা পরিবর্তিত হয়; পর্যবেক্ষণগুলো জমা হয়।

ক্রমচিত্র · টেলিগ্রাম → সংগ্রাহক: নতুন বার্তা: ১০:০০ টায় মিলিত হোন; সংগ্রাহক → স্বাক্ষরিত জার্নাল: message.new সংযুক্ত করুন; টেলিগ্রাম → সংগ্রাহক: সম্পাদনা: ১১:০০ টায় মিলিত হোন; সংগ্রাহক → স্বাক্ষরিত জার্নাল: বার্তায় সংযোজন: সম্পাদিত; টেলিগ্রাম → সংগ্রাহক: মোছার বিজ্ঞপ্তি; সংগ্রাহক → স্বাক্ষরিত জার্নাল: message.deleted সংযুক্ত করুন; স্বাক্ষরিত জার্নাল-এর নোট: মূল + সম্পাদনা + মুছে ফেলার পর্যবেক্ষণ অবশিষ্ট · টেলিগ্রাম · সংগ্রাহক · স্বাক্ষরিত জার্নাল · নতুন বার্তা: ১০:০০ টায় মিলিত হোন · message.new সংযুক্ত করুন · সম্পাদনা: ১১:০০ টায় মিলিত হোন · বার্তায় সংযোজন: সম্পাদিত · মোছার বিজ্ঞপ্তি · message.deleted সংযুক্ত করুন · মূল + সম্পাদনা + মুছে ফেলার পর্যবেক্ষণ অবশিষ্ট

**ডায়াগ্রাম টেক্সট হিসেবে**

1. টেলিগ্রাম → সংগ্রাহক: নতুন বার্তা: ১০:০০ টায় মিলিত হোন
2. সংগ্রাহক → স্বাক্ষরিত জার্নাল: message.new সংযুক্ত করুন
3. টেলিগ্রাম → সংগ্রাহক: সম্পাদনা: ১১:০০ টায় মিলিত হোন
4. সংগ্রাহক → স্বাক্ষরিত জার্নাল: বার্তায় সংযোজন: সম্পাদিত
5. টেলিগ্রাম → সংগ্রাহক: মোছার বিজ্ঞপ্তি
6. সংগ্রাহক → স্বাক্ষরিত জার্নাল: message.deleted সংযুক্ত করুন
7. স্বাক্ষরিত জার্নাল-এর নোট: মূল + সম্পাদনা + মুছে ফেলার পর্যবেক্ষণ অবশিষ্ট

এই সরলীকৃত ক্রমটি ধরে নেয় যে টেলিগ্রাম প্রতিটি আপডেট পৌঁছে দিয়েছে এবং নির্বাচিত অ্যাকাউন্ট তা দেখতে পেরেছে। অপারেশনাল ইভেন্টগুলোও জার্নাল শেয়ার করে। মুছে ফেলার নোটিশে মুছে ফেলারকারী বা মুছে ফেলার সঠিক সময় উল্লেখ থাকে না। পুনরাবৃত্তি ডেলিভারিগুলো পৃথক পর্যবেক্ষণ; জার্নাল-ব্যাপী ডুপ্লিকেট সাপ্রেশন নেই।

## একটি হ্যাশ কী কভার করে

![পর্যবেক্ষণ করুন, এনকোড করুন, হ্যাশ করুন এবং স্বাক্ষর করুন: প্রতিটি নতুন ইভেন্টে পূর্ববর্তী হ্যাশ অন্তর্ভুক্ত থাকে।](https://phishdestroy.github.io/TgWitness/assets/evidence-chain-animated.svg)

সূত্রটি ভিতর থেকে বাইরে পড়ুন: C নয়টি ক্ষেত্রকে সঠিক বাইট-এ রূপান্তর করে; SHA-256 তাদের ডাইজেস্ট তৈরি করে; হেক্স হল সেই ডাইজেস্ট সংরক্ষণের পদ্ধতি। পূর্ববর্তী হ্যাশ ইভেন্টের ভিতরেই রয়েছে। আনহেক্স সংরক্ষিত হ্যাশকে আবার ৩২ বাইটে রূপান্তর করে, যেগুলো Ed25519 স্বাক্ষর করে।

[স্থিতিশীল চেইন ডায়াগ্রাম](https://github.com/phishdestroy/TgWitness/blob/main/docs/assets/presentation/evidence-chain-static.svg)

C(ei) হোক নয়টি ইভেন্ট ফিল্ডের ক্যানোনিক্যাল UTF-8 JSON। প্রথম `previous_hash` হল ৬৪টি শূন্য অক্ষর। প্রতিটি পরবর্তী রেকর্ডে পূর্ববর্তী রেকর্ডের হেক্সাডেসিমাল হ্যাশ অন্তর্ভুক্ত থাকে:

hi = hex(SHA256(C(ei)))

σi = Ed25519.Sign(sk,unhex(hi))

স্বাক্ষরটি ৩২টি কাঁচা ডাইজেস্ট বাইটকে কভার করে। হ্যাশ ইনপুটে ঠিক `seq`, `observed_at`, `source_at`, `kind`, `chat_id`, `message_id`, `actor_id`, `payload` এবং `previous_hash` রয়েছে। অবজেক্ট কীগুলো সাজানো আছে; হোয়াইটস্পেস এবং ASCII এস্কেপিং বাদ দেওয়া হয়েছে; NaN এবং ইনফিনিটি প্রত্যাখ্যাত। [সঠিক এনকোডিং](https://phishdestroy.github.io/TgWitness/bn/docs/reference/evidence/#event-canonicalization) দেখুন।

প্রবাহ চিত্র · ৬৪টি শূন্য অক্ষর → রেকর্ড ১ / হ্যাশ h1; রেকর্ড ১ / হ্যাশ h1 → রেকর্ড 2-এ h1 / হ্যাশ h2 অন্তর্ভুক্ত; রেকর্ড 2-এ h1 / হ্যাশ h2 অন্তর্ভুক্ত → রেকর্ড ৩-এ h2 / hash h3 অন্তর্ভুক্ত; রেকর্ড ৩-এ h2 / hash h3 অন্তর্ভুক্ত → স্বাক্ষরিত চেকপয়েন্ট: ৩ নম্বর, h3 শিরোনাম (অন্যত্র সংরক্ষণ করুন) · ৬৪টি শূন্য অক্ষর · রেকর্ড ১ / হ্যাশ h1 · রেকর্ড 2-এ h1 / হ্যাশh2 অন্তর্ভুক্ত · রেকর্ড ৩-এ h2 / hashh3 অন্তর্ভুক্ত · স্বাক্ষরিত চেকপয়েন্ট:৩ নম্বর, h3 শিরোনাম · অন্যত্র সংরক্ষণ করুন

**ডায়াগ্রাম টেক্সট হিসেবে**

1. ৬৪টি শূন্য অক্ষর → রেকর্ড ১ / হ্যাশ h1
2. রেকর্ড ১ / হ্যাশ h1 → রেকর্ড 2-এ h1 / হ্যাশ h2 অন্তর্ভুক্ত
3. রেকর্ড 2-এ h1 / হ্যাশ h2 অন্তর্ভুক্ত → রেকর্ড ৩-এ h2 / hash h3 অন্তর্ভুক্ত
4. রেকর্ড ৩-এ h2 / hash h3 অন্তর্ভুক্ত → স্বাক্ষরিত চেকপয়েন্ট: ৩ নম্বর, 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)

শুধুমাত্র হ্যাশ লিঙ্কই কাউকে প্রতিস্থাপন চেইন পুনরায় গণনা করা থেকে বিরত রাখতে পারে না। বিশ্বাস আসে স্বতন্ত্রভাবে বিশ্বাসযোগ্য কী-এর অধীনে স্বাক্ষরগুলো যাচাই করে এবং সংগ্রাহকের বাইরে সংরক্ষিত রেফারেন্সগুলোর সাথে তুলনা করার মাধ্যমে।

## একটি পূর্বের চেকপয়েন্ট কী যোগ করে

![count 3 বজায় রাখুন এবং h3 শিরোনাম ব্যবহার করুন; পরবর্তী 4 রেকর্ডের এক্সপোর্ট অবস্থান 3-এ পরীক্ষা করা হয়।](https://phishdestroy.github.io/TgWitness/assets/evidence-checkpoint-animated.svg)

**রেফারেন্স স্থির থাকে, আর জার্নাল বৃদ্ধি পায়।** যদি চেকপয়েন্ট বলে "৩টি রেকর্ড, হেড h3", তাহলে অবস্থান ৩-এ h3 মেলা চারটি রেকর্ডের একটি এক্সপোর্ট পাস হয়ে যেতে পারে। এর নতুনতম হেড h4, যা ভিন্ন হবে বলে আশা করা হচ্ছে। শুধুমাত্র দুইটি রেকর্ডের একটি এক্সপোর্ট ব্যর্থ হয়।

[স্থির চেকপয়েন্ট ডায়াগ্রাম](https://github.com/phishdestroy/TgWitness/blob/main/docs/assets/presentation/evidence-checkpoint-static.svg)

চেকপয়েন্ট স্বাক্ষর যাচাই করার পর, প্রয়োজন:

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 / নিজস্ব টোকেন)

সাক্ষ্য রেকর্ড করে রোলব্যাক, একই গণনায় ভিন্ন হেড, পরিবর্তিত কী, অবৈধ উত্তর এবং অনুপস্থিত প্রতিক্রিয়া। শুধুমাত্র বড় গণনা করলেই বোঝা যায় না যে প্রতিটি পূর্ববর্তী রেকর্ড অপরিবর্তিত আছে; রক্ষিত চেকপয়েন্টের সাথে এক্সপোর্ট তুলনা করুন। অন্য হোস্টে থাকা একজন সাক্ষ্য কালেক্টরের হোস্টের ডাউনটাইম শেয়ার করা এড়ায়; একজন পৃথক অপারেটর অতিরিক্ত স্বাধীনতা প্রদান করে।

সাক্ষী কালেক্টরের রিপোর্টকৃত জার্নাল অবস্থা নিশ্চিত করে। এটি স্বতন্ত্রভাবে সব টেলিগ্রাম বার্তা পর্যবেক্ষণ করে না। [সাক্ষী সেটআপ](https://phishdestroy.github.io/TgWitness/bn/docs/reference/witness/) দেখুন।

## পরিচিত ক্রিয়াগুলির বিরুদ্ধে ডেলিভারি পরীক্ষা করুন

একটি নিয়ন্ত্রিত গ্রুপ, পৃথক সংগ্রহ অ্যাকাউন্ট এবং একটি নতুন মার্কার ব্যবহার করুন। পাঠান, সম্পাদনা এবং ইচ্ছাকৃতভাবে মুছে ফেলুন, পর্যায়গুলোর মধ্যে ক্যাপচার পরীক্ষা করুন। ফলাফল পরিদর্শনের আগে প্রত্যাশিত ক্রিয়া এবং একটি কাটঅফ নির্ধারণ করুন।

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

শুধুমাত্র প্রত্যাশিত ক্রিয়াগুলি গণনা করা হয়; ডুপ্লিকেট রসিদগুলো অঙ্ককে বৃদ্ধি করে না। হর শূন্য হওয়া উচিত নয়। কোনো রসিদ অনুপস্থিত থাকলে তার কোনো পরিমাপকৃত বিলম্ব থাকে না। ঘড়ির অনিশ্চয়তা নথিভুক্ত করুন; আপনার নিজস্ব নিয়ন্ত্রিত মুছে ফেলার ক্রিয়া সময় ব্যবহার করুন, কারণ টেলিগ্রাম সঠিক মুছে ফেলার সময় প্রদান করে না। 5/6 (83.3%) এর মতো একটি ফলাফল পরীক্ষার কার্যক্রমকে বর্ণনা করে, সমস্ত টেলিগ্রাম ট্র্যাফিকের পরিপূর্ণতাকে নয়।

## একটি ওয়ার্কফ্লো নির্বাচন করুন

[সম্পূর্ণ তদন্তের ওয়াকথ্রু](https://phishdestroy.github.io/TgWitness/bn/docs/reference/investigation/) একটি ঘটনা অনুসরণ করে যা একটি চ্যানেল, গ্রুপ, বট এবং ব্যক্তিগত চ্যাটের মধ্য দিয়ে ঘটে:

1. পুরো অ্যাকাউন্ট তদন্ত মোড সক্ষম করুন এবং প্রতিটি প্রবেশযোগ্য চ্যাট তালিকাভুক্ত করুন।
2. জার্নাল স্ন্যাপশট, প্রতিটি চ্যাটের সম্পূর্ণ ইতিহাস এবং সংরক্ষিত সংযুক্তি অর্জন করুন।
3. লাইভ পরিবর্তন এবং যেকোনো ইচ্ছাকৃত প্যানেল ইন্টারঅ্যাকশনগুলোকে তাদের রসিদসহ সংরক্ষণ করুন।
4. উদ্ধৃত রেকর্ড এবং ব্যক্তি প্রোফাইলের মাধ্যমে সংখ্যাত্মক প্রেরক আইডি, উত্তর সম্পর্ক, পুনরাবৃত্তি গন্তব্য এবং ফাইল হ্যাশ অনুসরণ করুন।
5. সময়-স্ট্যাম্প এবং স্পষ্ট ফাঁক উভয়ই সহ একটি ক্রস-চ্যাট টাইমলাইন পুনর্গঠন করুন।
6. অন্যান্য অ্যাকাউন্ট ওয়ার্কস্পেসগুলো তুলনা করুন, তাদের উৎস এবং কীগুলো পৃথক রেখে।
7. স্বাক্ষরিত জার্নাল, প্রোফাইল এবং ইতিহাস এক্সপোর্টগুলো কেস নোটসহ একত্রিত করুন এবং যাচাই করুন।

ওয়েবসাইটের `/docs/cases/` গাইডে একটি ইন্টারেক্টিভ কেস ম্যাপ এবং বট বিরোধ, মুছে ফেলা বার্তা ও অংশগ্রহণকারীদের নাম পরিবর্তনের জন্য ভ্যারিয়েন্ট রয়েছে। কেস নোট এবং ক্রস-ওয়ার্কস্পেস বিশ্লেষণ বাহ্যিক; অ্যাপ্লিকেশন স্বয়ংক্রিয়ভাবে কোনো গ্লোবাল তদন্ত গ্রাফ বা মার্জড কেস আর্কাইভ তৈরি করে না।

[সম্পন্ন যাচাইকরণ এবং বাকি কাজ](https://phishdestroy.github.io/TgWitness/bn/docs/reference/verification/) · [রপ্তানি এবং যাচাই করুন](https://phishdestroy.github.io/TgWitness/bn/docs/reference/evidence/#investigation-handoff) · [একটি অ্যাকাউন্ট দিয়ে শুরু করুন](https://phishdestroy.github.io/TgWitness/bn/docs/reference/quickstart/)
