Ga naar inhoud
getnextpdf.com

Enterprise editiestabiliteit: Experimenteel

Post-quantum HSM-ondertekening (PQS) preview-vermogensstatus

Preview-vermogensstatus. Opt-in, standaard uit, fail-closed. Dit is een preview van HSM-gedelegeerde post-quantum-ondertekening. Het is niet algemeen beschikbaar, het is niet AdES-compliant, het is niet FIPS-validated, en het maakt geen certificerings- of conformiteitsclaim. De preview is uit totdat je opt-in geeft; wanneer uit, faalt de ondertekeningsaanroep gesloten met een getypeerde exception.

NextPDF Enterprise stelt een experimenteel post-quantum signature (PQS)-oppervlak beschikbaar dat ML-DSA (FIPS 204)- en SLH-DSA (FIPS 205)-ondertekening aandrijft via een PKCS#11-hardwaretoken. Het pad is Pkcs11Signer::signPqs(), gegatet achter een expliciete per-signer-opt-in ($enablePostQuantum) en, afzonderlijk, achter een env-vlag op procesniveau (NEXTPDF_FEATURE_PREVIEW_PQS_HSM). Beide zijn standaard uit.

Deze pagina is de eerlijke grens. Hij vermeldt wat de preview doet — het delegeert een echte post-quantum-ondertekeningsbewerking aan het token — en, met gelijke eerlijkheid, wat het niet is: het is niet GA, niet AdES, niet FIPS-validated, en geen conformiteitsclaim tegen FIPS, OASIS of ETSI. De standaarden die een post-quantum-PDF-handtekening interoperabel zouden maken voor langetermijnarchivering zijn nog niet geland (zie Standaardgrens).

Dit vermogen wordt geleverd in NextPDF Enterprise (nextpdf/enterprise) en activeert met een licentie-envelop op Enterprise-niveau. Een deployment zonder die entitlement laadt de klassen van het vermogen niet. Vergelijk edities en verkrijg een licentie.

Het bouwt voort op de Enterprise PKCS#11-hardwaretoken-signer — zie HSM-ondertekening. Het klassieke (RSA / ECDSA) PKCS#11-ondertekeningspad is het ondersteunde, stabiele Enterprise-vermogen; het hier beschreven post-quantum-pad is een experimentele preview die daar bovenop is gelaagd. NextPDF Enterprise omvat de Pro-featureset.

De preview drijft een echte ondertekeningsbewerking aan: wanneer ingeschakeld, verstuurt signPqs() naar het kandidaat-PKCS#11 v3.1 post-quantum-mechanisme op het token, de private key verlaat nooit de tokengrens, en de teruggegeven bytes worden lengtegecontroleerd tegen de FIPS-voorgeschreven handtekeninglengte voor de gekozen parameterset voordat ze worden geaccepteerd.

Het is tegelijkertijd een preview en geen algemeen beschikbaar productvermogen:

  • Het PKCS#11 post-quantum-mechanisme en de parameterset-identificatoren zijn provisioneel — OASIS PKCS#11 v3.1 heeft geen post-quantum-mechanismeregister gefinaliseerd, dus de gebruikte waarden worden bijgehouden als provisioneel en HSM-operators moeten bevestigen dat de PQ-firmware van hun token overeenkomt voordat ze inschakelen.
  • Er bestaat geen post-quantum-verificatiepad in NextPDF, en geen ETSI-suite registreert een post-quantum-handtekening voor AdES-langetermijnarchivering, dus een hier geproduceerde handtekening is nog niet interoperabel en de meeste PDF-viewers zullen die bij validatie afwijzen.
  • Een begeleidende descriptor, PqsCapabilityStatus, rapporteert deze feiten in een machineleesbare vorm. Elke positieve claim-boolean — generallyAvailable, adesCompliant, verificationAvailable, conformanceClaimed — is hard-coded op false en blijft false zelfs wanneer de preview-vlag aan staat, en geen configuratie kan er een inschakelen. (Het draagt ook een recognitionOnly-vlag, hard-coded true, die vastlegt dat algoritmeherkenning nooit een conformiteitsverdict is; het betekent niet dat het oppervlak niet kan ondertekenen — ondertekening gebeurt via signPqs() zoals hierboven beschreven.)

