Enterprise EditionStabilität: Experimentell
Post-Quanten-HSM-Signieren (PQS) Preview-Capability-Status
Auf einen Blick
Abschnitt betitelt „Auf einen Blick“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).
Verfügbarkeit und Lizenzierung
Abschnitt betitelt „Verfügbarkeit und Lizenzierung“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.
Preview-Capability-Status
Abschnitt betitelt „Preview-Capability-Status“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 auffalseund bleibtfalse, auch wenn das Preview-Flag aktiv ist, und keine Konfiguration kann eines davon auf wahr kippen. (Es trägt außerdem einrecognitionOnly-Flag, hartcodierttrue, 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 übersignPqs()wie oben beschrieben.)
Warum es so funktioniert
Abschnitt betitelt „Warum es so funktioniert“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.
Algorithmus-Parameter-Sets
Abschnitt betitelt „Algorithmus-Parameter-Sets“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-Set | NIST-Kategorie | Signaturlänge (Bytes) |
|---|---|---|
ML-DSA-44 | 2 | 2420 |
ML-DSA-65 (empfohlener Standard) | 3 | 3309 |
ML-DSA-87 | 5 | 4627 |
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-Familie | NIST-Kategorie | Signaturlänge (Bytes) |
|---|---|---|
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 |
Die Vorschau aktivieren
Abschnitt betitelt „Die Vorschau aktivieren“Zwei unabhängige Gates müssen beide offen sein. Beide sind standardmäßig aus.
- Prozess-Gate. Setzen Sie
NEXTPDF_FEATURE_PREVIEW_PQS_HSM=1, bevor der Prozess bootet (oder viaputenv()bevor der Status gelesen wird). Strikte Gleichheit mit der Zeichenkette1ist erforderlich; jeder andere Wert — einschließlich0,true,yesoder leer — wird als aus behandelt. - Per-Signer-Opt-in. Übergeben Sie
$enablePostQuantum: truean denPkcs11Signer-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.
Fail-closed-Grenze
Abschnitt betitelt „Fail-closed-Grenze“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$enablePostQuantumfalseist, wirft esHsmOperationException. 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
HsmOperationExceptiongewrappt.
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.
Ehrliche Grenze
Abschnitt betitelt „Ehrliche Grenze“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.
Standards-Grenze
Abschnitt betitelt „Standards-Grenze“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.
Sicherheitshinweise
Abschnitt betitelt „Sicherheitshinweise“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.
API-Oberfläche
Abschnitt betitelt „API-Oberfläche“| Symbol | Rolle |
|---|---|
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. |
Pkcs11PqsAlgorithm | Enum 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. |
PqsPreviewFeature | Prozessweites, standardmäßig ausgeschaltetes Env-Gate (NEXTPDF_FEATURE_PREVIEW_PQS_HSM). |
PqsCapabilityStatus | Ehrlicher, maschinenlesbarer Status: Jedes positive Claim-Boolean (generally-available, AdES, Verifikation, Konformität) ist unabhängig vom Preview-Flag hartcodiert false. |
HsmOperationException | Die typisierte Ausnahme, die auf den Fail-closed-Pfaden ausgelöst wird. |
Publikationsgrenze
Abschnitt betitelt „Publikationsgrenze“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.