Zum Inhalt springen
getnextpdf.com

Enterprise EditionStabilität: Experimentell

Post-Quanten-HSM-Signieren (PQS) Preview-Capability-Status

Preview-Capability-Status. Per Opt-in, standardmäßig aus, fail-closed. Dies ist eine Vorschau des HSM-delegierten Post-Quanten-Signierens. Es ist nicht allgemein verfügbar, es ist nicht AdES-konform, es ist nicht FIPS-validiert, und es macht keine Zertifizierungs- oder Konformitätsaussage. Die Vorschau ist aus, bis Sie sich dafür entscheiden; ist sie aus, schlägt der Signieraufruf fail-closed mit einer typisierten Ausnahme fehl.

NextPDF Enterprise stellt eine experimentelle Post-Quanten-Signaturoberfläche (PQS) bereit, die ML-DSA-(FIPS 204)- und SLH-DSA-(FIPS 205)-Signieren über ein PKCS#11-Hardware-Token antreibt. Der Pfad ist Pkcs11Signer::signPqs(), gated hinter einem expliziten Per-Signer-Opt-in ($enablePostQuantum) und, davon getrennt, hinter einem prozessweiten Env-Flag (NEXTPDF_FEATURE_PREVIEW_PQS_HSM). Beide sind standardmäßig aus.

Diese Seite ist die ehrliche Grenze. Sie gibt an, was die Vorschau tut — sie delegiert eine echte Post-Quanten-Signieroperation an das Token — und, mit gleicher Ehrlichkeit, was sie nicht ist: Sie ist nicht GA, nicht AdES, nicht FIPS-validiert und keine Konformitätsaussage gegen FIPS, OASIS oder ETSI. Die Standards, die eine Post-Quanten-PDF-Signatur für die Langzeitarchivierung interoperabel machen würden, sind noch nicht eingetroffen (siehe Standards-Grenze).

Diese Fähigkeit wird in NextPDF Enterprise (nextpdf/enterprise) ausgeliefert und aktiviert sich mit einer Lizenzhülle der Enterprise-Stufe. Ein Deployment ohne diese Berechtigung lädt die Klassen der Fähigkeit nicht. Editionen vergleichen und eine Lizenz erwerben.

Sie baut auf dem Enterprise-PKCS#11-Hardware-Token-Signierer auf — siehe HSM-Signieren. Der klassische (RSA / ECDSA) PKCS#11-Signierpfad ist die unterstützte, stabile Enterprise-Fähigkeit; der hier beschriebene Post-Quanten-Pfad ist eine experimentelle Vorschau, die darauf aufsetzt. NextPDF Enterprise schließt den Pro-Funktionsumfang ein.

Die Vorschau treibt eine echte Signieroperation an: Wenn aktiviert, dispatcht signPqs() an den Kandidaten-PKCS#11-v3.1-Post-Quanten-Mechanismus auf dem Token, der private Schlüssel verlässt nie die Token-Grenze, und die zurückgegebenen Bytes werden gegen die FIPS-vorgeschriebene Signaturlänge für das gewählte Parameter-Set längengeprüft, bevor sie akzeptiert werden.

Es ist zugleich eine Vorschau und keine allgemein verfügbare Produktfähigkeit:

  • Der PKCS#11-Post-Quanten-Mechanismus und die Parameter-Set-Bezeichner sind provisorisch — OASIS PKCS#11 v3.1 hat keine Post-Quanten-Mechanismus-Registry finalisiert, sodass die verwendeten Werte als provisorisch nachgehalten werden und HSM-Operatoren bestätigen müssen, dass die PQ-Firmware ihres Tokens dazu passt, bevor sie aktivieren.
  • In NextPDF existiert kein Post-Quanten-Verifikationspfad, und keine ETSI-Suite registriert eine Post-Quanten-Signatur für die AdES-Langzeitarchivierung, sodass eine hier erzeugte Signatur noch nicht interoperabel ist und die meisten PDF-Betrachter sie zur Validierungszeit ablehnen werden.
  • Ein begleitender Deskriptor, PqsCapabilityStatus, meldet diese Fakten in maschinenlesbarer Form. Jedes positive Claim-Boolean — generallyAvailable, adesCompliant, verificationAvailable, conformanceClaimed — ist hartcodiert auf false und bleibt false, auch wenn das Preview-Flag aktiv ist, und keine Konfiguration kann eines davon auf wahr kippen. (Es trägt außerdem ein recognitionOnly-Flag, hartcodiert true, das festhält, dass die Algorithmus-Erkennung niemals ein Konformitätsverdikt ist; es bedeutet nicht, dass die Oberfläche nicht signieren kann — das Signieren erfolgt über signPqs() wie oben beschrieben.)

