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

ภาพรวมมาตรฐาน

Spec: ISO 32000-2 Spec: ETSI EN 319 142-1 Spec: RFC 3161 Spec: 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 เป็นข้อแนะนำที่จัดทำเอกสารไว้ในฐานะข้อแนะนำ ไม่ใช่การรับประกัน

ISO 32000-2 คือศูนย์กลาง มาตรฐานนี้นิยามว่าไฟล์ที่สอดคล้องตามข้อกำหนดหมายถึงอะไร ไฟล์ที่สอดคล้องตามข้อกำหนดต้องปฏิบัติตามทุกข้อกำหนดความต้องการของเอกสาร และยังละเว้นคุณลักษณะใด ๆ ที่เอกสารไม่ได้กำหนดไว้อย่างชัดแจ้งได้ Spec: ISO 32000-2, §6 อีกทั้งยังวางภาระหน้าที่ให้ผู้เขียน คือสิ่งใดก็ตามที่ NextPDF สร้างหรือแก้ไขในไฟล์ต้องสอดคล้องกับรูปแบบและคงความสอดคล้องกับองค์ประกอบที่มีอยู่แล้ว Spec: ISO 32000-2, §6 ข้อกำหนดข้อนี้เพียงข้อเดียวเป็นเหตุผลที่เอนจินปฏิเสธจะปล่อยการอัปเดตแบบเพิ่มทีละน้อยที่ไม่สอดคล้องเชิงโครงสร้าง นี่ไม่ใช่ความชอบส่วนตัวของ NextPDF แต่เป็นกฎของรูปแบบไฟล์เอง

จากศูนย์กลางนั้น ISO 32000-2 ชี้ออกไปภายนอก การจัดการลายเซ็นของมาตรฐานนี้นิยามไว้ “โดยการอ้างอิง” ไปยังชุด ETSI EN 319 142 สำหรับ PAdES ในทางกลับกัน ETSI อ้างอิงไปยัง IETF RFC 3161 สำหรับโทเค็นการประทับเวลา และชุด NIST FIPS สำหรับอัลกอริทึมแฮชและลายเซ็น ความสามารถหนึ่งจึงเป็นเส้นทางที่เดินผ่านเอกสารหลายฉบับ โดยแต่ละฉบับเป็นบรรทัดฐานสำหรับชั้นของตนเอง

  1. Step 1 of 5: ISO 32000-2 §12.8 signatures
  2. Step 2 of 5: ETSI EN 319 142-1 PAdES baseline
  3. Step 3 of 5: RFC 3161 timestamp token
  4. Step 4 of 5: NIST FIPS 180-4 hash strength
  5. Step 5 of 5: WCAG 2.2 tagged output
เส้นทางมาตรฐานที่ PDF ที่ลงนามแบบตรวจสอบได้ระยะยาวเพียงรายการเดียวเดินผ่าน ISO นิยามคอนเทนเนอร์และชี้ไปยัง ETSI สำหรับโปรไฟล์ลายเซ็น ETSI กำหนดให้มีการประทับเวลาของ IETF ไพรมิทิฟด้านการเข้ารหัสลับได้รับการอนุมัติจาก NIST ผลลัพธ์ที่เรนเดอร์ออกมายึดตามการเข้าถึงได้ของ W3C ลูกศรแต่ละเส้นเป็นการอ้างอิงเชิงบรรทัดฐาน ไม่ใช่ความเชื่อมโยงแบบหลวม ๆ

รูปแบบที่อันตรายของการทำงานกับมาตรฐาน คืออ่านข้อกำหนดแล้วเขียนโค้ดจากความทรงจำ เส้นทางของ NextPDF ยาวกว่าโดยตั้งใจ เพราะเส้นทางที่ยาวกว่าคือเส้นทางที่คุณตรวจสอบได้:

  1. Retrieve The clause is read from the standard, not from memory.
  2. Cite It is paraphrased and pinned with a chunk digest, never quoted.
  3. Classify Its keyword (shall / should / may) sets whether it is a contract or a recommendation.
  4. Map The obligation becomes a concrete engine requirement.
  5. Implement The requirement is built into the pipeline.
  6. Pin A test holds the behaviour against drift.
  7. Tag The page that describes it declares its evidence level.
เส้นทางจากข้อกำหนดเชิงบรรทัดฐานไปสู่พฤติกรรมของเอนจินที่ผ่านการทดสอบ คือ ดึงและอ้างอิงข้อกำหนด จำแนกภาระหน้าที่ตามคำสำคัญเชิงบรรทัดฐาน จับคู่กับข้อกำหนดความต้องการของเอนจิน นำไปใช้งาน ตรึงด้วยการทดสอบ และติดป้ายหน้าเอกสารด้วยฐานหลักฐานของหน้านั้น ข้อกำหนดที่หยุดก่อนถึงการทดสอบเป็นเพียงคำกล่าวอ้าง ไม่ใช่พฤติกรรม

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

