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

การแมประดับพื้นฐาน PAdES

PDF Advanced Electronic Signatures (PAdES) คือกลุ่มโปรไฟล์ที่กำหนดเป็นมาตรฐานใน ETSI EN 319 142 มาตรฐานนี้กำหนดระดับความสอดคล้องพื้นฐานสี่ระดับ ได้แก่ B-B, B-T, B-LT และ B-LTA โดยระดับที่สูงขึ้นแต่ละระดับจะเพิ่มเนื้อหาทับบนระดับที่ต่ำกว่า หน้านี้แมประดับเหล่านั้นกับสิ่งที่ NextPDF สร้างขึ้น พร้อมแยกขอบเขตการทำงานของ Core ออกจากรุ่น Pro และ Enterprise การแมปนี้อิงตามพฤติกรรม โดยอธิบายสิ่งที่เอนจินสร้างออกมา ไม่ใช่คลาสภายใน

กล่าวโดยสรุป NextPDF Core สร้างโครงสร้างลายเซ็นที่สอดคล้องกับ B-B และ B-T ส่วนเส้นทางการสร้าง B-LT และ B-LTA มาพร้อมในรุ่น Pro และ Enterprise การที่ลายเซ็นที่สร้างขึ้นจะได้รับการยอมรับว่าสอดคล้องกับระดับใดระดับหนึ่งหรือไม่นั้นขึ้นอยู่กับตัวตรวจสอบและจุดยึดความเชื่อถือ (trust anchor) ที่ตั้งค่าไว้ ผู้สร้างไม่สามารถยืนยันความสอดคล้องแทนตัวตรวจสอบได้

Terminal window
composer require nextpdf/core:^3

ลายเซ็นดิจิทัลของ PDF คือโครงสร้าง Cryptographic Message Syntax (CMS) SignedData ที่จัดเก็บไว้ในรายการ Contents ของดิกชันนารีลายเซ็น อาร์เรย์ ByteRange ระบุช่วงไบต์ที่ไดเจสต์ครอบคลุม — ISO 32000-2 §12.8.1 ส่วน CMS SignerInfo บรรจุแอตทริบิวต์ที่ลงนาม รวมถึงแอตทริบิวต์ content-type และ message-digest — RFC 5652 §5.3 ไดเจสต์ข้อความเหนือแอตทริบิวต์เหล่านั้นคำนวณตามกระบวนการใน §5.4 PAdES ใช้โมเดลแอตทริบิวต์แบบ CMS Advanced Electronic Signatures (CAdES) ภายในดิกชันนารีลายเซ็นของ PDF

ระดับพื้นฐานทั้งสี่มีลักษณะเพิ่มสะสมต่อกัน:

  • B-B บรรจุลายเซ็นพื้นฐานพร้อมแอตทริบิวต์ที่ลงนามซึ่งจำเป็นต้องมี
  • B-T เพิ่มแอตทริบิวต์ไทม์สแตมป์ลายเซ็นที่คำนวณเหนือค่าลายเซ็น แอตทริบิวต์ไทม์สแตมป์พิสูจน์ว่าลายเซ็นมีอยู่แล้ว ณ เวลาที่ประทับ — ETSI PAdES §5.4.3 โดย Time-Stamping Authority ตาม RFC 3161 เป็นผู้สร้างโทเค็น — RFC 3161 §2.4.1
  • B-LT เพิ่มข้อมูลสำหรับการตรวจสอบความถูกต้องระยะยาว ได้แก่ ใบรับรอง ข้อมูล Online Certificate Status Protocol (OCSP) และข้อมูลรายการเพิกถอนใบรับรอง (CRL) ซึ่งวางไว้ใน Document Security Store — ETSI PAdES §6.2.2, ISO 32000-2 §12.8.4.3 และตำแหน่งการวางข้อมูลตรวจสอบความถูกต้องที่อธิบายไว้ใน ETSI EN 319 142-2 §6.3
  • B-LTA เพิ่มไทม์สแตมป์เอกสารแบบเก็บถาวร (archive document time-stamp) เพื่อคงความถูกต้องไว้ในระยะยาว — ETSI PAdES §6.2.2

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