NextPDF kann bereits eine echte ML-DSA- oder SLH-DSA-Signatur über das Token berechnen. Dennoch bleibt jedes Konformitäts-Boolean hartcodiert auf false, hinter zwei standardmäßig ausgeschalteten Gates. Eine Signatur ist nur so viel wert wie die Möglichkeit, sie später zu verifizieren. Für Post-Quanten gibt es bislang keinen Verifikationspfad, keine registrierte ETSI-AdES-Suite und keinen FIPS-validierten HSM-Roundtrip. Dies als allgemein verfügbar auszuliefern würde Signaturen ausstellen, die kein Betrachter validieren und kein Archiv vertrauen kann. Deshalb trennt das Design das Erzeugen der Bytes vom Anspruch, dass sich jemand darauf verlassen darf, und kein Preview-Flag kann diese Linie verwischen.

Design-Hintergrund: Langzeitvalidierung.

signPqs() wählt den Algorithmus und das Parameter-Set über das Pkcs11PqsAlgorithm-Enum. Jeder Fall bildet ein NIST-Parameter-Set auf einen provisorischen PKCS#11-Mechanismus-/Parameter-Set-Bezeichner und auf die FIPS-vorgeschriebene Signaturbytelänge ab, die für die Defence-in-Depth-Längenprüfung verwendet wird.

ML-DSA — FIPS 204 (Module-Lattice). Drei Parameter-Sets, beansprucht auf den gezeigten NIST-Sicherheitsstärke-Kategorien:

Parameter-SetNIST-KategorieSignaturlänge (Bytes)
ML-DSA-4422420
ML-DSA-65 (empfohlener Standard)33309
ML-DSA-8754627

SLH-DSA — FIPS 205 (zustandslos, hashbasiert). Zwölf Parameter-Sets, gebildet als SHA2 / SHAKE x 128 / 192 / 256 x small (s) / fast (f). Die s-Varianten minimieren die Signaturgröße; die f-Varianten minimieren die Signierlatenz:

