# ข้อมูลเวลา

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

การประทับเวลาตาม RFC 3161 สำหรับจุดตรวจสอบที่ลงนาม: สิ่งที่ส่งไปยังหน่วยงานที่มีอำนาจ และวิธีการตรวจสอบความถูกต้องของคำตอบ

TgWitness จัดเตรียมคำขอตาม RFC 3161 และตรวจสอบคำตอบจากหน่วยงานรับรองเวลา (TSA) ขั้นตอนด้วยมือนี้ไม่เลือก TSA หรือส่งข้อมูล; โหมดหลักฐานจะดำเนินการทั้งสองอย่างตาม กำหนดเวลา ([รูปแบบหลักฐาน](https://phishdestroy.github.io/TgWitness/th/docs/reference/evidence/#rfc-3161-preparation-and-response-verification-02)) คำขอที่จัดเตรียมไว้ **ยังไม่ถือเป็นหลักฐานการประทับเวลา**

## หลักฐานที่ผูกมัด

แผนผังกระบวนการ · ข้อสังเกตเกี่ยวกับบัญชี → โซ่ SHA-256 และลายเซ็น Ed25519; โซ่ SHA-256 และลายเซ็น Ed25519 → จุดตรวจสอบที่ลงนาม; จุดตรวจสอบที่ลงนาม → แฮชแบบไบต์ที่แม่นยำและ nonce แบบสุ่ม; แฮชแบบไบต์ที่แม่นยำและ nonce แบบสุ่ม → คำขอ RFC 3161; คำขอ RFC 3161 → TSA ที่อิสระ; TSA ที่อิสระ → คำตอบ TSA ที่ลงนาม; จุดตรวจสอบที่ลงนาม → ตรวจสอบข้อมูล, nonce และความเชื่อถือของ CA ที่ชัดเจน; คำตอบ TSA ที่ลงนาม → ตรวจสอบข้อมูล, nonce และความเชื่อถือของ CA ที่ชัดเจน · ข้อสังเกตเกี่ยวกับบัญชี · โซ่ SHA-256 และลายเซ็นEd25519 · จุดตรวจสอบที่ลงนาม · แฮชแบบไบต์ที่แม่นยำและnonce แบบสุ่ม · คำขอ RFC 3161 · TSA ที่อิสระ · คำตอบ TSA ที่ลงนาม · ตรวจสอบข้อมูล, nonceและความเชื่อถือของ CAที่ชัดเจน

**แผนภาพในรูปแบบข้อความ**

1. ข้อสังเกตเกี่ยวกับบัญชี → โซ่ SHA-256 และลายเซ็น Ed25519
2. โซ่ SHA-256 และลายเซ็น Ed25519 → จุดตรวจสอบที่ลงนาม
3. จุดตรวจสอบที่ลงนาม → แฮชแบบไบต์ที่แม่นยำและ nonce แบบสุ่ม
4. แฮชแบบไบต์ที่แม่นยำและ nonce แบบสุ่ม → คำขอ RFC 3161
5. คำขอ RFC 3161 → TSA ที่อิสระ
6. TSA ที่อิสระ → คำตอบ TSA ที่ลงนาม
7. จุดตรวจสอบที่ลงนาม → ตรวจสอบข้อมูล, nonce และความเชื่อถือของ CA ที่ชัดเจน
8. คำตอบ TSA ที่ลงนาม → ตรวจสอบข้อมูล, nonce และความเชื่อถือของ CA ที่ชัดเจน

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

## ขั้นตอน

1. เก็บรักษาลายนิ้วมือของกุญแจผู้เก็บรวบรวมผ่านช่องทางที่เชื่อถือได้แยกต่างหาก กุญแจ ที่ได้รับจากไฟล์ ZIP ที่ถูกตรวจสอบเท่านั้น ไม่เพียงพอที่จะระบุตัวผู้เก็บรวบรวม
2. ในส่วน **Exports → Prepare timestamp request** ให้ดาวน์โหลด ไฟล์ ZIP ของคำขอจากพื้นที่ทำงานที่เลือกไว้ แยกไฟล์ `checkpoint.json`, `timestamp.tsq`, `SHA256SUMS` และ `README.txt` ออกมา อย่าเปลี่ยนแปลงไบต์ของจุดตรวจสอบ
3. เลือก TSA ที่เหมาะสมกับการสอบสวน ส่ง `timestamp.tsq` โดยใช้วิธี ที่บันทึกไว้ พร้อมด้วย `application/timestamp-query` สำหรับบริการ HTTP บันทึกคำตอบแบบไบนารีต้นฉบับเป็น `timestamp.tsr` พร้อมทั้งจุดปลายทาง เวลาการดึงข้อมูล และผลลัพธ์ของคำขอ คำขอนี้ประกอบด้วยแฮชและนอนซ์แทนข้อความ; ข้อมูลเมตาของเครือข่ายยังคงเปิดเผยคำขอได้
4. รับใบรับรองรากที่เชื่อถือได้โดยไม่ขึ้นอยู่กับการตอบกลับ รวมถึง ใบรับรองตัวกลางที่จำเป็นทั้งหมด ใบรับรองที่อยู่ในคำตอบกลับจะไม่กลายเป็นใบรับรองที่เชื่อถือได้เพียง เพราะมันถูกรวมอยู่ในนั้น
5. จากระบบ TgWitness ที่ได้รับการเชื่อถือ ให้ตรวจสอบ:

```
python -m tgwitness.anchor verify --checkpoint checkpoint.json --request timestamp.tsq --response timestamp.tsr --ca trusted-tsa-root.pem
```

เพิ่ม `--intermediates tsa-intermediates.pem` หรือ `--openssl /path/to/openssl` หากจำเป็น OpenSSL ต้องสนับสนุน `ts` บน Windows โปรแกรมตรวจสอบยังค้นหาในติดตั้ง Git มาตรฐานด้วย OpenSSL 3.5.9 ได้ผ่านการทดสอบในระบบท้องถิ่นด้วย CA/TSA ที่สร้างขึ้นเอง

1. ส่งออกไฟล์ ZIP ของบันทึกที่ลงนามแล้วหลังจากจุดตรวจสอบ เพื่อให้ไฟล์ดังกล่าวมีคำนำหน้านั้น ตรวจสอบโดยใช้ลายนิ้วมือที่รู้จักกันโดยอิสระ:

```
python tgwitness/verify.py evidence.zip --fingerprint TRUSTED_SHA256 --checkpoint checkpoint.json
```

1. เก็บรักษาไฟล์ ZIP, จุดตรวจสอบ, คำขอ, คำตอบ, ห่วงโซ่ใบรับรอง, ผลการตรวจสอบ และบันทึกการส่งต่อข้อมูลไว้ภายนอกตัวเก็บข้อมูล ทำซ้ำการตรวจสอบเมื่อรับข้อมูล

เพื่อเตรียมคำขอจากจุดตรวจสอบที่บันทึกไว้:

```
python -m tgwitness.anchor prepare checkpoint.json --out timestamp-request.zip
```

ขั้นตอนการเตรียมข้อมูลจะจัดรูปแบบ JSON ให้เป็นมาตรฐานและรวมจุดตรวจสอบ (checkpoint) ที่ตรงกันไว้ในไฟล์เก็บถาวร ใช้**ไบต์**ของ**จุดตรวจสอบจากไฟล์เก็บถาวรนั้น**เพื่อตรวจสอบ TSA แม้ ไฟล์ต้นทางจะมีช่องว่าง (whitespace) ที่แตกต่างกัน

## ขอบเขตการตรวจสอบ

| ตรวจสอบ | พฤติกรรมปัจจุบัน |
| --- | --- |
| ข้อมูล | ค่า SHA-256 ของไบต์จุดตรวจสอบที่ตรงกันทุกประการต้องตรงกับคำตอบ |
| คำขอ | ด้วย`--request` การตรวจสอบความถูกต้องของคำค้นหาต้นฉบับและ nonce จะถูกดำเนินการ |
| ลายเซ็น TSA | OpenSSL ตรวจสอบลายเซ็นและสายโซ่การลงนามจนถึง CA ที่ระบุไว้อย่างชัดเจน |
| ลายเซ็นของ Collector | ได้รับการตรวจสอบแยกต่างหากโดยผู้ตรวจสอบบันทึกด้วยกุญแจที่ตรึงไว้ |
| การเพิกถอน | ไม่มีการดึงข้อมูล OCSP/CRL แบบอัตโนมัติ |
| ความถูกต้องในระยะยาว | ไม่มีการตรวจสอบความถูกต้องของข้อมูลที่เก็บไว้หลังจากที่ใบรับรองหมดอายุ |
| กำหนดส่ง | โหมดหลักฐาน ปิดตามค่าเริ่มต้น |

`--request` เป็นตัวเลือกทางเทคนิค แต่การไม่ใส่จะทำให้ไม่สามารถตรวจสอบ nonce ต้นฉบับได้ สำหรับขั้นตอนทั้งหมดนี้ ผลลัพธ์ของ `request_checked` ต้องเป็น true การตรวจสอบใบรับรองจะปฏิบัติตามกฎและระยะเวลาการตรวจสอบของ OpenSSL ที่ติดตั้งไว้ การเก็บรักษาในระยะยาวจำเป็นต้องมีนโยบายใบรับรอง/หลักฐานการเพิกถอนที่แยกต่างหาก

ลายเซ็นเข้ารหัสที่ถูกต้องไม่ได้ถือเป็นเวลาประทับที่ได้รับการรับรองโดยอัตโนมัติ หรือ การตัดสินว่าหลักฐานนั้นสามารถรับฟังได้ในทางกฎหมาย หากผู้ดำเนินการสร้างข้อมูลสังเกตการณ์ขึ้นมาก่อน การประทับเวลา TSA จะยึดข้อมูลไบต์เหล่านั้นไว้ แต่ไม่ได้ยืนยันความจริงของข้อมูลดังกล่าว

## บันทึกการส่งต่อ

บันทึกตัวระบุคดี ผู้ส่งและผู้รับ เวลาส่งตาม UTC และแหล่งที่มา วัตถุประสงค์ ชื่อไฟล์/ค่า SHA-256 ลายนิ้วมือผู้เก็บรวบรวม ช่วงลำดับ ช่องว่างที่ทราบ เวอร์ชันผู้ตรวจสอบ และผลการตรวจสอบ ลงนามและเก็บรักษาบันทึกนี้ อย่างอิสระผ่านกระบวนการขององค์กรของคุณ ระบบบันทึกการเก็บรักษาแบบหลายผู้ใช้ ยังไม่ถูกนำไปใช้ใน TgWitness

ไม่มีการติดต่อกับ TSA แบบสดอิสระใด ๆ ระหว่างการพัฒนา การทดสอบในระบบท้องถิ่นจะสร้าง CA/TSA สังเคราะห์ขึ้นเพื่อตรวจสอบความเข้ากันได้และการปฏิเสธข้อมูลที่เปลี่ยนแปลง nonce หรือ CA