NextPDF kan al een echte ML-DSA- of SLH-DSA-handtekening berekenen via het token. Toch blijft elke conformiteits-boolean hard-coded op false, achter twee standaard-uitgeschakelde gates. Een handtekening is alleen zoveel waard als het vermogen om die later te verifiëren. Voor post-quantum is er nog geen verificatiepad, geen geregistreerde ETSI AdES-suite en geen FIPS-validated HSM-rondrit. Dit als algemeen beschikbaar leveren zou handtekeningen uitgeven die geen viewer kan valideren en geen archief kan vertrouwen. Daarom scheidt het ontwerp het produceren van de bytes van het claimen dat iemand erop mag vertrouwen, en geen preview-vlag kan die lijn vervagen.

Ontwerpachtergrond: Langetermijnvalidatie.

signPqs() selecteert het algoritme en de parameterset via de Pkcs11PqsAlgorithm-enum. Elke case mapt een NIST-parameterset naar een provisionele PKCS#11-mechanisme-/parameterset-identificator en naar de FIPS-voorgeschreven handtekening-bytelengte die wordt gebruikt voor de defence-in-depth-lengtecontrole.

ML-DSA — FIPS 204 (module-lattice). Drie parametersets, geclaimd op de getoonde NIST-securitystrength-categorieën:

Parameter setNIST categorySignature length (bytes)
ML-DSA-4422420
ML-DSA-65 (aanbevolen standaard)33309
ML-DSA-8754627

SLH-DSA — FIPS 205 (stateless hash-based). Twaalf parametersets, gevormd als SHA2 / SHAKE x 128 / 192 / 256 x small (s) / fast (f). De s-varianten minimaliseren de handtekeninggrootte; de f-varianten minimaliseren de ondertekeningslatentie:

Parameter set familyNIST categorySignature length (bytes)
SLH-DSA-{SHA2,SHAKE}-128s17856
SLH-DSA-{SHA2,SHAKE}-128f117088
SLH-DSA-{SHA2,SHAKE}-192s316224
SLH-DSA-{SHA2,SHAKE}-192f335664
SLH-DSA-{SHA2,SHAKE}-256s529792
SLH-DSA-{SHA2,SHAKE}-256f549856

Twee onafhankelijke gates moeten beide open zijn. Beide staan standaard uit.

  1. Procesgate. Stel NEXTPDF_FEATURE_PREVIEW_PQS_HSM=1 in voordat het proces boot (of via putenv() voordat de status wordt gelezen). Strikte gelijkheid aan de string 1 is vereist; elke andere waarde — inclusief 0, true, yes of leeg — wordt behandeld als uit.
  2. Per-signer-opt-in. Geef $enablePostQuantum: true door aan de Pkcs11Signer-constructor.
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() rapporteert of de per-signer-opt-in was ingesteld, en PqsCapabilityStatus::current() rapporteert de staat op procesniveau plus de eerlijke claim-booleans.

Het oppervlak is fail-closed en rapporteert mislukkingen via benoemde, getypeerde exceptions in plaats van stille terugval:

  • Opt-in afwezig. Als signPqs() wordt aangeroepen terwijl $enablePostQuantum false is, werpt het HsmOperationException. Er vindt geen ondertekening plaats.
  • Context te lang. Een ondertekeningscontext-octetstring die langer is dan 255 bytes werpt InvalidArgumentException (volgens de FIPS 204- / FIPS 205-contextgrens) voordat er een tokenaanroep plaatsvindt.
  • Key afwezig. Als geen private key overeenkomt met het geconfigureerde label op het token, werpt signPqs() HsmOperationException.
  • Lengtemismatch. Als het token een handtekening teruggeeft waarvan de bytelengte niet gelijk is aan de FIPS-voorgeschreven lengte voor de parameterset, werpt signPqs() HsmOperationException — een misvormde (afgekapte of te grote) handtekening wordt afgewezen voordat die de CMS SignedData-encoding kan bereiken.
  • Tokenfout. Elke onderliggende PKCS#11-fout wordt verpakt in HsmOperationException.

