# ดูวิธีการทำงานของหลักฐาน

Canonical page: https://phishdestroy.github.io/TgWitness/th/docs/concepts/

ข้อความอาจเปลี่ยนแปลงได้ แต่บันทึกของสิ่งที่คุณสังเกตเห็นควรยังคงสามารถตรวจสอบได้

ลองดูสองการทดลองเล็กๆ ด้านล่างนี้ ซึ่งใช้ข้อความสมมติ ทำงานภายในเบราว์เซอร์ของคุณ และไม่เชื่อมต่อกับ Telegram เลย

## ข้อความหนึ่ง ข้อสังเกตสามข้อ

เมื่อ Telegram ส่งข้อความใหม่ หรือการแจ้งเตือนการแก้ไขและการลบ แอปผู้รวบรวมข้อมูลจะเพิ่มบันทึกการสังเกตสามรายการที่แยกกัน การแก้ไขจะไม่แทนที่บันทึกแรก การแจ้งเตือนการลบจะไม่ลบมันออกไป

01 / เส้นทางของข้อความลำดับภาพประกอบ

Telegram delivers an update to the collector, which appends a journal record. · Telegram · Collector · บันทึก · อัปเดต → · เพิ่ม →

มุมมองการสนทนาปัจจุบัน ข้อความ #42

ข้อความถูกลบ

ข้อความดังกล่าวได้หายไปแล้วจากหน้าจอสนทนา

บันทึกการสังเกต 3 รายการ

1. 01

   `message.new`

   พบกันเวลา 10:00

   ✓
2. 02

   `message.edited`

   พบกันเวลา 11:00

   ✓
3. 03

   `message.deleted`

   ประกาศการลบสำหรับ #42

   ✓

ทั้งสามข้อสังเกตที่ได้รับยังคงอยู่ในบันทึก

ขั้นตอนที่เรียบง่ายสำหรับแหล่งข้อมูลที่เลือกไว้แล้วหนึ่งแห่ง บันทึกการดำเนินงานยังแบ่งปันกับบันทึกจริงด้วย การบันทึกข้อมูลขึ้นอยู่กับสิ่งที่บัญชีนั้นสามารถเห็นได้และสิ่งที่ Telegram ส่งมา

การแจ้งการลบข้อความไม่ระบุทั้งเวลาการลบที่เชื่อถือได้และบุคคลที่ลบข้อความ การไม่เปิดเผยข้อมูลดังกล่าวช่วยรักษาความแตกต่างระหว่างการสังเกตและการคาดเดา

## แก้ไขบันทึก ติดตามแฮช

แต่ละบันทึกจะประกอบด้วยค่าแฮชของบันทึกก่อนหน้า ส่วนค่าแฮชของบันทึกนั้นเองจะครอบคลุมสนามข้อมูลของเหตุการณ์ รวมถึงลิงก์ดังกล่าวด้วย จุดตรวจสอบ (checkpoint) ที่เก็บไว้ภายนอกจะกำหนดความยาวของบันทึกและค่าแฮชส่วนหัว (head hash) ที่เฉพาะเจาะจง

02 / HASH-CHAIN SANDBOXSHA-256 ที่แท้จริง · ตัวอย่างบันทึก

บันทึก 01**รับข้อความแล้ว**`h₁ = SHA-256(e₁)`ลิงก์ไปยัง 64 zeroes

RECORD 02**พบกันเวลา 11:00**`h₂ = SHA-256(e₂)`รวมถึง h₁

RECORD 03**สังเกตเห็นการลบ**`h₃ = SHA-256(e₃)`รวมถึง h₂

เก็บไว้ที่อื่น**3 รายการ · หัวข้อ`h₃`**เปรียบเทียบขอบเขตที่กำหนดนี้กับบันทึกที่ให้มา

การแก้ไขเหตุการณ์จะเปลี่ยนค่าแฮชของมัน การสร้างใหม่ของโซ่จะเปลี่ยนหัวของมัน การลบส่วนท้ายจะทำให้มันสั้นกว่าจุดตรวจสอบที่เก็บไว้

**ตรวจสอบบันทึกที่ 2 และค่าแฮชทั้งหมด**

นี่คือ JSON UTF-8 ที่ถูกแฮชในตัวอย่างนี้อย่างแม่นยำ ค่าต่างๆ เป็นค่าสมมติ; สนามทั้งเก้าและกระบวนการซีเรียลไลเซชันสอดคล้องกับรูปแบบของบันทึก

