เวิร์กโฟลว์สำหรับข้อตกลงที่ลงนามแล้ว
Spec: ETSI EN 319 142-2, §5.1 ETSI EN 319 142-2 §5.1 Spec: ISO 32000-2:2020, §12.8 ISO 32000-2:2020 §12.8 Evidence: Mixed evidence
ภาพรวมโดยย่อ
หัวข้อที่มีชื่อว่า “ภาพรวมโดยย่อ”ข้อตกลงที่ลงนามแล้วไม่ใช่แค่ “PDF ที่มีลายเซ็นอยู่บนนั้น” แต่เป็นเอกสารที่เตรียมไว้เพื่อให้ลายเซ็นปกป้องไบต์ที่ถูกต้อง ลงนามในระดับที่ตรงกับข้อผูกพัน และบรรจุหลักฐานไว้เพื่อให้ยังตรวจสอบยืนยันได้แม้ใบรับรองที่ใช้ลงนามจะหมดอายุแล้ว หน้านี้จะพาคุณผ่านสถานการณ์ดังกล่าวตั้งแต่เอกสารเปล่าไปจนถึงสัญญาที่คงอยู่ได้ยาวนาน พร้อมระบุอย่างตรงไปตรงมาว่าขั้นตอนใดที่เอนจินเชื่อมต่อภายในแล้วในวันนี้ และขั้นตอนใดที่เปิดเผยเป็นพื้นผิวที่ถูกตรึงไว้
เหตุใดเรื่องนี้จึงสำคัญ
หัวข้อที่มีชื่อว่า “เหตุใดเรื่องนี้จึงสำคัญ”สัญญาที่ตรวจสอบยืนยันได้ในวันที่ลงนาม แต่ล้มเหลวในอีกสามปีต่อมาเมื่อเกิดข้อพิพาท แย่ยิ่งกว่าการไม่มีลายเซ็นเลย เพราะมีผู้ยึดถือสัญญานั้นเป็นหลัก ความล้มเหลวมักไม่ได้อยู่ที่การเข้ารหัสลับ แต่มักเกิดจากการขาดไทม์สแตมป์หรือหลักฐานการเพิกถอน ซึ่งมักถูกประเมินนานหลังจากผู้ลงนามออกจากกระบวนการไปแล้ว
การเลือกข้อผูกพันของลายเซ็นตั้งแต่ต้น และการสร้างหลักฐานที่ข้อผูกพันนั้นต้องการในเวลาที่ลงนาม คือความแตกต่างระหว่างข้อตกลงที่คงทนกับข้อตกลงที่ค่อย ๆ เสื่อมสภาพอย่างเงียบ ๆ นี่คือการตัดสินใจที่ควรทำเพียงครั้งเดียวในเวิร์กโฟลว์ แทนที่จะต้องค้นพบซ้ำเมื่อเกิดข้อพิพาทแต่ละครั้ง
ฉบับย่อ
หัวข้อที่มีชื่อว่า “ฉบับย่อ”- เตรียมก่อน แล้วจึงลงนาม ลายเซ็นครอบคลุมเฉพาะช่วงไบต์ที่ใช้คำนวณลายเซ็นนั้น ให้ตัดสินใจว่าเอกสารเป็นฉบับสุดท้าย รวมถึงการแก้ไขที่ผนวกเข้ามาภายหลัง ก่อนที่คุณจะลงนาม ไม่ใช่หลังจากนั้น
- เลือกระดับให้ตรงกับข้อผูกพัน ไม่ใช่ในทางกลับกัน PAdES กำหนดลำดับขั้น ได้แก่ ลายเซ็นพื้นฐาน ลายเซ็นที่มีไทม์สแตมป์ ลายเซ็นที่มีวัสดุการตรวจสอบยืนยันฝังอยู่ และลายเซ็นที่ประทับซ้ำเพื่อความใช้ได้สำหรับการเก็บถาวรอย่างไม่มีกำหนด (ETSI EN 319 142-2 §5.1)
- ความใช้ได้ระยะยาวเป็นโครงสร้าง ไม่ใช่คุณสมบัติ ความใช้ได้ระยะยาวเกิดจาก Document Security Store พร้อมไทม์สแตมป์ของเอกสารที่เขียนเข้าไปในไฟล์ (ISO 32000-2:2020 §12.8)
- ระบุรอยต่อให้ชัดเจน
Document::setSignature()ระดับสูงของ NextPDF ตรึง API สาธารณะไว้ แต่ล้มเหลวอย่างรวดเร็วแทนที่จะปล่อยไฟล์ที่ไม่มีลายเซ็นออกมา เส้นทางที่เชื่อมต่อภายในแล้วคือ orchestrator ระดับล่าง หน้านี้จะไม่กล่าวให้เข้าใจเป็นอย่างอื่น
วิธีที่ NextPDF เข้าถึงเรื่องนี้
หัวข้อที่มีชื่อว่า “วิธีที่ NextPDF เข้าถึงเรื่องนี้”NextPDF แยก การตัดสินใจ ออกจาก กลไก การตัดสินใจคือระดับ PAdES ที่ข้อผูกพันต้องการ ส่วนกลไกคือวิธีที่ไบต์ถูกลงนาม และวิธีที่วัสดุการตรวจสอบยืนยันถูกพกพาไปกับไฟล์ การมองว่าสองสิ่งนี้เป็นเรื่องเดียวกันคือ สาเหตุที่ทีมต่าง ๆ ลงเอยด้วยลายเซ็นที่ใช้ได้ในตอนนี้แต่ไม่คงทน
สถานการณ์นี้ประกอบด้วยสี่ขั้น
- Prepare the document Compose the agreement and treat it as final. The signature will protect this exact byte range and nothing added outside it without a new revision.
- Choose the obligation B-B proves who. B-T adds trusted time. B-LT embeds the material to validate later. B-LTA re-stamps for indefinite validity.
- Sign A CMS signature is embedded in the signature dictionary over the byte range; a timestamp is requested from a TSA if the level needs one.
- Preserve For long-term levels, the Document Security Store and a document timestamp are written so the signature outlives its certificate.
enum ของระดับมีอยู่จริงและเข้ารหัสข้อผูกพันไว้อย่างตรงไปตรงมา B-B พิสูจน์ตัวตนของผู้ลงนาม B-T เพิ่มไทม์สแตมป์ที่เชื่อถือได้ เพื่อให้คำถามว่า “เมื่อใด” มีน้ำหนักเท่ากับคำถามว่า “ใคร” B-LT ฝังใบรับรองและการตอบสนองการเพิกถอนที่จำเป็นต่อการตรวจสอบยืนยันลายเซ็นหลังจากใบรับรองที่ใช้ลงนามหมดอายุ
B-LTA เพิ่มไทม์สแตมป์ของเอกสารเพื่อให้สามารถขยายห่วงโซ่ความเชื่อถือ
ออกไปอย่างไม่มีกำหนดด้วยการประทับซ้ำก่อนที่ใบรับรองของไทม์สแตมป์แต่ละใบจะหมดอายุ enum
นี้รู้ว่าระดับใดต้องการไทม์สแตมป์และระดับใดต้องการวัสดุการตรวจสอบยืนยันแบบฝัง
ดังนั้นเอนจินจึงสามารถปฏิเสธการประกอบที่เป็นไปไม่ได้
แทนที่จะสร้างไฟล์ที่ดูเหมือน “ลงนาม” แล้วอย่างชวนให้เข้าใจผิด
หลักฐานชี้ให้เห็นอะไร
หัวข้อที่มีชื่อว่า “หลักฐานชี้ให้เห็นอะไร”ลำดับขั้นนี้ มีมาตรฐานรองรับ Evidence: Standard-backed Spec: ETSI EN 319 142-2, §5.1 ETSI EN 319 142-2 §5.1 อธิบายระดับ PAdES ที่ต่อยอดจากหน่วยพื้นฐานของ EN 319 142-1 ตั้งแต่ลายเซ็นแบบฝังพื้นฐาน ขึ้นไป โครงสร้างระยะยาวกำหนดไว้โดย Spec: ISO 32000-2:2020, §12.8 ISO 32000-2:2020 §12.8 : การตรวจสอบยืนยันระยะยาว อาศัย Document Security Store และพจนานุกรมไทม์สแตมป์ของเอกสาร ที่เขียนเข้าไปในไฟล์
โมเดลของระดับ มีโค้ดรองรับ Evidence: Code-backed enum
SignatureLevel มีกรณี PAdES สี่กรณี (B-B, B-T, B-LT,
B-LTA) พร้อมเมท็อดเพรดิเคตสำหรับ “ต้องการไทม์สแตมป์” “ต้องการ
วัสดุการตรวจสอบยืนยันแบบฝัง” และ “ต้องการไทม์สแตมป์ของเอกสาร” ส่วน
Document::setSignature() ระดับสูงถูกเชื่อมต่อภายในเข้ากับตัวป้องกันแบบล้มเหลวอย่างรวดเร็วที่
ยกข้อวินิจฉัยที่ขัดขวางและนำไปแก้ไขได้ขึ้นมา แทนที่จะปล่อยเอกสารที่ไม่มีลายเซ็น
ออกมา ซึ่งเป็นพฤติกรรมที่ตรวจสอบยืนยันได้ ไม่ใช่ข้อกล่าวอ้าง
พฤติกรรมการบำรุงรักษาระยะยาวถูกบันทึกไว้ที่ ระดับความสามารถ สำหรับระดับ Premium พื้นผิวการเก็บถาวรเขียน DSS และ VRI ต่อลายเซ็น ตรวจสอบความครบถ้วนของการเก็บถาวรด้วยการตรวจสุขภาพ และประทับซ้ำด้วยไทม์สแตมป์ของเอกสารก่อนที่ใบรับรองของไทม์สแตมป์จะหมดอายุ เอกสารระบุอย่างชัดเจนว่าผู้ตรวจสอบยืนยันยังคงเป็นผู้ชี้ขาด
ตัวอย่างเชิงปฏิบัติ
หัวข้อที่มีชื่อว่า “ตัวอย่างเชิงปฏิบัติ”ตัวอย่างนี้แสดง การตัดสินใจ ซึ่งก็คือการเลือกข้อผูกพัน โดยใช้ enum จริง เส้นทางการลงนามที่เชื่อมต่อภายในแล้วคือ orchestrator ระดับล่าง การเรียกใช้ระดับสูงแสดงไว้เพียงเพื่อให้พฤติกรรมการล้มเหลวอย่างรวดเร็วชัดเจนเท่านั้น
<?php
declare(strict_types=1);
use NextPDF\Security\Signature\SignatureLevel;
/** * Map a business obligation to a PAdES level. * * The obligation drives the level, not the reverse — choosing B-B for a * 10-year contract is a decision you do not want to make implicitly. */function levelForObligation(string $obligation): SignatureLevel{ return match ($obligation) { // Internal sign-off, short retention, signer identity is enough. 'internal_approval' => SignatureLevel::PAdES_B_B,
// Counterparty agreement: prove the moment of signing. 'counterparty_agreement' => SignatureLevel::PAdES_B_T,
// Regulated contract that must verify after cert expiry. 'regulated_contract' => SignatureLevel::PAdES_B_LT,
// Long-lived legal record: indefinite, re-stampable validity. 'long_term_legal_record' => SignatureLevel::PAdES_B_LTA,
default => throw new \InvalidArgumentException( "Unknown obligation: {$obligation}", ), };}
$level = levelForObligation('regulated_contract');
// The enum carries the obligation's implications with it.$needsTsa = $level->requiresTimestamp(); // true for B-T+$needsDss = $level->requiresDss(); // true for B-LT+$needsArchive = $level->requiresDocumentTimestamp(); // true only for B-LTAออบเจกต์ของระดับไม่ใช่แค่ป้ายกำกับ แต่ออบเจกต์นี้ตอบได้ว่าข้อผูกพันนั้นต้องมีอะไรตามมา เพื่อให้การเชื่อมต่อภายในปลายทางไม่ต้องอนุมานซ้ำ
ความเข้าใจผิดที่พบบ่อย
หัวข้อที่มีชื่อว่า “ความเข้าใจผิดที่พบบ่อย”ความเข้าใจผิดที่เกิดซ้ำคือ “ลายเซ็นมีผลใช้ได้ ดังนั้นจึงเสร็จสิ้น” ความมีผลใช้ได้ในวันนี้จำเป็นแต่ยังไม่เพียงพอ ลายเซ็นถูกคำนวณจากช่วงไบต์ สิ่งใดก็ตามที่ผนวกเข้ามานอกช่วงดังกล่าวในการแก้ไขภายหลังจะไม่ถูกครอบคลุมโดยลายเซ็นนั้น จึงต้องเตรียมเอกสารให้เรียบร้อยก่อนลงนาม และลายเซ็นที่ตรวจสอบยืนยันได้ในตอนนี้อาจล้มเหลวในภายหลังเมื่อใบรับรองหมดอายุ เว้นแต่วัสดุการตรวจสอบยืนยันจะถูกฝังไว้ในเวลาที่ลงนาม “มีผลใช้ได้” และ “คงทน” เป็นการรับประกันคนละอย่าง และมีเพียงข้อผูกพันเท่านั้นที่บอกได้ว่าคุณต้องการสิ่งใดจริง ๆ
กับดักที่เกี่ยวข้องซึ่งเฉพาะกับเอนจินนี้ คือการสันนิษฐานว่า
setSignature() ระดับสูงสร้างไฟล์ที่ลงนามแล้วได้ในวันนี้ ความจริงคือยังไม่ได้สร้าง แต่จะล้มเหลวอย่างรวดเร็ว
โดยตั้งใจ ให้ถือว่าการวินิจฉัยนั้นคือสัญญา
ข้อจำกัดและขอบเขต
หัวข้อที่มีชื่อว่า “ข้อจำกัดและขอบเขต”Document::setSignature()เป็นพื้นผิวสาธารณะที่ถูกตรึงไว้ ไม่ใช่ตัวลงนามที่เชื่อมต่อภายในแล้ว พื้นผิวนี้ล้มเหลวอย่างรวดเร็วพร้อมการวินิจฉัยที่ขัดขวาง และไม่เคยปล่อย PDF ที่ไม่มีลายเซ็นออกมาแทนที่ฉบับที่ลงนามแล้ว เส้นทางที่เชื่อมต่อภายในแล้วคือ orchestrator สองเฟสระดับล่าง- การบำรุงรักษาการตรวจสอบยืนยันระยะยาว (DSS/VRI การตรวจสุขภาพ และลูปไทม์สแตมป์การเก็บถาวร) เป็นความสามารถระดับ Premium Core ไม่มีลูปการเก็บถาวร ดูขอบเขตด้านล่าง
- ลายเซ็นปกป้องเฉพาะช่วงไบต์ของลายเซ็นนั้น การแก้ไขที่ผนวกเข้ามาภายหลังเป็นส่วนแยกต่างหาก เอนจินไม่ขยายความครอบคลุมย้อนหลัง
- NextPDF สร้างและบำรุงรักษาโครงสร้าง แต่ไม่ได้เป็นผู้ชี้ขาด การที่ลายเซ็น เชื่อถือได้ หรือไม่นั้นขึ้นอยู่กับจุดยึดความเชื่อถือและนโยบายของผู้ตรวจสอบยืนยัน ซึ่งอยู่นอกเอนจิน
- B-LTA ไม่ได้ทำให้ลายเซ็นคงอยู่ชั่วนิรันดร์ด้วยตัวมันเอง B-LTA เปิดให้มีความใช้ได้อย่างไม่มีกำหนดเฉพาะเมื่อลูปการประทับซ้ำทำงานตามกำหนดเวลาก่อนที่ใบรับรองของไทม์สแตมป์แต่ละใบจะหมดอายุ
- หน้านี้อธิบายในระดับพฤติกรรมสำหรับพื้นผิวการเก็บถาวรของ Premium หน้านี้ไม่ยืนยันการยอมรับโดยศาลหรือหน่วยงานใดเป็นการเฉพาะ
| Edition | Availability |
|---|---|
| Core | Core เปิดเผย enum |
| Pro | การลงนามแบบ baseline ของ PAdES (B-B / B-T) ผ่าน orchestrator นั้นพร้อมใช้งาน |
| Enterprise | เพิ่ม B-LT / B-LTA การบำรุงรักษา Document Security Store และ VRI ต่อลายเซ็น การตรวจสุขภาพ LTV และลูปการเก็บถาวรไทม์สแตมป์ของเอกสาร เพื่อความสมเหตุสมผลอย่างไม่มีกำหนด |
เอกสารที่เกี่ยวข้อง
หัวข้อที่มีชื่อว่า “เอกสารที่เกี่ยวข้อง”- โปรไฟล์ baseline ของ PAdES — อธิบาย B-B, B-T, B-LT, B-LTA ในรูปแบบลำดับขั้นและแนวทางการเลือก
- การตรวจสอบยืนยันระยะยาว — เหตุใดลายเซ็นที่ตรวจสอบยืนยันได้ในวันนี้จึงอาจล้มเหลวในอีกสิบปี และ LTV ฝังหลักฐานไว้อย่างไร
- คู่มือการตัดสินใจด้านการผสานการทำงาน — แพ็กเกจในระบบนิเวศใดเหมาะกับเวิร์กโฟลว์การลงนาม รวมถึงรอยต่อการอนุมัติโดยมนุษย์ใน NextPDF Connect
อภิธานศัพท์
หัวข้อที่มีชื่อว่า “อภิธานศัพท์”- PAdES — PDF Advanced Electronic Signatures: ตระกูลโปรไฟล์ของ ETSI ที่นิยามวิธีบรรจุลายเซ็นอิเล็กทรอนิกส์ขั้นสูงไว้ใน PDF
- Byte range — ช่วงไบต์ของไฟล์ที่ต่อเนื่องกันซึ่งใช้คำนวณลายเซ็น เนื้อหานอกช่วงนั้นจะไม่ถูกปกป้องโดยลายเซ็นนั้น
- ระดับลายเซ็น (B-B / B-T / B-LT / B-LTA) — ลำดับขั้นของ PAdES ได้แก่ ใครลงนาม เมื่อใด พร้อมวัสดุการตรวจสอบยืนยันแบบฝัง และประทับซ้ำได้เพื่อความใช้ได้สำหรับการเก็บถาวรอย่างไม่มีกำหนด
- TSA — Time-Stamping Authority: บริการตาม RFC 3161 ที่ยืนยันว่าสถานะหนึ่งของเอกสารมีอยู่ ณ ช่วงเวลา UTC ที่กำหนด
- DSS (Document Security Store) — พื้นที่จัดเก็บในไฟล์สำหรับใบรับรอง การตอบสนอง OCSP และ CRL ที่จำเป็นต่อการตรวจสอบยืนยันลายเซ็นหลังจากใบรับรองหมดอายุ
- LTV (Long-Term Validation) — การทำให้ลายเซ็นยังตรวจสอบยืนยันได้เมื่อเวลาผ่านไปด้วยการฝังหลักฐานการตรวจสอบยืนยันและประทับซ้ำ
- Fail-fast — การปฏิเสธที่จะสร้างสิ่งประดิษฐ์ที่ชวนให้เข้าใจผิด และส่งข้อผิดพลาดที่นำไปแก้ไขได้แทน แทนที่จะปล่อยไฟล์ที่ผิดอย่างเงียบ ๆ ออกมา