De env-vlag op procesniveau verandert niets aan deze grens: zelfs wanneer de vlag aan staat, blijven de vermogensbooleans false en blijft het ondertekeningspad lengtegecontroleerd en fail-closed.

De volgende claims worden niet gemaakt voor dit oppervlak en mogen niet verschijnen in enige documentatie, UI of marketing die ervan is afgeleid:

  • “GA” / “generally available”.
  • “AdES” / “PAdES-compliant” — geen ETSI-suite registreert een post-quantum-handtekening voor langetermijnarchivering.
  • “FIPS-validated” — er is geen FIPS-140-3-validated post-quantum-HSM-rondrit vastgesteld voor dit pad.
  • “certified” of “conformant” tegen FIPS, OASIS PKCS#11 v3.1 of ETSI.
  • “production-ready”.

Wat het oppervlak eerlijk is: een opt-in, standaard-uitgeschakelde, fail-closed preview van HSM-gedelegeerde post-quantum-ondertekening die ML-DSA / SLH-DSA aandrijft via een PKCS#11-token en het resultaat lengtecontroleert. Wat het niet is: een algemeen beschikbaar, AdES-compliant, FIPS-validated of certified ondertekeningsvermogen.

De betrokken standaarden worden onderhouden door externe instanties, en de preview neemt geen standpunt in over conformiteit aan een ervan:

  • De algoritme-parametersets en handtekeninglengtes volgen FIPS 204 (ML-DSA) en FIPS 205 (SLH-DSA).
  • De token-mechanisme-identificatoren volgen OASIS PKCS#11; het post-quantum-mechanismeregister in PKCS#11 v3.1 is nog niet gefinaliseerd, dus NextPDF gebruikt provisionele identificatoren.
  • De PDF-handtekening-langetermijnarchiveringsprofielen zijn ETSI EN 319 142-2 (PAdES extended profiles, gebouwd op CMS SignerInfo) en de cryptografische-suites-catalogus ETSI TS 119 312, die momenteel alleen RSA en ECDSA profileren — geen post-quantum-suite is geregistreerd voor CAdES/PAdES. Een vandaag geproduceerde post-quantum-PDF-handtekening is daarom nog niet AdES-compliant voor archivering.

Er wordt geen standaardtekst gereproduceerd op deze pagina.

Een preview is geen beveiligingscontrole. De aanwezigheid van een post-quantum-handtekening geproduceerd door dit pad stelt geen AdES-geldigheid vast, impliceert geen vertrouwde key, en is niet verifieerbaar door NextPDF (er is geen post-quantum-verificatiepad). Vertrouw niet op deze preview voor handtekeninggaranties, en deploy hem niet waar een AdES-compliant of FIPS-validated handtekening vereist is. Houd beide gates uit in productie totdat de standaarden landen.

SymbolRole
Pkcs11Signer::signPqs()Opt-in, fail-closed HSM-gedelegeerde post-quantum-ondertekening via PKCS#11. Werpt HsmOperationException wanneer uitgeschakeld, wanneer de key afwezig is, of bij een handtekening-lengtemismatch.
Pkcs11Signer::isPostQuantumEnabled()Of de per-signer-$enablePostQuantum-opt-in was ingesteld.
Pkcs11PqsAlgorithmEnum van ML-DSA (FIPS 204)- en SLH-DSA (FIPS 205)-parametersets; mapt elk naar een provisioneel mechanisme-id en de FIPS-voorgeschreven handtekeninglengte.
PqsPreviewFeatureEnv-gate op procesniveau, standaard uit (NEXTPDF_FEATURE_PREVIEW_PQS_HSM).
PqsCapabilityStatusEerlijke, machineleesbare status: elke positieve claim-boolean (generally-available, AdES, verification, conformance) is hard-coded false ongeacht de preview-vlag.
HsmOperationExceptionDe getypeerde exception die op de fail-closed-paden wordt geworpen.

Deze pagina documenteert alleen extern waarneembaar gedrag en het ondersteunde publieke API-oppervlak. Interne namespace-paden, helperklassen, mechanismetabellen, runbook-bestandsnamen en ticketprefixen vallen buiten de scope.