+ RFC 3161 sig time-stamp

(Core / Enterprise
+ Document Security Store

(Enterprise only)
+ archive doc time-stamp

(Enterprise only)

B-B

CMS signature + signed attributes

B-T

+ signature time-stamp (over the signature value)

B-LT

+ DSS validation material (cert, OCSP, CRL)

B-LTA

+ archive document time-stamp (over the DSS)

;

not

Pro)

Diagram

ใช้ enum SignatureLevel เพื่อเลือกระดับ enum นี้กำหนดเคส PAdES_B_B, PAdES_B_T, PAdES_B_LT และ PAdES_B_LTA เมท็อด requiresTimestamp(), requiresDss(), requiresDocumentTimestamp() และ isAvailableInEnvironment() รายงานข้อกำหนดของแต่ละระดับ และบอกว่ารันไทม์ปัจจุบันสามารถตอบสนองข้อกำหนดเหล่านั้นได้หรือไม่ ในการแจกจ่ายแบบ Core นั้น isAvailableInEnvironment() คืนค่า true สำหรับ B-B และ B-T และคืนค่า false สำหรับ B-LT และ B-LTA โดยคืนค่า false สำหรับ B-LT และ B-LTA เนื่องจากผู้สร้างสำหรับการตรวจสอบความถูกต้องระยะยาวถูกแก้ไขปลายทาง (resolve) ขณะรันไทม์และไม่ได้เป็นส่วนหนึ่งของแพ็กเกจโอเพนซอร์ส โค้ดสำหรับใช้งานจริงควรใช้สัญญา (contract) SignerInterface แทนการอ้างอิงชนิดข้อมูลภายในเหล่านี้

ระดับสิ่งที่เพิ่มเข้ามารุ่น Core (nextpdf/core)รุ่น Pro / Enterprise
B-Bลายเซ็นพื้นฐานพร้อมแอตทริบิวต์ที่ลงนามซึ่งจำเป็นต้องมีสร้างโครงสร้างที่สอดคล้อง และทดสอบเทียบกับเกณฑ์มาตรฐาน (golden baseline) สังเคราะห์พื้นผิวเดียวกัน
B-Tไทม์สแตมป์ลายเซ็นเหนือค่าลายเซ็นสร้างโครงสร้างที่สอดคล้องเมื่อมีบริการไทม์สแตมป์ตาม RFC 3161 ให้ใช้งานพื้นผิวเดียวกัน
B-LTข้อมูลตรวจสอบความถูกต้องใน Document Security Storeไม่ได้จัดส่งผู้สร้างใน Core การเลือก B-LT โดยไม่มีแพ็กเกจ Enterprise จะล้มเหลวแบบปิด (fail closed)จัดส่งผู้สร้าง
B-LTAไทม์สแตมป์เอกสารแบบเก็บถาวรไม่ได้จัดส่งผู้สร้างใน Core ล้มเหลวแบบปิดเช่นเดียวกับข้างต้นจัดส่งผู้สร้าง

“สร้างโครงสร้างที่สอดคล้อง” หมายความว่า NextPDF สร้างลายเซ็นที่มีโครงสร้างเป็นไปตามข้อกำหนดที่อ้างถึง อาร์ทิแฟกต์ tests/Corpus/pades/ และ tests/Golden/baselines/ ของโปรเจกต์ใช้ทดสอบโครงสร้างดังกล่าว แต่ไม่ได้หมายความว่าตัวตรวจสอบภายนอกรับรองผลลัพธ์ที่ระดับนั้น ดูส่วนความสอดคล้อง

examples/contracts/signing-quickstart.php
<?php
declare(strict_types=1);
require_once __DIR__ . '/../../vendor/autoload.php';
use NextPDF\Contracts\SignerInterface;
/**
* Sign a byte range with any SignerInterface implementation.
*
* @param SignerInterface $signer A Core or Premium signer.
* @param string $byteRange The PDF byte range to sign.
*
* @return string Hex-encoded CMS SignedData for the PDF /Contents field.
*/
function signByteRange(SignerInterface $signer, string $byteRange): string
{
return $signer->sign($byteRange)->toHex();
}

