ข้ามไปยังเนื้อหา
getnextpdf.com

เวลาที่เชื่อถือได้: ไทม์สแตมป์พิสูจน์ 'เมื่อใด' ได้อย่างไร

Spec: RFC 3161Spec: RFC 5816Spec: ISO 32000-2, §12.8.5

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

นี่คือคู่หูเชิงหลักการพื้นฐานของหน้า ไทม์สแตมป์และเวลาที่เชื่อถือได้ ที่เน้นเอนจิน จงอ่านหน้านี้ก่อนหากคำว่า “เวลาที่เชื่อถือได้” ฟังดูเหมือนศัพท์เฉพาะ

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

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

  • ไทม์สแตมป์พิสูจน์ว่าข้อมูลชิ้นหนึ่ง มีอยู่ก่อน ช่วงเวลาที่ระบุ นั่นคือ ขอบเขตบน ของอายุ ไม่มากไปกว่านั้น
  • มันถูกสร้างโดยบุคคลที่สาม คือ ผู้ออกไทม์สแตมป์ (Time-Stamp Authority, TSA) ซึ่งคุณไว้ใจนาฬิกาของเขาก็เพราะมันไม่ใช่ของคุณ
  • TSA ไม่เคยเห็นข้อมูลของคุณ มันลงนามบน แฮช ของข้อมูลที่ผูกเข้ากับค่าเวลา แล้วส่ง โทเค็น ที่ลงนามแล้วขนาดเล็กกลับมา
  • โทเค็นพิสูจน์สามสิ่งพร้อมกัน คือข้อมูลเป็นข้อมูลนั้นจริง (แฮชตรงกัน) เวลาเป็นเวลาของ TSA (ลายเซ็นของมัน) และคำตอบตรงกับคำขอที่คุณส่งไป (nonce ที่มันสะท้อนกลับ ซึ่งป้องกันการตอบเก่าที่ถูกเล่นซ้ำ)
  • มัน ไม่ พิสูจน์ว่าใครเขียนข้อมูล ว่าข้อมูลเป็นความจริง หรือช่วงเวลาที่สร้างอย่างแม่นยำ เพียงว่า ไม่ช้ากว่า เวลานี้
  • ความเชื่อถือไหลไปสู่ TSA คือ TSA ที่ได้รับความเชื่อถือสาธารณะดีพอสำหรับบันทึกส่วนใหญ่ ส่วน TSA ที่ ผ่านการรับรองตาม eIDAS มีข้อสันนิษฐานทางกฎหมายในสหภาพยุโรป

เริ่มจากกลเม็ดที่อยู่ตรงใจกลางของทั้งหมด คุณต้องการให้คนแปลกหน้ารับรองว่าข้อมูลของคุณมีอยู่ เมื่อใด แต่คุณแสดงข้อมูลให้เขาดูไม่ได้ — มันอาจเป็นความลับ และไม่ว่าอย่างไรก็อาจมีขนาดมหึมา ดังนั้นคุณจึงไม่ทำเช่นนั้น คุณคำนวณ แฮช คือลายนิ้วมือสั้นๆ ความยาวคงที่ที่เปลี่ยนแปลงไปทั้งหมดหากแม้เพียงหนึ่งไบต์ของต้นฉบับเปลี่ยน และจากมันกู้ต้นฉบับกลับคืนไม่ได้ คุณส่งลายนิ้วมือ ไม่ใช่ไฟล์

TSA รับลายนิ้วมือนั้น แนบเวลาปัจจุบันของตนเข้าไป ลงนามคู่นั้นด้วยกุญแจส่วนตัวของมัน แล้วส่ง โทเค็นไทม์สแตมป์ กลับมา (Spec: RFC 3161, §2.1) โทเค็นคือการผูกที่ถูกทำให้ถาวร คือ ลายนิ้วมือนี้ ณ เวลานี้ รับรองโดยฉัน เพราะโทเค็นถูกลงนาม ไม่มีใคร — แม้แต่ TSA เองในภายหลัง — แก้ไขเวลาได้โดยไม่ทำให้ลายเซ็นเสียหาย เพราะมันบรรจุลายนิ้วมือของคุณ มันจึงใช้กับไฟล์อื่นใดไม่ได้เลย และเพราะคำขอมี nonce สุ่มที่สร้างใหม่ซึ่ง TSA สะท้อนกลับมาโดยไม่เปลี่ยนแปลง คุณจึงบอกได้ว่าคำตอบสอดคล้องกับ คำขอนี้โดยเฉพาะ และไม่ใช่การเล่นซ้ำของคำตอบเก่า — nonce รับรองความสดใหม่ ไม่ใช่ว่าใครเป็นผู้ขอ (Spec: RFC 3161, §2.4.2)

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

  1. Fingerprint the dataCompute a one-way hash of the file or the signature value. The data itself never leaves your hands.
  2. Ask the authoritySend the hash and a fresh random nonce to the Time-Stamp Authority.
  3. The TSA seals a timeIt signs the hash bound to its own clock and echoes your nonce, producing a small signed token.
  4. Store the tokenFor a PDF, the token is placed inside the file so the proof travels with the document.
  5. Verify laterAnyone who trusts the TSA can check the token: its signature against the TSA certificate, the matching hash, the echoed nonce, and the time — then concludes an upper bound on age.
