ภาพรวมมาตรฐาน
Spec: ISO 32000-2 ISO 32000-2 Spec: ETSI EN 319 142-1 ETSI EN 319 142-1 Spec: RFC 3161 RFC 3161 Spec: WCAG 2.2 WCAG 2.2 Evidence: Standard-backed
โดยสรุป
หัวข้อที่มีชื่อว่า “โดยสรุป”เอนจิน PDF ไม่ได้อิงเอกสารเพียงฉบับเดียว แต่อิงชุดมาตรฐานที่องค์กรต่าง ๆ จัดทำขึ้นและอ้างอิงถึงกัน หน้านี้วางแผนผังชุดมาตรฐานนั้นตามที่ NextPDF ติดตาม และแสดงเส้นทางที่ข้อกำหนดเดินทางจาก “มาตรฐานระบุเช่นนี้” ไปสู่ “เอนจินทำเช่นนี้ และมีการทดสอบพิสูจน์ได้”
หน้านี้เขียนขึ้นสำหรับวิศวกรอาวุโสที่ต้องทราบว่าเอกสาร ฉบับใด กำกับพฤติกรรมหนึ่ง ก่อนจะตัดสินใจว่าการตีความของ NextPDF เป็นการตีความที่ปกป้องได้หรือไม่
เหตุใดเรื่องนี้จึงสำคัญ
หัวข้อที่มีชื่อว่า “เหตุใดเรื่องนี้จึงสำคัญ”“การรองรับ PDF” เป็นคำกล่าวอ้างที่ซ่อนคำถามไว้ว่า รองรับ อะไร กันแน่ ไวยากรณ์หลักคือ ISO 32000-2 เส้นทางของลายเซ็นอยู่ภายใต้ ETSI การประทับเวลาเป็นโพรโทคอลของ IETF HTML และ CSS ที่เอนจินใช้เรนเดอร์อยู่ภายใต้ W3C การเข้ารหัสลับชั้นล่างอยู่ภายใต้ NIST และการเข้าถึงได้ของผลลัพธ์กลับไปอยู่ภายใต้ W3C อีกครั้ง
หากไลบรารีมองสิ่งเหล่านี้เป็นก้อนเดียวที่ไม่แยกแยะ คุณจะวิเคราะห์สาเหตุของความล้มเหลวไม่ได้ เมื่อตัวตรวจสอบความถูกต้องปฏิเสธใบแจ้งหนี้ที่ลงนามแล้ว คำถามแรกที่มีประโยชน์ไม่ใช่ “PDF เสียหายหรือไม่” แต่คือ “ข้อกำหนดของมาตรฐานใดที่ไม่ได้รับการปฏิบัติตาม และเกิดขึ้นที่ฝั่งใด” เพื่อถามคำถามนั้นได้ คุณต้องมีแผนผังที่ระบุชื่อองค์กรต่าง ๆ และคำอธิบายที่ตรงไปตรงมาว่าข้อกำหนดกลายเป็นพฤติกรรมได้อย่างไร
ฉบับย่อ
หัวข้อที่มีชื่อว่า “ฉบับย่อ”- NextPDF ติดตามองค์กรมาตรฐานห้าแห่ง ได้แก่ ISO ซึ่งเป็นเจ้าของรูปแบบไฟล์ ETSI ซึ่งเป็นเจ้าของโปรไฟล์ลายเซ็นของยุโรป IETF ซึ่งเป็นเจ้าของโพรโทคอลระดับการสื่อสาร (การประทับเวลา ไพรมิทิฟด้านการเข้ารหัสลับโดยการอ้างอิง) W3C ซึ่งเป็นเจ้าของ HTML, CSS และเกณฑ์การเข้าถึงได้ และ NIST ซึ่งเป็นเจ้าของอัลกอริทึมการเข้ารหัสลับที่ได้รับการอนุมัติ
- เอกสารเหล่านี้ประกอบกันเป็น เส้นทาง ไม่ใช่รายการ กล่าวคือความสามารถในการสร้าง PDF ที่ลงนามเพียงรายการเดียวเดินผ่าน ISO → ETSI → IETF → NIST โดยแต่ละชั้นอ้างอิงเชิงบรรทัดฐานไปยังชั้นถัดไป
- ข้อกำหนดไม่ได้กลายเป็นพฤติกรรมเพียงเพราะมีคนอ่าน แต่กลายเป็นพฤติกรรมผ่านการ เรียบเรียงใหม่และอ้างอิง จับคู่กับข้อกำหนดความต้องการ นำไปใช้งาน และตรึงไว้ด้วยการทดสอบ หน้าที่อธิบายพฤติกรรมนั้นจะระบุเช่นนี้ พร้อมระดับหลักฐานของหน้านั้นเอง
- เมื่อข้อกำหนดเป็นข้อบังคับ จะมีคำสำคัญเชิงบรรทัดฐานกำกับอยู่ (คำว่า
shallหรือmust) NextPDF ถือว่าคำสำคัญเหล่านั้นเป็นข้อผูกพัน ส่วนคำว่าshouldเป็นข้อแนะนำที่จัดทำเอกสารไว้ในฐานะข้อแนะนำ ไม่ใช่การรับประกัน
วิธีที่ NextPDF เข้าถึงเรื่องนี้
หัวข้อที่มีชื่อว่า “วิธีที่ NextPDF เข้าถึงเรื่องนี้”สหพันธ์ ไม่ใช่ระบบก้อนเดียว
หัวข้อที่มีชื่อว่า “สหพันธ์ ไม่ใช่ระบบก้อนเดียว”ISO 32000-2 คือศูนย์กลาง มาตรฐานนี้นิยามว่าไฟล์ที่สอดคล้องตามข้อกำหนดหมายถึงอะไร ไฟล์ที่สอดคล้องตามข้อกำหนดต้องปฏิบัติตามทุกข้อกำหนดความต้องการของเอกสาร และยังละเว้นคุณลักษณะใด ๆ ที่เอกสารไม่ได้กำหนดไว้อย่างชัดแจ้งได้ Spec: ISO 32000-2, §6 ISO 32000-2 §6 อีกทั้งยังวางภาระหน้าที่ให้ผู้เขียน คือสิ่งใดก็ตามที่ NextPDF สร้างหรือแก้ไขในไฟล์ต้องสอดคล้องกับรูปแบบและคงความสอดคล้องกับองค์ประกอบที่มีอยู่แล้ว Spec: ISO 32000-2, §6 ISO 32000-2 §6 ข้อกำหนดข้อนี้เพียงข้อเดียวเป็นเหตุผลที่เอนจินปฏิเสธจะปล่อยการอัปเดตแบบเพิ่มทีละน้อยที่ไม่สอดคล้องเชิงโครงสร้าง นี่ไม่ใช่ความชอบส่วนตัวของ NextPDF แต่เป็นกฎของรูปแบบไฟล์เอง
จากศูนย์กลางนั้น ISO 32000-2 ชี้ออกไปภายนอก การจัดการลายเซ็นของมาตรฐานนี้นิยามไว้ “โดยการอ้างอิง” ไปยังชุด ETSI EN 319 142 สำหรับ PAdES ในทางกลับกัน ETSI อ้างอิงไปยัง IETF RFC 3161 สำหรับโทเค็นการประทับเวลา และชุด NIST FIPS สำหรับอัลกอริทึมแฮชและลายเซ็น ความสามารถหนึ่งจึงเป็นเส้นทางที่เดินผ่านเอกสารหลายฉบับ โดยแต่ละฉบับเป็นบรรทัดฐานสำหรับชั้นของตนเอง
- Step 1 of 5: ISO 32000-2 §12.8 signatures
- Step 2 of 5: ETSI EN 319 142-1 PAdES baseline
- Step 3 of 5: RFC 3161 timestamp token
- Step 4 of 5: NIST FIPS 180-4 hash strength
- Step 5 of 5: WCAG 2.2 tagged output
ข้อกำหนดกลายเป็นพฤติกรรมได้อย่างไร
หัวข้อที่มีชื่อว่า “ข้อกำหนดกลายเป็นพฤติกรรมได้อย่างไร”รูปแบบที่อันตรายของการทำงานกับมาตรฐาน คืออ่านข้อกำหนดแล้วเขียนโค้ดจากความทรงจำ เส้นทางของ NextPDF ยาวกว่าโดยตั้งใจ เพราะเส้นทางที่ยาวกว่าคือเส้นทางที่คุณตรวจสอบได้:
- Retrieve The clause is read from the standard, not from memory.
- Cite It is paraphrased and pinned with a chunk digest, never quoted.
- Classify Its keyword (shall / should / may) sets whether it is a contract or a recommendation.
- Map The obligation becomes a concrete engine requirement.
- Implement The requirement is built into the pipeline.
- Pin A test holds the behaviour against drift.
- Tag The page that describes it declares its evidence level.
ขั้นตอน “จำแนก” คือจุดที่คลี่คลายความกำกวมส่วนใหญ่ ข้อกำหนดเฉพาะเข้ารหัสระดับความต้องการของตนไว้ในคำสำคัญ ได้แก่ตระกูล MUST, SHALL, SHOULD, MAY ที่รู้จักกันดี ความหมายของคำสำคัญเหล่านั้นถูกกำหนดไว้อย่างตายตัวโดยข้อตกลงคำสำคัญด้านความต้องการของ IETF ซึ่งได้รับการปรับปรุงเพื่อชี้แจงว่าเฉพาะรูปแบบตัวพิมพ์ใหญ่เท่านั้นที่มีผลเชิงบรรทัดฐาน แล้วจึงนำความหมายนั้นไปวางทับบนเนื้อความเชิงพรรณนาของข้อกำหนดเฉพาะแต่ละฉบับ
NextPDF อ่านคำว่า shall เป็นขอบเขตที่เคร่งครัดซึ่งเอนจินจะไม่ก้าวข้าม และอ่านคำว่า
should เป็นข้อแนะนำที่ปฏิบัติตามและจัดทำเอกสารไว้ในฐานะข้อแนะนำ —
ไม่เคยเป็นคำสัญญา ข้อแตกต่างนั้นคือความต่างระหว่างคำแถลงความสามารถที่ตรงไปตรงมา
กับการกล่าวอ้างเกินจริง
ความสอดคล้องตามข้อกำหนดมีระดับ ไม่ใช่ไบนารี
หัวข้อที่มีชื่อว่า “ความสอดคล้องตามข้อกำหนดมีระดับ ไม่ใช่ไบนารี”“สอดคล้องตามข้อกำหนด” แทบไม่เคยเป็นเพียงบิตเดียว มาตรฐานลายเซ็นมีหลายระดับ — ตัวอย่างเช่น โปรไฟล์แบบระยะยาวพร้อมการเก็บถาวรของยุโรปมีขึ้นโดยเฉพาะเพื่อเพิ่มโทเค็นการประทับเวลาที่ทำให้ลายเซ็นยังตรวจสอบได้นานหลังจากสร้างขึ้น Spec: ETSI EN 319 122-1, §6 ETSI EN 319 122-1 §6 นี่เป็นคำกล่าวอ้างที่หนักแน่นกว่าลายเซ็นพื้นฐานเปล่า ๆ อย่างชัดเจน มาตรฐานการเข้าถึงได้ก็มีรูปแบบเดียวกัน คือระดับความสอดคล้องตามข้อกำหนดจะบรรลุได้ก็ต่อเมื่อปฏิบัติตามเกณฑ์ความสำเร็จ ทุกข้อ ที่ระดับนั้น และคำกล่าวอ้างต้องระบุระดับที่บรรลุได้จริง Spec: WCAG 2.2, §5.2.1 WCAG 2.2 §5.2.1 NextPDF จึงระบุ โปรไฟล์ และ ระดับ ไม่ใช่คำว่า “สอดคล้องตามข้อกำหนด” แบบไม่มีเงื่อนไข
สิ่งที่หลักฐานระบุ
หัวข้อที่มีชื่อว่า “สิ่งที่หลักฐานระบุ”หน้านี้มีสถานะเป็น Evidence: Standard-backed คือทุกคำกล่าวอ้างยึดโยงกับข้อกำหนด เรียบเรียงใหม่ และอ้างอิงพร้อมไดเจสต์ เพื่อให้ผู้ตรวจทานคนถัดไปตรวจสอบซ้ำกับแหล่งที่มาได้
| ชั้น | องค์กร | ข้อกำหนดที่ยึดโยง (เรียบเรียงใหม่) | สิ่งที่กำกับใน NextPDF |
|---|---|---|---|
| รูปแบบไฟล์ | ISO | องค์ประกอบที่ผู้เขียนสร้างหรือแก้ไขต้องสอดคล้องกับรูปแบบและคงความสอดคล้อง Spec: ISO 32000-2, §6 ISO 32000-2 §6 | PDF ที่เอนจินปล่อยออกมา |
| ความสอดคล้องตามข้อกำหนด | ISO | ไฟล์ที่สอดคล้องตามข้อกำหนดต้องปฏิบัติตามทุกข้อกำหนดความต้องการ คุณลักษณะเพิ่มเติมเป็นทางเลือก Spec: ISO 32000-2, §6 ISO 32000-2 §6 | ความหมายของ “ผลลัพธ์ที่ถูกต้อง” |
| โปรไฟล์ลายเซ็น | ETSI | ระดับระยะยาวพร้อมการเก็บถาวรเพิ่มการประทับเวลาสำหรับการตรวจสอบภายหลัง Spec: ETSI EN 319 122-1, §6 ETSI EN 319 122-1 §6 | โปรไฟล์ PAdES ที่ลายเซ็นมุ่งหมาย |
| เวลาที่เชื่อถือได้ | IETF | บริการประทับเวลาพิสูจน์ว่าข้อมูลรายการหนึ่งมีอยู่ก่อนเวลาหนึ่ง Spec: RFC 3161, §2 RFC 3161 §2 | โทเค็นการประทับเวลาของเอกสาร |
| การเข้ารหัสลับ | NIST | แฮชที่ได้รับการอนุมัติให้ความแข็งแกร่งด้านความปลอดภัยต่างกัน Spec: NIST FIPS 180-4, §1 NIST FIPS 180-4 §1 | อัลกอริทึมไดเจสต์ที่อยู่ภายใต้ลายเซ็น |
| การเข้าถึงผลลัพธ์ | W3C | ระดับความสอดคล้องตามข้อกำหนดต้องผ่านเกณฑ์ทุกข้อในระดับนั้น Spec: WCAG 2.2, §5.2.1 WCAG 2.2 §5.2.1 | คำกล่าวอ้างด้านการเข้าถึงได้บน PDF ที่เรนเดอร์ |
ไดเจสต์ของการอ้างอิงบันทึกไว้ใน citations ในส่วน frontmatter ของหน้านี้ ไม่มีการนำข้อความของมาตรฐานใดมาแสดงซ้ำที่นี่ กฎที่กำกับการเลือกนั้นเป็นอีกหน้าหนึ่ง ดู วินัยการอ้างอิง
ตัวอย่างเชิงปฏิบัติ
หัวข้อที่มีชื่อว่า “ตัวอย่างเชิงปฏิบัติ”คุณไม่ได้รัน standards landscape โดยตรง แต่อ่านหน้านี้เพื่อตัดสินใจว่าจะร้องขออะไรจากเอนจิน ในเชิงรูปธรรม การเรียกใช้การลงนามแบบตรวจสอบได้ระยะยาวเป็นคำแถลงเกี่ยวกับ จุดใดบนเส้นทาง ที่คุณต้องการ:
<?php
declare(strict_types=1);
use NextPDF\Core\Document;use NextPDF\Security\Signature\CertificateInfo;use NextPDF\Security\Signature\DigitalSigner;use NextPDF\Security\Signature\SignatureLevel;
// The signature level is a coordinate on the ISO -> ETSI -> RFC trail.// PAdES B-B is the ETSI baseline CMS SignedData the Core engine produces;// B-T adds an RFC 3161 timestamp, and B-LT/B-LTA add the DSS and document// timestamps that keep a signature validatable after the certificate// expires. The level you name is the point on the trail you are asking for.$certInfo = CertificateInfo::fromFiles( certPath: 'signer-cert.pem', keyPath: 'signer-key.pem',);
// The functional signing path is the direct two-phase signing engine.// (Document::setSignature() records intent but its writer seam is not yet// wired and fail-fasts on output — see the PadesOrchestrator docblock.)$signer = new DigitalSigner( certInfo: $certInfo, level: SignatureLevel::PAdES_B_B,);
$result = $signer->sign(file_get_contents('agreement.pdf'));
printf( "PAdES %s CMS: %d bytes, timestamp=%s\n", SignatureLevel::PAdES_B_B->value, $result->getSize(), $result->hasTimestamp() ? 'yes' : 'no',);การระบุ PAdES_B_LTA แทนที่จะเป็นพื้นฐานเปล่า ๆ ไม่ใช่ปุ่มปรับสมรรถนะ แต่เป็นการตัดสินใจว่าภาระหน้าที่นั้นทอดลึกไปตามเส้นทางมาตรฐานเพียงใด B-LT และ B-LTA ดึงชั้น DSS และชั้นการประทับเวลาเก็บถาวรเข้ามา และต้องใช้แพ็กเกจ LTV ระดับเอนเทอร์ไพรซ์ในขณะรันไทม์ แทนที่จะลดทอนลงอย่างเงียบ ๆ เอนจินปฏิเสธที่จะแสร้งทำว่าระดับที่ต่ำกว่าสามารถมอบระดับที่สูงกว่าได้
ความเข้าใจผิดที่พบบ่อย
หัวข้อที่มีชื่อว่า “ความเข้าใจผิดที่พบบ่อย”กับดักคือการอ่านคำว่า “NextPDF สอดคล้องตามมาตรฐาน” เป็นการรับประกันแบบรวมและสมบูรณ์เพียงข้อเดียว ซึ่งไม่ใช่ และไม่มีเอนจินที่ตรงไปตรงมาตัวใดเสนอเช่นนั้น ความสอดคล้องตามข้อกำหนดเป็นแบบ ต่อมาตรฐาน ต่อข้อกำหนด และต่อระดับ NextPDF มุ่งหมายที่พื้นฐาน PDF 2.0 โปรไฟล์ PAdES ที่ระบุชื่อ และระดับการเข้าถึงได้ที่ระบุไว้ — แต่ละอย่างมีขอบเขตและมีการอ้างอิง คำกล่าวอ้างที่ไม่มีข้อกำหนดและระดับรองรับเป็นการตลาด และ Insider_ ไม่ใช้ถ้อยคำเช่นนั้น
กับดักที่สองซึ่งแยบยลกว่า คือการสันนิษฐานว่าคำว่า should เชิงบรรทัดฐานเป็นคำสัญญา ทั้งที่เป็นข้อแนะนำ NextPDF จัดทำเอกสารข้อแนะนำในฐานะข้อแนะนำ การรับประกันของเอนจินสร้างขึ้นจากข้อกำหนด shall และข้อแตกต่างนี้สำคัญในเชิงโครงสร้าง
ข้อจำกัดและขอบเขต
หัวข้อที่มีชื่อว่า “ข้อจำกัดและขอบเขต”หน้านี้คือ แผนผัง ไม่ใช่ภูมิประเทศจริง หน้านี้ไม่ได้แจกแจงทุกข้อกำหนดที่ NextPDF นำไปใช้งาน และไม่ใช่ใบรับรองความสอดคล้องตามข้อกำหนด หลักฐานของแต่ละพฤติกรรมอยู่ในหน้าหัวข้อที่รับผิดชอบพฤติกรรมนั้น พร้อมระดับหลักฐานของหน้านั้นเอง — ตัวอย่างเช่น PDF 2.0: what changed สำหรับเดลตาของรูปแบบไฟล์
standards landscape เองก็เปลี่ยนแปลง มีฉบับใหม่ออกมา และการอ้างอิงได้รับการปรับปรุง ข้อกำหนดที่อ้างอิงไว้ที่นี่ถูกตรึงกับสแนปช็อตของคลังข้อมูลที่บันทึกไว้ใน citations ของหน้านี้ เมื่อมาตรฐานต้นทางได้รับการแก้ไข การอ้างอิงจะได้รับการตรวจสอบซ้ำกับข้อกำหนดใหม่ ไม่ได้สันนิษฐานว่าสามารถยกยอดมาได้เอง เมื่อหน้านี้ระบุชื่อความสามารถระดับ Premium การระบุนั้นอยู่ในระดับของ มาตรฐานใดที่ความสามารถนั้นตอบสนอง ไม่เคยอยู่ในระดับกลไกภายใน
เอกสารที่เกี่ยวข้อง
หัวข้อที่มีชื่อว่า “เอกสารที่เกี่ยวข้อง”- PDF 2.0: what changed — เดลตาเชิงรูปธรรมของ ISO 32000-2 ที่ชั้นรูปแบบไฟล์ของแผนผังนี้ชี้ไป
- Documentation as a product — เหตุใดวินัยในการจับคู่ข้อกำหนดกับพฤติกรรมจึงได้รับการปฏิบัติในฐานะงานวิศวกรรม
- Citation discipline — กฎที่กำหนดว่าข้อกำหนดถูกอ้างอิงที่นี่อย่างไร และระดับหลักฐานหมายถึงอะไร
อภิธานศัพท์
หัวข้อที่มีชื่อว่า “อภิธานศัพท์”- องค์กรมาตรฐาน — องค์กรที่เผยแพร่ข้อกำหนดเฉพาะ (ISO, ETSI, IETF, W3C, NIST) แต่ละแห่งเป็นเจ้าของชั้นที่แตกต่างกันในกองซ้อนของ PDF
- ข้อกำหนดเชิงบรรทัดฐาน — ข้อกำหนดความต้องการในมาตรฐานที่ระบุได้จากคำสำคัญ (
shall/mustสำหรับข้อบังคับshouldสำหรับข้อแนะนำmayสำหรับทางเลือก) - เส้นทางมาตรฐาน — ห่วงโซ่ตามลำดับของข้อกำหนดเฉพาะที่ความสามารถเดียวเดินผ่าน โดยแต่ละเอกสารอ้างอิงเชิงบรรทัดฐานไปยังเอกสารถัดไป
- ระดับความสอดคล้องตามข้อกำหนด — ลำดับขั้นของความสอดคล้องตามข้อกำหนดที่จัดเป็นระดับ (โปรไฟล์พื้นฐานของ ETSI หรือระดับของ WCAG) คำกล่าวอ้างต้องระบุระดับที่บรรลุได้จริง ไม่ใช่คำว่า “สอดคล้องตามข้อกำหนด” แบบไม่มีเงื่อนไข
- PAdES — PDF Advanced Electronic Signatures ตระกูลโปรไฟล์ลายเซ็น ETSI EN 319 142 ที่ ISO 32000-2 อ้างอิงสำหรับการลงนาม PDF