Parameter-Set-FamilieNIST-KategorieSignaturlänge (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

Zwei unabhängige Gates müssen beide offen sein. Beide sind standardmäßig aus.

  1. Prozess-Gate. Setzen Sie NEXTPDF_FEATURE_PREVIEW_PQS_HSM=1, bevor der Prozess bootet (oder via putenv() bevor der Status gelesen wird). Strikte Gleichheit mit der Zeichenkette 1 ist erforderlich; jeder andere Wert — einschließlich 0, true, yes oder leer — wird als aus behandelt.
  2. Per-Signer-Opt-in. Übergeben Sie $enablePostQuantum: true an den Pkcs11Signer-Konstruktor.
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() meldet, ob das Per-Signer-Opt-in gesetzt war, und PqsCapabilityStatus::current() meldet den prozessweiten Zustand plus die ehrlichen Claim-Booleans.

Die Oberfläche ist fail-closed und meldet Fehler über benannte, typisierte Ausnahmen statt über stillen Fallback:

  • Opt-in fehlt. Wird signPqs() aufgerufen, während $enablePostQuantum false ist, wirft es HsmOperationException. Es findet kein Signieren statt.
  • Kontext zu lang. Eine Signierkontext-Oktett-Zeichenkette länger als 255 Bytes wirft InvalidArgumentException (gemäß der FIPS-204-/FIPS-205-Kontextschranke), bevor ein Token-Aufruf erfolgt.
  • Schlüssel fehlt. Passt kein privater Schlüssel zum konfigurierten Label auf dem Token, wirft signPqs() HsmOperationException.
  • Längenabweichung. Gibt das Token eine Signatur zurück, deren Bytelänge nicht der FIPS-vorgeschriebenen Länge für das Parameter-Set entspricht, wirft signPqs() HsmOperationException — eine fehlerhafte (gekürzte oder zu große) Signatur wird abgelehnt, bevor sie das CMS-SignedData-Encoding erreichen kann.
  • Token-Fehler. Jeder zugrunde liegende PKCS#11-Fehler wird in HsmOperationException gewrappt.

Das prozessweite Env-Flag ändert nichts an dieser Grenze: Selbst wenn das Flag aktiv ist, bleiben die Capability-Booleans falsch und der Signierpfad bleibt längengeprüft und fail-closed.

Die folgenden Aussagen werden für diese Oberfläche nicht gemacht und dürfen in keiner davon abgeleiteten Dokumentation, UI oder Marketing erscheinen:

  • „GA” / „generally available”.
  • „AdES” / „PAdES-compliant” — keine ETSI-Suite registriert eine Post-Quanten-Signatur für die Langzeitarchivierung.
  • „FIPS-validiert” — für diesen Pfad wurde kein FIPS-140-3-validierter Post-Quanten-HSM-Roundtrip etabliert.
  • „certified” oder „conformant” gegen FIPS, OASIS PKCS#11 v3.1 oder ETSI.
  • „production-ready”.

Was die Oberfläche ehrlich ist: eine per Opt-in aktivierbare, standardmäßig ausgeschaltete, fail-closed Vorschau des HSM-delegierten Post-Quanten-Signierens, die ML-DSA / SLH-DSA über ein PKCS#11-Token antreibt und das Ergebnis längenprüft. Was sie nicht ist: eine allgemein verfügbare, AdES-konforme, FIPS-validierte oder zertifizierte Signierfähigkeit.

Die beteiligten Standards werden von externen Gremien gepflegt, und die Vorschau bezieht keine Position zur Konformität mit irgendeinem von ihnen:

  • Die Algorithmus-Parameter-Sets und Signaturlängen folgen FIPS 204 (ML-DSA) und FIPS 205 (SLH-DSA).
  • Die Token-Mechanismus-Bezeichner folgen OASIS PKCS#11; die Post-Quanten-Mechanismus-Registry in PKCS#11 v3.1 ist noch nicht finalisiert, sodass NextPDF provisorische Bezeichner verwendet.
  • Die PDF-Signatur-Langzeitarchivierungsprofile sind ETSI EN 319 142-2 (PAdES Extended Profiles, aufbauend auf CMS SignerInfo) und der Kryptografie-Suiten-Katalog ETSI TS 119 312, die derzeit nur RSA und ECDSA profilieren — keine Post-Quanten-Suite ist für CAdES/PAdES registriert. Eine heute erzeugte Post-Quanten-PDF-Signatur ist daher noch nicht AdES-konform für die Archivierung.

Auf dieser Seite wird kein Standardtext wiedergegeben.

Eine Vorschau ist keine Sicherheitskontrolle. Das Vorhandensein einer auf diesem Pfad erzeugten Post-Quanten-Signatur stellt keine AdES-Gültigkeit her, impliziert keinen vertrauenswürdigen Schlüssel und ist durch NextPDF nicht verifizierbar (es gibt keinen Post-Quanten-Verifikationspfad). Verlassen Sie sich für die Signatursicherung nicht auf diese Vorschau und setzen Sie sie nicht dort ein, wo eine AdES-konforme oder FIPS-validierte Signatur erforderlich ist. Halten Sie beide Gates in der Produktion aus, bis die Standards eintreffen.

SymbolRolle
Pkcs11Signer::signPqs()Per Opt-in, fail-closed HSM-delegiertes Post-Quanten-Signieren über PKCS#11. Wirft HsmOperationException, wenn deaktiviert, wenn der Schlüssel fehlt oder bei einer Signaturlängen-Abweichung.
Pkcs11Signer::isPostQuantumEnabled()Ob das Per-Signer-Opt-in $enablePostQuantum gesetzt war.
Pkcs11PqsAlgorithmEnum der ML-DSA-(FIPS 204)- und SLH-DSA-(FIPS 205)-Parameter-Sets; bildet jedes auf einen provisorischen Mechanismus-Id und die FIPS-vorgeschriebene Signaturlänge ab.
PqsPreviewFeatureProzessweites, standardmäßig ausgeschaltetes Env-Gate (NEXTPDF_FEATURE_PREVIEW_PQS_HSM).
PqsCapabilityStatusEhrlicher, maschinenlesbarer Status: Jedes positive Claim-Boolean (generally-available, AdES, Verifikation, Konformität) ist unabhängig vom Preview-Flag hartcodiert false.
HsmOperationExceptionDie typisierte Ausnahme, die auf den Fail-closed-Pfaden ausgelöst wird.

Diese Seite dokumentiert nur extern beobachtbares Verhalten und die unterstützte öffentliche API-Oberfläche. Interne Namespace-Pfade, Hilfsklassen, Mechanismus-Tabellen, Runbook-Dateinamen und Ticket-Präfixe liegen außerhalb des Geltungsbereichs.