การได้มาซึ่งไทม์สแตมป์ที่เชื่อถือได้และสิ่งที่มันพิสูจน์ คือ แฮชพร้อม nonce สดใหม่ไปยัง TSA จากนั้น TSA ลงนามบนแฮชนั้นที่ผูกเข้ากับเวลาของตนและสะท้อน nonce กลับ และผู้ตรวจสอบยืนยันตรวจทุกข้อต่อก่อนจะถือเอาโทเค็นเป็นข้อพิสูจน์ว่าข้อมูลมีอยู่ก่อนเวลาที่ระบุ

ใน PDF กลไกเดียวกันนี้สวมสองบทบาท ไทม์สแตมป์ของลายเซ็น ผนึก เวลาที่ลายเซ็นถูกประทับลง ด้วยการประทับไทม์สแตมป์บนค่าของลายเซ็น ส่วน ไทม์สแตมป์ของเอกสาร ผนึก เวลาที่ทั้งไฟล์มีอยู่ ด้วยการแฮชทั้ง PDF (โดยตัดตัวที่กั้นที่ซึ่งโทเค็นจะเข้าไปอยู่ออก) แล้วเก็บโทเค็นที่ส่งกลับมาไว้ในที่กั้นนั้น (Spec: ISO 32000-2, §12.8.5) แบบที่สองคือสิ่งที่ลายเซ็นจัดเก็บถาวรที่อยู่ยาวต่ออายุตลอดหลายปีเพื่อรักษาความเชื่อถือให้สดใหม่

มีรายละเอียดสมัยใหม่ข้อหนึ่งที่ควรรู้ คือรูปแบบไทม์สแตมป์เก่ายึดตัวเองเข้ากับอัลกอริทึมแฮชเดียวสำหรับการตั้งชื่อใบรับรองของ TSA เอง ส่วนโปรไฟล์ที่ปรับปรุงแล้วยอมให้โทเค็นตั้งชื่อใบรับรองด้วยไดเจสต์ปัจจุบันแทน (Spec: RFC 5816, §2.1) ดังนั้นเวลาที่เชื่อถือได้จึงไม่แอบสืบทอดการเข้ารหัสลับของเมื่อวาน

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

<?php
declare(strict_types=1);
use NextPDF\Security\Signature\SignatureLevel;
// A baseline signature trusts only the signer's own clock.
$baseline = SignatureLevel::PAdES_B_B;
$baseline->requiresTimestamp(); // false → no third party vouches for "when"
// Stepping up to B-T means a Time-Stamp Authority must be supplied:
// from here on, "when" is attested by a clock you do not control.
$timestamped = SignatureLevel::PAdES_B_T;
$timestamped->requiresTimestamp(); // true → a TSA is now part of your trust model
// The decision is now visible at the call site, not buried in a default.
// Choosing the TSA is choosing whose time becomes your evidence.

ประเด็นของตัวอย่างไม่ใช่ API แต่คือ “ฉันมีเวลาที่เชื่อถือได้หรือไม่” เป็นข้อเท็จจริงแบบใช่หรือไม่เกี่ยวกับเอกสารของคุณ ตัดสินด้วยว่า TSA อยู่ในวงจรหรือไม่ — และเอนจินปฏิเสธที่จะปล่อยให้ข้อเท็จจริงนั้นกำกวม

กับดักคือการอ่านไทม์สแตมป์ว่า “สิ่งนี้ถูกสร้างขึ้นเมื่อเวลา 14:32 น.” มันไม่ได้บอกเช่นนั้นเลย มันบอกว่า “สิ่งนี้มีอยู่ไม่ช้ากว่าเวลา 14:32 น.” ความแตกต่างนั้นคือประเด็นทั้งหมด ไทม์สแตมป์เป็น ขอบเขตบน ไม่เคยเป็นขอบเขตล่างและไม่เคยเป็นช่วงเวลาที่แม่นยำ ข้อมูลของคุณอาจมีอยู่มาแล้วหลายปีก่อนที่คุณจะลงมือประทับไทม์สแตมป์ โทเค็นไม่ได้บอกอะไรเกี่ยวกับเรื่องนั้น มันลากเส้นเส้นเดียวแล้วบอกว่า ไม่ช้ากว่าตรงนี้

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