Spec: RFC 2119 Spec: RFC 8174

NextPDF อ่านคำว่า shall เป็นขอบเขตที่เคร่งครัดซึ่งเอนจินจะไม่ก้าวข้าม และอ่านคำว่า should เป็นข้อแนะนำที่ปฏิบัติตามและจัดทำเอกสารไว้ในฐานะข้อแนะนำ — ไม่เคยเป็นคำสัญญา ข้อแตกต่างนั้นคือความต่างระหว่างคำแถลงความสามารถที่ตรงไปตรงมา กับการกล่าวอ้างเกินจริง

ความสอดคล้องตามข้อกำหนดมีระดับ ไม่ใช่ไบนารี

หัวข้อที่มีชื่อว่า “ความสอดคล้องตามข้อกำหนดมีระดับ ไม่ใช่ไบนารี”

“สอดคล้องตามข้อกำหนด” แทบไม่เคยเป็นเพียงบิตเดียว มาตรฐานลายเซ็นมีหลายระดับ — ตัวอย่างเช่น โปรไฟล์แบบระยะยาวพร้อมการเก็บถาวรของยุโรปมีขึ้นโดยเฉพาะเพื่อเพิ่มโทเค็นการประทับเวลาที่ทำให้ลายเซ็นยังตรวจสอบได้นานหลังจากสร้างขึ้น Spec: ETSI EN 319 122-1, §6 นี่เป็นคำกล่าวอ้างที่หนักแน่นกว่าลายเซ็นพื้นฐานเปล่า ๆ อย่างชัดเจน มาตรฐานการเข้าถึงได้ก็มีรูปแบบเดียวกัน คือระดับความสอดคล้องตามข้อกำหนดจะบรรลุได้ก็ต่อเมื่อปฏิบัติตามเกณฑ์ความสำเร็จ ทุกข้อ ที่ระดับนั้น และคำกล่าวอ้างต้องระบุระดับที่บรรลุได้จริง Spec: WCAG 2.2, §5.2.1 NextPDF จึงระบุ โปรไฟล์ และ ระดับ ไม่ใช่คำว่า “สอดคล้องตามข้อกำหนด” แบบไม่มีเงื่อนไข

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

ชั้นองค์กรข้อกำหนดที่ยึดโยง (เรียบเรียงใหม่)สิ่งที่กำกับใน NextPDF
รูปแบบไฟล์ISOองค์ประกอบที่ผู้เขียนสร้างหรือแก้ไขต้องสอดคล้องกับรูปแบบและคงความสอดคล้อง Spec: ISO 32000-2, §6 PDF ที่เอนจินปล่อยออกมา
ความสอดคล้องตามข้อกำหนดISOไฟล์ที่สอดคล้องตามข้อกำหนดต้องปฏิบัติตามทุกข้อกำหนดความต้องการ คุณลักษณะเพิ่มเติมเป็นทางเลือก Spec: ISO 32000-2, §6 ความหมายของ “ผลลัพธ์ที่ถูกต้อง”
โปรไฟล์ลายเซ็นETSIระดับระยะยาวพร้อมการเก็บถาวรเพิ่มการประทับเวลาสำหรับการตรวจสอบภายหลัง Spec: ETSI EN 319 122-1, §6 โปรไฟล์ PAdES ที่ลายเซ็นมุ่งหมาย
เวลาที่เชื่อถือได้IETFบริการประทับเวลาพิสูจน์ว่าข้อมูลรายการหนึ่งมีอยู่ก่อนเวลาหนึ่ง Spec: RFC 3161, §2 โทเค็นการประทับเวลาของเอกสาร
การเข้ารหัสลับNISTแฮชที่ได้รับการอนุมัติให้ความแข็งแกร่งด้านความปลอดภัยต่างกัน Spec: NIST FIPS 180-4, §1 อัลกอริทึมไดเจสต์ที่อยู่ภายใต้ลายเซ็น
การเข้าถึงผลลัพธ์W3Cระดับความสอดคล้องตามข้อกำหนดต้องผ่านเกณฑ์ทุกข้อในระดับนั้น Spec: WCAG 2.2, §5.2.1 คำกล่าวอ้างด้านการเข้าถึงได้บน PDF ที่เรนเดอร์

ไดเจสต์ของการอ้างอิงบันทึกไว้ใน citations ในส่วน frontmatter ของหน้านี้ ไม่มีการนำข้อความของมาตรฐานใดมาแสดงซ้ำที่นี่ กฎที่กำกับการเลือกนั้นเป็นอีกหน้าหนึ่ง ดู วินัยการอ้างอิง

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

examples/36-sign-pades-b-b-and-b-t.php
<?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