อ้างอิง / หลักฐาน
ข้อมูลเวลา
การประทับเวลาตาม RFC 3161 สำหรับจุดตรวจสอบที่ลงนาม: สิ่งที่ส่งไปยังหน่วยงานที่มีอำนาจ และวิธีการตรวจสอบความถูกต้องของคำตอบ
TgWitness จัดเตรียมคำขอตาม RFC 3161 และตรวจสอบคำตอบจากหน่วยงานรับรองเวลา (TSA) ขั้นตอนด้วยมือนี้ไม่เลือก TSA หรือส่งข้อมูล; โหมดหลักฐานจะดำเนินการทั้งสองอย่างตาม กำหนดเวลา (รูปแบบหลักฐาน) คำขอที่จัดเตรียมไว้ ยังไม่ถือเป็นหลักฐานการประทับเวลา
หลักฐานที่ผูกมัด#
แผนภาพในรูปแบบข้อความ
- ข้อสังเกตเกี่ยวกับบัญชี → โซ่ SHA-256 และลายเซ็น Ed25519
- โซ่ SHA-256 และลายเซ็น Ed25519 → จุดตรวจสอบที่ลงนาม
- จุดตรวจสอบที่ลงนาม → แฮชแบบไบต์ที่แม่นยำและ nonce แบบสุ่ม
- แฮชแบบไบต์ที่แม่นยำและ nonce แบบสุ่ม → คำขอ RFC 3161
- คำขอ RFC 3161 → TSA ที่อิสระ
- TSA ที่อิสระ → คำตอบ TSA ที่ลงนาม
- จุดตรวจสอบที่ลงนาม → ตรวจสอบข้อมูล, nonce และความเชื่อถือของ CA ที่ชัดเจน
- คำตอบ TSA ที่ลงนาม → ตรวจสอบข้อมูล, nonce และความเชื่อถือของ CA ที่ชัดเจน
ลายเซ็นของตัวเก็บข้อมูลจะผูกบันทึกกับกุญแจของมัน การตอบกลับที่เชื่อถือได้จาก TSA สามารถ ยืนยันได้ว่าจุดตรวจสอบเฉพาะนั้นได้มีอยู่ตามเวลาที่ TSA ระบุไว้ จุดตรวจสอบ ดังกล่าวสามารถผูกกับคำนำหน้าของบันทึกได้ อย่างไรก็ตาม สิ่งนี้ไม่ยืนยันเวลา ของการดำเนินการแต่ละครั้งใน Telegram หรือความจริงของเนื้อหาที่ถูกบันทึก
ขั้นตอน#
- เก็บรักษาลายนิ้วมือของกุญแจผู้เก็บรวบรวมผ่านช่องทางที่เชื่อถือได้แยกต่างหาก กุญแจ ที่ได้รับจากไฟล์ ZIP ที่ถูกตรวจสอบเท่านั้น ไม่เพียงพอที่จะระบุตัวผู้เก็บรวบรวม
- ในส่วน Exports → Prepare timestamp request ให้ดาวน์โหลด
ไฟล์ ZIP ของคำขอจากพื้นที่ทำงานที่เลือกไว้ แยกไฟล์
checkpoint.json,timestamp.tsq,SHA256SUMSและREADME.txtออกมา อย่าเปลี่ยนแปลงไบต์ของจุดตรวจสอบ - เลือก TSA ที่เหมาะสมกับการสอบสวน ส่ง
timestamp.tsqโดยใช้วิธี ที่บันทึกไว้ พร้อมด้วยapplication/timestamp-queryสำหรับบริการ HTTP บันทึกคำตอบแบบไบนารีต้นฉบับเป็นtimestamp.tsrพร้อมทั้งจุดปลายทาง เวลาการดึงข้อมูล และผลลัพธ์ของคำขอ คำขอนี้ประกอบด้วยแฮชและนอนซ์แทนข้อความ; ข้อมูลเมตาของเครือข่ายยังคงเปิดเผยคำขอได้ - รับใบรับรองรากที่เชื่อถือได้โดยไม่ขึ้นอยู่กับการตอบกลับ รวมถึง ใบรับรองตัวกลางที่จำเป็นทั้งหมด ใบรับรองที่อยู่ในคำตอบกลับจะไม่กลายเป็นใบรับรองที่เชื่อถือได้เพียง เพราะมันถูกรวมอยู่ในนั้น
- จากระบบ 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 ที่สร้างขึ้นเอง
- ส่งออกไฟล์ ZIP ของบันทึกที่ลงนามแล้วหลังจากจุดตรวจสอบ เพื่อให้ไฟล์ดังกล่าวมีคำนำหน้านั้น ตรวจสอบโดยใช้ลายนิ้วมือที่รู้จักกันโดยอิสระ:
python tgwitness/verify.py evidence.zip --fingerprint TRUSTED_SHA256 --checkpoint checkpoint.json
- เก็บรักษาไฟล์ 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