TgWitness / เอกสาร

อ้างอิง / หลักฐาน

ข้อมูลเวลา

การประทับเวลาตาม 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 ที่ชัดเจนข้อสังเกตเกี่ยวกับบัญชีโซ่ SHA-256 และลายเซ็นEd25519จุดตรวจสอบที่ลงนามแฮชแบบไบต์ที่แม่นยำและnonce แบบสุ่มคำขอ RFC 3161TSA ที่อิสระคำตอบ 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