ฟังก์ชันนี้ขึ้นอยู่กับสัญญา SignerInterface ไม่ใช่คลาสรูปธรรม ทั้งซอฟต์แวร์ผู้ลงนามของ Core (B-B หรือ B-T) และผู้ลงนามแบบ hardware security module (HSM) ของ Premium ต่างก็ทำตามสัญญานี้ได้ โค้ดฝั่งผู้เรียกจึงไม่เปลี่ยนแปลงเมื่อเปลี่ยนรุ่น

examples/contracts/signing-level.php
<?php
declare(strict_types=1);
require_once __DIR__ . '/../../vendor/autoload.php';
use NextPDF\Security\Signature\SignatureLevel;
/**
* Resolve the highest baseline level the current runtime can produce.
*
* B-B and B-T are produced by the Core distribution. B-LT and B-LTA
* require the Enterprise long-term-validation package; without it the
* level reports unavailable so callers fail closed rather than emit a
* structure that does not carry the validation material the level names.
*
* @return SignatureLevel The highest level available in this runtime.
*/
function highestAvailableLevel(): SignatureLevel
{
foreach ([
SignatureLevel::PAdES_B_LTA,
SignatureLevel::PAdES_B_LT,
SignatureLevel::PAdES_B_T,
SignatureLevel::PAdES_B_B,
] as $level) {
if ($level->isAvailableInEnvironment()) {
return $level;
}
}
return SignatureLevel::PAdES_B_B;
}

isAvailableInEnvironment() คืนค่า true สำหรับ B-B และ B-T โดยไม่ต้องมีแพ็กเกจเพิ่มเติม และคืนค่า true สำหรับ B-LT และ B-LTA เฉพาะเมื่อติดตั้งแพ็กเกจการตรวจสอบความถูกต้องระยะยาวของ Enterprise แล้วเท่านั้น หากคุณเลือกระดับที่ไม่พร้อมใช้งานโดยไม่ได้เลือกใช้การลดระดับ (degradation) NextPDF จะยกข้อยกเว้นแบบมีชนิด (typed exception) ของระดับที่เข้าถึงไม่ได้ โดยข้อความจะระบุชื่อแพ็กเกจที่ขาดหายไป การปรับใช้ที่ตั้งค่าไม่ถูกต้องจึงล้มเหลวแบบปิด แทนที่จะปล่อยลายเซ็นระดับต่ำกว่าที่ผู้เรียกร้องขอออกมาอย่างเงียบ ๆ

  • ลายเซ็นที่เป็น B-T ในเชิงโครงสร้างไม่เหมือนกับลายเซ็นที่ได้รับการตรวจสอบความถูกต้องว่าเป็น B-T การตรวจสอบความถูกต้องเกิดขึ้นในตัวตรวจสอบ โดยใช้จุดยึดความเชื่อถือและความสดใหม่ของข้อมูลเพิกถอนของตัวตรวจสอบนั้น ผู้สร้างไม่สามารถยืนยันผลลัพธ์ได้
  • PAdES B-LT และ B-LTA ต้องใช้แพ็กเกจ NextPDF Enterprise (nextpdf/enterprise) หากไม่ได้ติดตั้งไว้ ผู้ลงนามจะล้มเหลวแบบปิดและ B-LT/B-LTA จะไม่พร้อมใช้งาน Core ให้บริการ B-B/B-T ผ่าน NextPDF\Contracts\SignerInterface สาธารณะ ส่วนการตรวจสอบความถูกต้องระยะยาวยังคงอยู่หลัง LtvManagerInterface การเลือกระดับที่ไม่พร้อมใช้งานใน Core จะล้มเหลวแบบปิดตามค่าเริ่มต้น ข้อยกเว้นแบบมีชนิดระบุชื่อแพ็กเกจสาธารณะที่ขาดหายไป ไม่ใช่ชนิดข้อมูลภายใน การลดระดับลงสู่ระดับที่ต่ำกว่าอย่างนุ่มนวล (graceful degradation) เป็นตัวเลือกที่ต้องเลือกใช้เอง ไม่ใช่ค่าเริ่มต้น
  • ไดเจสต์ของช่วงไบต์ต้องไม่รวมค่าลายเซ็น หากไดเจสต์ครอบคลุมออกเทตของ Contents ด้วย การตรวจสอบจะไม่มีทางสำเร็จได้เลย — ISO 32000-2 §12.8.1
  • ใน B-T ไทม์สแตมป์ลายเซ็นอยู่เหนือค่าลายเซ็น ไม่ใช่เหนือไบต์ของเอกสาร ใน B-LTA ไทม์สแตมป์แบบเก็บถาวรเป็นไทม์สแตมป์เอกสารที่แยกออกมา ทั้งสองอย่างใช้แทนกันไม่ได้ — ETSI PAdES §5.4.3 และ §6.2.2
  • ETSI EN 319 142-1 (ส่วนที่ว่าด้วยระดับพื้นฐาน) ไม่ได้อยู่ในคลังหลักฐานของโปรเจกต์นี้ ข้อกล่าวอ้างเกี่ยวกับโครงสร้างของระดับในที่นี้ยึดโยงกับ ETSI EN 319 142-2, เอกสารโปรไฟล์ pades, ISO 32000-2 §12.8 และ RFC 5652 / RFC 3161 ชื่อระดับและโครงสร้างแบบเพิ่มสะสมระบุไว้ตามที่นำไปใช้งานจริงใน v3.x หน้านี้ไม่ได้อ้างถึงผลการทดสอบความสอดคล้องหรือการรับรองจากบุคคลที่สาม