ขอบเขตของไทม์สแตมป์หยุดลงตรงที่โมเดลความเชื่อถือของมันหยุดพอดี มันพิสูจน์ขอบเขตบนของอายุและเพียงเท่านั้น และเฉพาะเมื่อคุณไว้ใจผู้ออกที่ผนึกมัน

มีผู้ออกสองระดับชั้นที่ควรแยกแยะ TSA ที่ได้รับความเชื่อถือสาธารณะ เชื่อมโยงไปยังใบรับรองที่ซอฟต์แวร์ของคุณยอมรับอยู่แล้ว โทเค็นของมันตรวจสอบยืนยันได้อย่างกว้างขวางและเหมาะกับบันทึกส่วนใหญ่ ส่วน TSA ที่ผ่านการรับรองตาม eIDAS เป็นผู้ให้บริการที่อยู่ภายใต้การกำกับดูแลในบัญชีรายชื่อที่เชื่อถือได้ของสหภาพยุโรป และไทม์สแตมป์อิเล็กทรอนิกส์ที่ผ่านการรับรองมี ข้อสันนิษฐานทางกฎหมาย ถึงความแม่นยำของวันที่และความสมบูรณ์ของข้อมูล — ข้อสันนิษฐานที่ไทม์สแตมป์ธรรมดาไม่มี (Spec: eIDAS, Art. 41) การเลือกระหว่างทั้งสองเป็นคำถามเกี่ยวกับ น้ำหนักเชิงพยานหลักฐาน ที่คุณต้องการ ไม่ใช่เกี่ยวกับการที่ไบต์ทำงานอย่างไร เพราะการเข้ารหัสลับเหมือนกัน

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

RFC 3161 trusted timestamping (signature and document timestamps) — edition availability
EditionAvailability
Core

รองรับ PAdES B-B และ B-T B-B คือ ลายเซ็นพื้นฐานที่ไม่มีไทม์สแตมป์ ส่วน B-T ร้องขอและฝังไทม์สแตมป์ของลายเซ็น RFC 3161 ที่ตรวจสอบยืนยันแล้ว เทียบกับ TSA ที่การนำไปใช้งานจัดหาให้ ซึ่งคุณเลือกนาฬิกาของมัน

Pro

เพิ่มข้อมูลการตรวจสอบความถูกต้องระยะยาวที่ฝังอยู่ (ใบรับรอง, OCSP, CRL) ที่ B-LT ต้องใช้เพื่อรักษาให้ลายเซ็นตรวจสอบยืนยันได้หลังจากใบรับรองของมันหมดอายุ

Enterprise

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

  • ผู้ออกไทม์สแตมป์ (Time-Stamp Authority, TSA) — บริการอิสระที่ออกโทเค็นไทม์สแตมป์ที่ลงนามแล้ว คุณไว้ใจนาฬิกาของมันก็เพราะมันไม่ใช่ของคุณ
  • โทเค็นไทม์สแตมป์ (Time-stamp token) — ออบเจกต์ขนาดเล็กที่ลงนามแล้วซึ่ง TSA ส่งกลับมา ผูกแฮชของข้อมูลคุณเข้ากับค่าเวลา (Spec: RFC 3161, §2.1)
  • แฮช (message imprint) — ลายนิ้วมือทางเดียวสั้นๆ ของข้อมูล TSA ลงนามบนสิ่งนี้ ไม่เคยลงนามบนตัวข้อมูลเอง เนื้อหาของคุณจึงยังคงเป็นส่วนตัว
  • Nonce — ตัวเลขสุ่มสดใหม่ที่ส่งไปพร้อมคำขอและสะท้อนกลับมาไม่เปลี่ยนแปลงในคำตอบ แสดงว่าโทเค็นสอดคล้องกับ คำขอนั้นโดยเฉพาะ และไม่ใช่คำตอบเก่าที่ถูกเล่นซ้ำ (มันรับรองความสดใหม่ ไม่ใช่ตัวตนของผู้ขอ)
  • ขอบเขตบน (Upper bound) — สิ่งที่ไทม์สแตมป์กำหนด คือข้อมูลมีอยู่ ไม่ช้ากว่า ช่วงเวลาที่ระบุ ไม่เคยเป็นช่วงเวลาสร้างที่แม่นยำ
  • ไทม์สแตมป์ที่ผ่านการรับรองตาม eIDAS — ไทม์สแตมป์จากผู้ให้บริการในสหภาพยุโรปที่อยู่ภายใต้การกำกับดูแล ซึ่งมีข้อสันนิษฐานทางกฎหมายถึงความแม่นยำของวันที่และความสมบูรณ์ของข้อมูล
  • ไทม์สแตมป์ของเอกสาร (Document timestamp) — ไทม์สแตมป์ที่ครอบคลุมทั้งไฟล์ PDF ใช้เพื่อยึดและต่ออายุหลักฐานการตรวจสอบความถูกต้องระยะยาว (Spec: ISO 32000-2, §12.8.5)