```

```

บันทึกที่เก็บไว้ 2 hash

``

คำนวณใหม่ค่าแฮชของบันทึกที่ 2

``

แซนด์บ็อกซ์นี้คำนวณค่าแฮชเท่านั้น ไม่ใช่ลายเซ็น ผู้ตรวจสอบจริงยังตรวจสอบลายเซ็น Ed25519 ลำดับ และลิงก์ของทุกเหตุการณ์ด้วย การสร้างค่าแฮชใหม่เพียงอย่างเดียวไม่สามารถสร้างลายเซ็นที่ถูกต้องภายใต้กุญแจที่เชื่อถือได้

## กฎระเบียบจริง ๆ ในไม่กี่บรรทัด

HASH + SIGNATURE

h0 = 064
hi = hex(SHA-256(C(ei)))
σi = Ed25519.Sign(sk, unhex(hi))

**C** จัดเรียงฟิลด์เหตุการณ์ทั้งเก้าเป็น JSON แบบ UTF-8: คีย์เรียงลำดับ ไม่มีช่องว่างเพิ่มเติม ไม่มีการหลบหลีก ASCII และไม่มี NaN/infinity ค่า `previous_hash` ของเหตุการณ์คือ hi−1 ค่า h0 ที่แสดงหมายถึงตัวอักษรศูนย์ 64 ตัว; ลายเซ็นครอบคลุม 32 ไบต์ของดิบของ digest

สนามทั้งเก้าคือ `seq`, `observed_at`, `source_at`, `kind`, `chat_id`, `message_id`, `actor_id`, `payload` และ `previous_hash` นี่คือ[รูปแบบการเข้ารหัส JSON ที่ TgWitness กำหนดไว้](https://phishdestroy.github.io/TgWitness/th/docs/reference/evidence/#event-canonicalization); ส่วนค่าแฮชและลายเซ็นเองไม่ใช่สนามสำหรับป้อนค่าแฮช

จุดตรวจสอบที่เก็บไว้

Nexport ≥ Ncheckpoint
hexport[Ncheckpoint] = Hcheckpoint

ตรวจสอบลายเซ็นของจุดตรวจสอบภายใต้กุญแจผู้เก็บข้อมูลที่ถูกตรึงไว้ แล้วเปรียบเทียบขอบเขตของมันกับบันทึกที่ได้รับการตรวจสอบแล้ว การส่งออกข้อมูลในภายหลังอาจมีบันทึกเพิ่มเติม แต่ต้องสอดคล้องกับจุดตรวจสอบก่อนหน้านี้

## สามคำถาม สามขั้นตอนการตรวจสอบที่แตกต่างกัน

[01 / ความสมบูรณ์**บันทึกนี้มีการเปลี่ยนแปลงหรือไม่?** ตรวจสอบค่าแฮชและลายเซ็นโดยใช้กุญแจที่เชื่อถือได้แยกต่างหาก](https://phishdestroy.github.io/TgWitness/th/docs/exports/)[02 / ความต่อเนื่อง**เนื้อหาที่เก็บไว้ก่อนหน้านี้คืออะไร?** เปรียบเทียบไฟล์ส่งออกที่ลงนามกับจุดตรวจสอบที่เก็บไว้โดยพยานอิสระ](https://phishdestroy.github.io/TgWitness/th/docs/witness/)[03 / การส่งมอบ**เหตุการณ์ทดสอบเหล่านี้ได้รับแล้วหรือไม่?** เปรียบเทียบการส่ง แก้ไข และลบที่ควบคุมไว้กับบันทึกของบัญชีแต่ละบัญชี](https://phishdestroy.github.io/TgWitness/th/docs/cases/)

โซ่แฮชที่ตรงกันจะตอบคำถามเกี่ยวกับความสมบูรณ์ของข้อมูล แต่ไม่ยืนยันการส่งข้อความ Telegram อย่างสมบูรณ์ ความจริงของข้อความ หรือเวลาการสังเกตที่เชื่อถือได้อย่างอิสระ

ติดตามกระบวนการ[สืบสวนบัญชีทั้งหมด](https://phishdestroy.github.io/TgWitness/th/docs/cases/) ตั้งแต่ขั้นตอนการรวบรวมข้อมูลจนถึงการจัดทำชุดเอกสารคดี