ต้นทุนเพิ่มขึ้นตามระดับ B-B เป็นการดำเนินการลงนามเพียงครั้งเดียว และใช้เวลาในระดับมิลลิวินาทีหลักหน่วยสำหรับคีย์แบบซอฟต์แวร์ B-T เพิ่มการรับส่งข้อมูลผ่านเครือข่ายไปกลับหนึ่งครั้งกับ Time-Stamping Authority B-LT เพิ่มการดึงข้อมูลเพิกถอนหนึ่งครั้งต่อใบรับรองหนึ่งใบในห่วงโซ่ B-LTA เพิ่มไทม์สแตมป์เอกสารอีกหนึ่งรายการ งบประมาณ wall time 1500 ms ครอบคลุมลายเซ็น B-T หนึ่งรายการกับ Time-Stamping Authority (TSA) ระยะไกลบนการเชื่อมต่อที่อุ่นเครื่องแล้ว B-LT หรือ B-LTA ที่ใช้ปลายทางข้อมูลเพิกถอนที่ช้าจะเกินงบประมาณนี้และควรอยู่นอกเส้นทางคำขอ โปรไฟล์ความสามารถในการทำซ้ำ (reproducibility profile) คือ structural ไม่ใช่ bitwise ไทม์สแตมป์ฝังเวลาที่ลงนามไว้ ดังนั้นการรันสองครั้งจะแตกต่างกันที่ไบต์ไทม์สแตมป์ ขณะที่โครงสร้างเอกสารยังคงเหมือนเดิม

ระดับที่ลายเซ็นอ้างกับระดับที่ลายเซ็นได้รับการตรวจสอบความถูกต้องเป็นข้อเท็จจริงคนละเรื่องกัน หน้านี้อธิบายเฉพาะฝั่งผู้สร้างเท่านั้น การตรวจสอบความถูกต้องระยะยาวขึ้นอยู่กับข้อมูลตรวจสอบความถูกต้องที่รวบรวมไว้ในเวลาที่ลงนาม และการที่ตัวตรวจสอบยังเชื่อถือจุดยึดเดียวกันนั้นในภายหลัง ผู้สร้างไม่สามารถรับประกันข้อเท็จจริงทั้งสองข้อนี้ได้ ความเชื่อถือในไทม์สแตมป์ลดรูปเหลือเพียงความเชื่อถือใน Time-Stamping Authority ซึ่งการปรับใช้ปักหมุดไว้ผ่านผู้ให้บริการที่ฉีดเข้าได้ (injectable provider) หน้านี้ทำเครื่องหมายว่า export_control_class: legal-review-required เนื่องจากเกี่ยวข้องกับโปรไฟล์ลายเซ็นเชิงวิทยาการรหัสลับ แหล่งข้อมูลเชิงบรรทัดฐานทั้งหมดถูกถอดความ และไม่มีแหล่งใดถูกทำซ้ำ ตามหลักสุขอนามัยการอ้างอิง

