Enterprise รุ่นความเสถียร: ทดลอง
การลงนาม HSM แบบ post-quantum (PQS): สถานะความสามารถแบบ preview
ภาพรวมโดยย่อ
หัวข้อที่มีชื่อว่า “ภาพรวมโดยย่อ”สถานะความสามารถแบบ preview opt-in, เปิดเป็นค่าเริ่มต้นปิด, fail-closed นี่คือ preview ของการ ลงนาม post-quantum ที่มอบหมายผ่าน HSM มันไม่พร้อมใช้งานทั่วไป มันไม่สอดคล้องกับ AdES มันไม่ผ่านการ validate แบบ FIPS และมันไม่อ้างการรับรอง หรือความสอดคล้อง preview ปิดอยู่จนกว่าคุณจะ opt in; เมื่อปิด การเรียกลงนามจะ fail closed ด้วยข้อยกเว้นแบบมีชนิด
NextPDF Enterprise เปิดเผยพื้นผิวลายเซ็น post-quantum (PQS) ที่ทดลองซึ่งขับเคลื่อน
การลงนาม ML-DSA (FIPS 204) และ SLH-DSA (FIPS 205) ผ่าน PKCS#11 hardware token
เส้นทางคือ Pkcs11Signer::signPqs() ซึ่ง gate ไว้หลัง opt-in ต่อ signer ที่ชัดเจน
($enablePostQuantum) และแยกต่างหากหลังแฟล็ก env ระดับกระบวนการ
(NEXTPDF_FEATURE_PREVIEW_PQS_HSM) ทั้งสองปิดโดยค่าเริ่มต้น
หน้านี้คือขอบเขตที่ตรงไปตรงมา มันระบุสิ่งที่ preview ทำ — มันมอบหมายการดำเนินการ ลงนาม post-quantum จริงให้ token — และด้วยความซื่อสัตย์เท่ากัน สิ่งที่มัน ไม่ใช่: มัน ไม่ใช่ GA, ไม่ใช่ AdES, ไม่ผ่านการ validate แบบ FIPS และไม่ใช่การอ้างความสอดคล้อง เทียบกับ FIPS, OASIS หรือ ETSI มาตรฐานที่จะทำให้ลายเซ็น PDF แบบ post-quantum ทำงานร่วมกันได้สำหรับการจัดเก็บถาวรระยะยาวยังไม่ลงตัว (ดู ขอบเขตของมาตรฐาน)
รุ่นและการให้สิทธิ์
หัวข้อที่มีชื่อว่า “รุ่นและการให้สิทธิ์”ความสามารถนี้ ship ใน NextPDF Enterprise (nextpdf/enterprise) และเปิดใช้งาน
ด้วย license envelope ระดับ Enterprise การ deploy ที่ไม่มีสิทธิ์นั้นจะไม่โหลดคลาสของ
ความสามารถนี้
เปรียบเทียบรุ่นและรับใบอนุญาต
มันสร้างบน Enterprise PKCS#11 hardware-token signer — ดู การลงนาม HSM เส้นทางการลงนาม PKCS#11 แบบคลาสสิก (RSA / ECDSA) คือความสามารถ Enterprise ที่รองรับและเสถียร; เส้นทาง post-quantum ที่อธิบายในที่นี้เป็น preview ที่ทดลองซึ่งซ้อนอยู่บนมัน NextPDF Enterprise รวมชุด คุณสมบัติ Pro
สถานะความสามารถแบบ preview
หัวข้อที่มีชื่อว่า “สถานะความสามารถแบบ preview”preview ขับเคลื่อนการดำเนินการลงนามจริง: เมื่อเปิดใช้งาน signPqs() จะส่งไปยังกลไก
post-quantum แบบ candidate ของ PKCS#11 v3.1 บน token, private key ไม่เคยออกจาก
ขอบเขตของ token และไบต์ที่คืนกลับถูกตรวจสอบความยาวเทียบกับความยาวลายเซ็นที่ FIPS
กำหนดสำหรับชุดพารามิเตอร์ที่เลือกก่อนที่จะถูกยอมรับ
ในขณะเดียวกัน มันเป็น preview และไม่ใช่ความสามารถผลิตภัณฑ์ที่พร้อมใช้งานทั่วไป:
- กลไก post-quantum และตัวระบุชุดพารามิเตอร์ของ PKCS#11 เป็นแบบ provisional — OASIS PKCS#11 v3.1 ยังไม่ได้สรุป registry กลไก post-quantum ดังนั้นค่าที่ใช้จึงถูก ติดตามเป็น provisional และผู้ปฏิบัติงาน HSM ต้องยืนยันว่า PQ firmware ของ token ตรงกันก่อนเปิดใช้
- ไม่มีเส้นทาง การตรวจสอบ (verification) post-quantum ใน NextPDF และไม่มีชุด ETSI ใดลงทะเบียนลายเซ็น post-quantum สำหรับการจัดเก็บถาวรระยะยาวแบบ AdES ดังนั้นลายเซ็นที่ผลิตที่นี่จึงยังไม่ทำงานร่วมกันได้ และโปรแกรมดู PDF ส่วนใหญ่จะ ปฏิเสธมันในเวลาตรวจสอบ
- ตัวอธิบายคู่กัน
PqsCapabilityStatusรายงานข้อเท็จจริงเหล่านี้ในรูปแบบที่อ่านได้ด้วย เครื่อง ทุก boolean ที่อ้างเชิงบวก —generallyAvailable,adesCompliant,verificationAvailable,conformanceClaimed— ถูกตั้งค่าตายตัวเป็นfalseและ ยังคงเป็นfalseแม้เมื่อแฟล็ก preview เปิด และไม่มีการกำหนดค่าใดพลิกมันเป็นเปิด ได้ (มันยังบรรจุแฟล็กrecognitionOnlyที่ตั้งค่าตายตัวเป็นtrueซึ่งบันทึกว่าการ จดจำ อัลกอริทึม ไม่เคยเป็นคำตัดสินความสอดคล้อง; มันไม่ได้หมายความว่าพื้นผิว ลงนามไม่ได้ — การลงนามเกิดผ่านsignPqs()ตามที่อธิบายข้างต้น)
เหตุใดจึงทำงานเช่นนี้
หัวข้อที่มีชื่อว่า “เหตุใดจึงทำงานเช่นนี้”NextPDF สามารถคำนวณลายเซ็น ML-DSA หรือ SLH-DSA จริงผ่าน token ได้แล้ว ถึงกระนั้น
ทุก boolean ความสอดคล้องยังคงถูกตั้งค่าตายตัวเป็น false หลัง gate ที่เปิดเป็นค่า
เริ่มต้นปิดสองตัว ลายเซ็นมีค่าก็ต่อเมื่อสามารถตรวจสอบมันได้ภายหลัง สำหรับ post-quantum
ยังไม่มีเส้นทางการตรวจสอบ ไม่มีชุด ETSI AdES ที่ลงทะเบียน และยังไม่มีการ round-trip
HSM ที่ผ่านการ validate แบบ FIPS การ ship สิ่งนี้แบบพร้อมใช้งานทั่วไปจะออกลายเซ็นที่
ไม่มีโปรแกรมดูใดตรวจสอบได้และไม่มีคลังเก็บใดเชื่อถือได้ ดังนั้นการออกแบบจึงแยกการ
ผลิตไบต์ออกจากการอ้างว่าใครสามารถพึ่งพามันได้ และไม่มีแฟล็ก preview ใดทำให้เส้นนั้น
พร่ามัวได้
เบื้องหลังการออกแบบ: Long-term validation
ชุดพารามิเตอร์อัลกอริทึม
หัวข้อที่มีชื่อว่า “ชุดพารามิเตอร์อัลกอริทึม”signPqs() เลือกอัลกอริทึมและชุดพารามิเตอร์ผ่าน enum Pkcs11PqsAlgorithm แต่ละ
case แมปชุดพารามิเตอร์ NIST เข้ากับตัวระบุกลไก / ชุดพารามิเตอร์ของ PKCS#11 แบบ
provisional และเข้ากับความยาวไบต์ลายเซ็นที่ FIPS กำหนดซึ่งใช้สำหรับการตรวจสอบ
ความยาวแบบ defence-in-depth
ML-DSA — FIPS 204 (module-lattice) สามชุดพารามิเตอร์ อ้างที่หมวดความแข็งแกร่ง ด้านความปลอดภัยของ NIST ที่แสดง:
| ชุดพารามิเตอร์ | หมวด NIST | ความยาวลายเซ็น (ไบต์) |
|---|---|---|
ML-DSA-44 | 2 | 2420 |
ML-DSA-65 (ค่าเริ่มต้นที่แนะนำ) | 3 | 3309 |
ML-DSA-87 | 5 | 4627 |
SLH-DSA — FIPS 205 (stateless hash-based) สิบสองชุดพารามิเตอร์ ก่อตัวเป็น
SHA2 / SHAKE x 128 / 192 / 256 x small (s) / fast (f) ตัวแปร s ทำให้ขนาด
ลายเซ็นน้อยที่สุด; ตัวแปร f ทำให้เวลาแฝงในการลงนามน้อยที่สุด:
| ตระกูลชุดพารามิเตอร์ | หมวด NIST | ความยาวลายเซ็น (ไบต์) |
|---|---|---|
SLH-DSA-{SHA2,SHAKE}-128s | 1 | 7856 |
SLH-DSA-{SHA2,SHAKE}-128f | 1 | 17088 |
SLH-DSA-{SHA2,SHAKE}-192s | 3 | 16224 |
SLH-DSA-{SHA2,SHAKE}-192f | 3 | 35664 |
SLH-DSA-{SHA2,SHAKE}-256s | 5 | 29792 |
SLH-DSA-{SHA2,SHAKE}-256f | 5 | 49856 |
การเปิดใช้ preview
หัวข้อที่มีชื่อว่า “การเปิดใช้ preview”gate อิสระสองตัวต้องเปิดทั้งคู่ ทั้งสองตั้งค่าเริ่มต้นเป็นปิด
- Process gate ตั้ง
NEXTPDF_FEATURE_PREVIEW_PQS_HSM=1ก่อนที่กระบวนการจะ boot (หรือผ่านputenv()ก่อนอ่านสถานะ) ต้องการความเท่ากันอย่างเข้มงวดกับสตริง1; ค่าอื่นใด — รวมถึง0,true,yesหรือว่าง — จะถูกถือว่าปิด - Opt-in ต่อ signer ส่ง
$enablePostQuantum: trueไปยังตัวสร้างPkcs11Signer
use NextPDF\Enterprise\Security\Signature\Hsm\Pkcs11Signer;use NextPDF\Enterprise\Security\Signature\Hsm\Pkcs11PqsAlgorithm;use NextPDF\Enterprise\Security\Signature\Hsm\PqsCapabilityStatus;use NextPDF\Enterprise\Security\Signature\Hsm\PqsPreviewFeature;
// 1. Open the process-level preview gate (default-off).putenv(PqsPreviewFeature::ENV_PREVIEW_PQS_HSM . '=1');
// 2. The capability status is honest even with the gate open:// generallyAvailable / adesCompliant / verificationAvailable stay false.$status = PqsCapabilityStatus::current();
// 3. Construct the PKCS#11 signer with the per-signer opt-in.$signer = new Pkcs11Signer( libraryPath: '/usr/lib/softhsm/libsofthsm2.so', slotId: 0, pin: '1234', certLabel: 'my-pqc-signing-cert', enablePostQuantum: true,);
// 4. Sign with a chosen parameter set. The returned bytes are length-checked// against Pkcs11PqsAlgorithm::signatureLength() before being accepted.$signature = $signer->signPqs( data: $tbsBytes, algorithm: Pkcs11PqsAlgorithm::MlDsa65,);isPostQuantumEnabled() รายงานว่า opt-in ต่อ signer ถูกตั้งไว้หรือไม่ และ
PqsCapabilityStatus::current() รายงานสถานะระดับกระบวนการบวกกับ boolean การอ้าง
ที่ตรงไปตรงมา
ขอบเขต fail-closed
หัวข้อที่มีชื่อว่า “ขอบเขต fail-closed”พื้นผิวเป็น fail-closed และรายงานความล้มเหลวผ่านข้อยกเว้นที่มีชื่อและมีชนิด แทนที่จะ เป็น fallback ที่เงียบ ๆ:
- ไม่มี opt-in หาก
signPqs()ถูกเรียกเมื่อ$enablePostQuantumเป็นfalseมันจะโยนHsmOperationExceptionไม่มีการลงนามเกิดขึ้น - Context ยาวเกินไป context octet string ของการลงนามที่ยาวเกิน 255 ไบต์จะโยน
InvalidArgumentException(ตามขอบเขต context ของ FIPS 204 / FIPS 205) ก่อนการ เรียก token ใด ๆ - ไม่มีคีย์ หากไม่มี private key ที่ตรงกับ label ที่กำหนดค่าไว้บน token,
signPqs()จะโยนHsmOperationException - ความยาวไม่ตรงกัน หาก token คืนลายเซ็นที่ความยาวไบต์ไม่เท่ากับความยาวที่
FIPS กำหนดสำหรับชุดพารามิเตอร์
signPqs()จะโยนHsmOperationException— ลายเซ็นที่ผิดรูปแบบ (ถูกตัดทอนหรือใหญ่เกิน) จะถูกปฏิเสธก่อนที่จะถึงการเข้ารหัส CMS SignedData - ข้อผิดพลาด token ข้อผิดพลาด PKCS#11 ที่อยู่เบื้องล่างใด ๆ ถูกห่อใน
HsmOperationException
แฟล็ก env ระดับกระบวนการไม่เปลี่ยนแปลงสิ่งใดเกี่ยวกับขอบเขตนี้: แม้เมื่อแฟล็กเปิด boolean ความสามารถยังคงเป็น false และเส้นทางการลงนามยังคงถูกตรวจสอบความยาว และ fail-closed
ขอบเขตที่ตรงไปตรงมา
หัวข้อที่มีชื่อว่า “ขอบเขตที่ตรงไปตรงมา”การอ้างต่อไปนี้ ไม่ ถูกทำสำหรับพื้นผิวนี้ และต้องไม่ปรากฏในเอกสาร UI หรือการตลาด ใด ๆ ที่มาจากมัน:
- “GA” / “generally available”
- “AdES” / “PAdES-compliant” — ไม่มีชุด ETSI ใดลงทะเบียนลายเซ็น post-quantum สำหรับการจัดเก็บถาวรระยะยาว
- “FIPS-validated” — ไม่มีการ round-trip HSM post-quantum ที่ผ่านการ validate แบบ FIPS-140-3 ถูกสร้างขึ้นสำหรับเส้นทางนี้
- “certified” หรือ “conformant” เทียบกับ FIPS, OASIS PKCS#11 v3.1 หรือ ETSI
- “production-ready”
สิ่งที่พื้นผิวเป็นจริงอย่างตรงไปตรงมา: preview แบบ opt-in, เปิดเป็นค่าเริ่มต้นปิด, fail-closed ของการลงนาม post-quantum ที่มอบหมายผ่าน HSM ซึ่งขับเคลื่อน ML-DSA / SLH-DSA ผ่าน PKCS#11 token และตรวจสอบความยาวของผลลัพธ์ สิ่งที่มันไม่ใช่: ความสามารถการลงนามที่พร้อมใช้งานทั่วไป สอดคล้องกับ AdES ผ่านการ validate แบบ FIPS หรือผ่านการรับรอง
ขอบเขตของมาตรฐาน
หัวข้อที่มีชื่อว่า “ขอบเขตของมาตรฐาน”มาตรฐานที่เกี่ยวข้องดูแลโดยหน่วยงานภายนอก และ preview ไม่มีจุดยืนเกี่ยวกับความ สอดคล้องกับสิ่งใดในนั้น:
- ชุดพารามิเตอร์อัลกอริทึมและความยาวลายเซ็นเป็นไปตาม FIPS 204 (ML-DSA) และ FIPS 205 (SLH-DSA)
- ตัวระบุกลไก token เป็นไปตาม OASIS PKCS#11; registry กลไก post-quantum ใน PKCS#11 v3.1 ยังไม่ถูกสรุป ดังนั้น NextPDF จึงใช้ตัวระบุแบบ provisional
- โปรไฟล์การจัดเก็บถาวรระยะยาวของลายเซ็น PDF คือ ETSI EN 319 142-2 (PAdES
extended profile สร้างบน CMS
SignerInfo) และแคตตาล็อก cryptographic-suite ETSI TS 119 312 ซึ่งปัจจุบันโปรไฟล์เฉพาะ RSA และ ECDSA เท่านั้น — ไม่มีชุด post-quantum ถูกลงทะเบียนสำหรับ CAdES/PAdES ลายเซ็น PDF แบบ post-quantum ที่ผลิตวันนี้จึงยังไม่สอดคล้องกับ AdES สำหรับการจัดเก็บถาวร
ไม่มีการคัดลอกข้อความมาตรฐานซ้ำในหน้านี้
หมายเหตุด้านความปลอดภัย
หัวข้อที่มีชื่อว่า “หมายเหตุด้านความปลอดภัย”preview ไม่ใช่การควบคุมด้านความปลอดภัย การมีลายเซ็น post-quantum ที่ผลิตโดย เส้นทางนี้ไม่ได้สร้างความถูกต้องแบบ AdES ไม่ได้บ่งบอกว่าคีย์น่าเชื่อถือ และไม่สามารถ ตรวจสอบได้โดย NextPDF (ไม่มีเส้นทางการตรวจสอบ post-quantum) อย่าพึ่งพา preview นี้สำหรับการรับประกันลายเซ็น และอย่า deploy มันที่ซึ่งต้องการลายเซ็นที่สอดคล้องกับ AdES หรือผ่านการ validate แบบ FIPS ปิด gate ทั้งสองในการใช้งานจริงจนกว่ามาตรฐาน จะลงตัว
พื้นผิวของ API
หัวข้อที่มีชื่อว่า “พื้นผิวของ API”| สัญลักษณ์ | บทบาท |
|---|---|
Pkcs11Signer::signPqs() | การลงนาม post-quantum ที่มอบหมายผ่าน HSM แบบ opt-in, fail-closed ผ่าน PKCS#11 โยน HsmOperationException เมื่อปิดใช้งาน เมื่อไม่มีคีย์ หรือเมื่อความยาวลายเซ็นไม่ตรงกัน |
Pkcs11Signer::isPostQuantumEnabled() | ว่า opt-in $enablePostQuantum ต่อ signer ถูกตั้งไว้หรือไม่ |
Pkcs11PqsAlgorithm | enum ของชุดพารามิเตอร์ ML-DSA (FIPS 204) และ SLH-DSA (FIPS 205); แมปแต่ละชุดเข้ากับ id กลไกแบบ provisional และความยาวลายเซ็นที่ FIPS กำหนด |
PqsPreviewFeature | gate env ระดับกระบวนการ เปิดเป็นค่าเริ่มต้นปิด (NEXTPDF_FEATURE_PREVIEW_PQS_HSM) |
PqsCapabilityStatus | สถานะที่ตรงไปตรงมาและอ่านได้ด้วยเครื่อง: ทุก boolean ที่อ้างเชิงบวก (generally-available, AdES, verification, conformance) ถูกตั้งค่าตายตัวเป็น false ไม่ว่าจะตั้งแฟล็ก preview อย่างไร |
HsmOperationException | ข้อยกเว้นแบบมีชนิดที่ยกบนเส้นทาง fail-closed |
ขอบเขตการเผยแพร่
หัวข้อที่มีชื่อว่า “ขอบเขตการเผยแพร่”หน้านี้บันทึกเฉพาะพฤติกรรมที่สังเกตได้จากภายนอกและพื้นผิว public API ที่รองรับเท่านั้น เส้นทาง namespace ภายใน คลาสตัวช่วย ตารางกลไก ชื่อไฟล์ runbook และคำนำหน้า ticket อยู่นอกขอบเขต