ข้อกล่าวอ้างมาตรฐานข้อกำหนดหลักฐาน
ค่าลายเซ็นถูกจัดเก็บแบบเข้ารหัส DER เป็น CMS SignedData หรือ TimeStampToken ในรายการ Contents ของดิกชันนารีลายเซ็นISO 32000-2§12.8.1
ไดเจสต์คำนวณเหนือช่วง ByteRange และไม่รวมค่าลายเซ็นISO 32000-2§12.8.1
แอตทริบิวต์ไทม์สแตมป์ลายเซ็นคำนวณเหนือค่าลายเซ็น (B-T)ETSI PAdES (EN 319 142)§5.4.3
ข้อมูลตรวจสอบความถูกต้องระยะยาวบรรจุอยู่ใน Document Security Store (B-LT)ETSI PAdES (EN 319 142) / ISO 32000-2§6.2.2 / §12.8.4.3,
ข้อมูลตรวจสอบความถูกต้องถูกวางไว้ในดิกชันนารี DSS และ VRIETSI EN 319 142-2§6.3,
ไทม์สแตมป์เอกสารแบบเก็บถาวรรักษาความถูกต้องตลอดช่วงเวลายาวนาน (B-LTA)ETSI PAdES (EN 319 142)§6.2.2
SignerInfo บรรจุแอตทริบิวต์ที่ลงนาม content-type และ message-digestRFC 5652§5.3
ไดเจสต์ข้อความคำนวณเหนือแอตทริบิวต์ที่ลงนามซึ่งเข้ารหัสแบบ DER (กระบวนการ §5.4)RFC 5652§5.4
ไทม์สแตมป์ถูกร้องขอจาก RFC 3161 TSA และคืนค่าโครงสร้าง TSTInfoRFC 3161§2.4.1

ข้อกำหนดทั้งหมดถูกถอดความ NextPDF ไม่ทำซ้ำข้อความเชิงบรรทัดฐาน โปรดดูถ้อยคำที่มีผลบังคับจากมาตรฐานที่เผยแพร่ ETSI EN 319 142-1 ไม่ได้อยู่ในคลังหลักฐาน ข้อกล่าวอ้างเชิงโครงสร้างเกี่ยวกับระดับพื้นฐานยึดโยงกับแหล่งข้อมูลข้างต้น และระบุไว้ตามที่นำไปใช้งานจริงใน v3.x

Core สร้างโครงสร้างลายเซ็น B-B และ B-T ส่วนเส้นทางการสร้าง B-LT และ B-LTA, การเก็บรักษาคีย์แบบ HSM และ PKCS#11 และโปรไฟล์นโยบายวิทยาการรหัสลับ FIPS 140-3 มาพร้อมในรุ่น Pro และ Enterprise Core แก้ไขปลายทางผู้สร้างสำหรับการตรวจสอบความถูกต้องระยะยาวขณะรันไทม์ ดังนั้นเอนจินโอเพนซอร์สจึงไม่มีการพึ่งพาเชิงพาณิชย์ใด ๆ API ของ SignerInterface ไม่เปลี่ยนแปลงเมื่ออัปเกรด

  • Security / Signing — พื้นที่การนำไปใช้งานของ CMS, ไทม์สแตมป์, การตรวจสอบความถูกต้องระยะยาว (LTV), ห่วงโซ่ความเชื่อถือ และการเพิกถอน
  • Contracts / Signing — service provider interface (SPI) ของ SignerInterface และระดับความเสถียร
  • Security — พื้นที่การนำไปใช้งานด้านการเข้ารหัสลับและลายเซ็น
  • Conformance — การบังคับใช้ PDF/A และโปรไฟล์ที่เข้าคู่กับการจัดเก็บถาวรแบบลงนาม
  • PAdES · PAdES B-T · DSS · CAdES — คำศัพท์ในอภิธานศัพท์