Zum Inhalt springen
getnextpdf.com

Enterprise EditionStabilität: Experimentell

Post-Quantum-Signaturvorschau — Ausführliche Referenz

Diese Seite ist die Referenz auf Vertragsebene für die Post-Quantum-Signaturvorschau (PQS-Vorschau) in NextPDF Enterprise. Sie behandelt drei öffentliche Symbole: das Parameter-Satz-Enum Pkcs11PqsAlgorithm, das Prozess-Gate PqsPreviewFeature und den Deskriptor PqsCapabilityStatus. Außerdem dokumentiert sie das Umgebungs-Gate NEXTPDF_FEATURE_PREVIEW_PQS_HSM.

Die Oberfläche ist experimentell und standardmäßig deaktiviert. Sie erkennt ML-DSA- (FIPS 204) und SLH-DSA-Algorithmuskennungen (FIPS 205), Parameter-Sätze und Signaturlängen. Erkennung ist kein Validierungsurteil. Es gibt keinen Post-Quantum-Verifizierungspfad. Es wird kein AdES-, FIPS-Validierungs- oder Konformitätsanspruch erhoben, und das Vorschau-Flag kann keinen erzeugen. Der konsumierende Signatur-Einstiegspunkt, Pkcs11Signer::signPqs(), wird auf der Fähigkeitsseite beschrieben.

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

Die Lizenz aktiviert die Enterprise-PKCS#11-Oberfläche als Ganzes. Der darin enthaltene Post-Quantum-Pfad bleibt unabhängig von der Lizenzstufe eine Vorschau. Zwei voneinander unabhängige Opt-ins sind weiterhin erforderlich: das hier dokumentierte Prozess-Gate und das Konstruktor-Flag pro Signierer auf Pkcs11Signer.

SymbolParameterStandardverhaltenRückgabeWirft oder scheitert mitHinweise
Pkcs11PqsAlgorithmString-gestütztes Enum, 15 FälleBenennt einen FIPS 204 / FIPS 205-Parameter-Satz pro FallEnum-FallNichts beim FallzugriffFallwerte sind die Parameter-Satz-Namen, z. B. ML-DSA-65.
Pkcs11PqsAlgorithm::isMlDsa()keineFamilientestboolWirft nichttrue für MlDsa44, MlDsa65, MlDsa87.
Pkcs11PqsAlgorithm::isSlhDsa()keineNegation von isMlDsa()boolWirft nichttrue für die zwölf SLH-DSA-Fälle.
Pkcs11PqsAlgorithm::mechanismId()keineOrdnet die Familie der Kandidaten-PKCS#11-v3.1-PQ-Mechanismus-ID zuintPHP-Error, wenn der Laufzeitumgebung die vorläufigen Pkcs11-PQ-Konstanten fehlenCKM_ML_DSA oder CKM_SLH_DSA; beide IDs sind vorläufig.
Pkcs11PqsAlgorithm::parameterSetId()keineOrdnet den Fall dem OASIS-Parameter-Satz-Diskriminator zuintPHP-Error, wenn der Laufzeitumgebung die vorläufigen Pkcs11-PQ-Konstanten fehlenCKP_*-Werte; vorläufig.
Pkcs11PqsAlgorithm::signatureLength()keineFIPS-vorgeschriebene Signatur-Byte-Länge für den Fallint (positiv)Wirft nichtVom Signaturpfad genutzt, um eine zurückgegebene Signatur mit unerwarteter Länge abzulehnen.
Pkcs11PqsAlgorithm::nistCategory()keineBeanspruchte NIST-Sicherheitsstärke-KategorieintWirft nichtGibt 1, 2, 3 oder 5 zurück.
PqsPreviewFeatureString-gestütztes Enum, 1 FallEinziger Fall PREVIEW_PQS_HSM; Konstante ENV_PREVIEW_PQS_HSMEnum-FallNichts beim FallzugriffDas Vorschau-Gate auf Prozessebene.
PqsPreviewFeature::isEnabled()keineLiest getenv() live; strikter Vergleich mit dem String 1boolWirft nichtFehlende Variable oder jeder andere Wert, einschließlich 0, true, yes, ist aus.
PqsCapabilityStatus::__construct()neun benannte readonly-FelderErstellt eine beliebige Deskriptor-InstanzPqsCapabilityStatusWirft nichtcurrent() ist der kanonische Konstruktor.
PqsCapabilityStatus::current()keineErstellt den Deskriptor für den umgebenden ProzessPqsCapabilityStatusWirft nichtJeder Anspruchs-Boolean ist fest; nur hsmRoundtripPreviewEnabled variiert mit dem Gate.
PqsCapabilityStatus::summary()keineEinzeiliger StatustextstringWirft nichtDie Formulierung trägt keinen Verfügbarkeits-, Archivierungs- oder Validierungsanspruch.
enum Pkcs11PqsAlgorithm: string
case MlDsa44 = 'ML-DSA-44';
case MlDsa65 = 'ML-DSA-65';
case MlDsa87 = 'ML-DSA-87';
case SlhDsaSha2_128s = 'SLH-DSA-SHA2-128s';
case SlhDsaShake_128s = 'SLH-DSA-SHAKE-128s';
case SlhDsaSha2_128f = 'SLH-DSA-SHA2-128f';
case SlhDsaShake_128f = 'SLH-DSA-SHAKE-128f';
case SlhDsaSha2_192s = 'SLH-DSA-SHA2-192s';
case SlhDsaShake_192s = 'SLH-DSA-SHAKE-192s';
case SlhDsaSha2_192f = 'SLH-DSA-SHA2-192f';
case SlhDsaShake_192f = 'SLH-DSA-SHAKE-192f';
case SlhDsaSha2_256s = 'SLH-DSA-SHA2-256s';
case SlhDsaShake_256s = 'SLH-DSA-SHAKE-256s';
case SlhDsaSha2_256f = 'SLH-DSA-SHA2-256f';
case SlhDsaShake_256f = 'SLH-DSA-SHAKE-256f';
public function isMlDsa(): bool
public function isSlhDsa(): bool
public function mechanismId(): int
public function parameterSetId(): int
public function signatureLength(): int
public function nistCategory(): int
enum PqsPreviewFeature: string
case PREVIEW_PQS_HSM = 'preview_pqs_hsm';
public const string ENV_PREVIEW_PQS_HSM = 'NEXTPDF_FEATURE_PREVIEW_PQS_HSM';
public function isEnabled(): bool
final readonly class PqsCapabilityStatus
public const string MATURITY_PREVIEW_EXPERIMENTAL = 'preview-experimental';
public const string MECHANISM_STATUS_PROVISIONAL = 'provisional';
public function __construct(
public bool $hsmRoundtripPreviewEnabled,
public bool $generallyAvailable,
public bool $adesCompliant,
public bool $verificationAvailable,
public bool $conformanceClaimed,
public bool $recognitionOnly,
public string $maturity,
public string $mechanismIdStatus,
public string $envGate,
)
public static function current(): self
public function summary(): string
  • Parameter-Satz-Katalog. NextPDF\Enterprise\Security\Signature\Hsm\Pkcs11PqsAlgorithm zählt drei ML-DSA-Sätze (FIPS 204) und zwölf SLH-DSA-Sätze (FIPS 205 §11.p12, Table 2) auf. Jeder Fall wird einer vorläufigen Mechanismus-ID, einem Parameter-Satz-Diskriminator, einer FIPS-vorgeschriebenen Signatur-Byte-Länge und einer beanspruchten NIST-Kategorie zugeordnet.
  • Signaturlängen. signatureLength() gibt 2420, 3309 und 4627 Bytes für MlDsa44, MlDsa65 und MlDsa87 zurück, gemäß FIPS 204 §4.p15 (Table 2). Die SLH-DSA-Fälle geben je nach Stufe und Variante 7856, 17088, 16224, 35664, 29792 und 49856 Bytes zurück, gemäß FIPS 205 §11 (Table 2). Der konsumierende Signierer wirft HsmOperationException, wenn eine zurückgegebene Signatur eine abweichende Länge hat, was die Längen-Ablehnungsdisziplin von FIPS 204 §x34 widerspiegelt.
  • Kategorien. nistCategory() gibt 2, 3 und 5 für die ML-DSA-Fälle zurück, gemäß FIPS 204 §4.p9. Die SLH-DSA-Fälle geben je nach Sicherheitsparameter-Stufe 1, 3 und 5 zurück.
  • Prozess-Gate. PqsPreviewFeature::PREVIEW_PQS_HSM ist standardmäßig aus. isEnabled() gibt nur dann true zurück, wenn die Umgebungsvariable NEXTPDF_FEATURE_PREVIEW_PQS_HSM exakt gleich dem String 1 ist. Der Lesevorgang ist bei jedem Aufruf live; nichts wird memoisiert.
  • Ergänzendes Gating. Das Prozess-Gate ist getrennt vom Konstruktor-Opt-in $enablePostQuantum pro Signierer auf Pkcs11Signer. Der Signaturaufruf scheitert geschlossen ohne das Opt-in pro Signierer. Das Prozess-Gate existiert als einzelne prüfbare Grenze für jedes künftige Round-Trip- oder Archivierungsverhalten.
  • Ehrlichkeitsinvariante. NextPDF\Enterprise\Security\Signature\Hsm\PqsCapabilityStatus::current() verdrahtet generallyAvailable, adesCompliant, verificationAvailable und conformanceClaimed fest auf false und recognitionOnly auf true. Keine Konfiguration, Konstruktoroption oder Umgebungsvariable schaltet einen Anspruch ein. Nur hsmRoundtripPreviewEnabled spiegelt das Gate wider.
  • Kein Verifizierungspfad. NextPDF hat keinen Post-Quantum-Verifizierungspfad. Eine erkannte Algorithmuskennung oder eine wohlgeformte Signaturlänge ist niemals ein Akzeptanzurteil.
  • Das Setzen der Gate-Variable auf 0, true, yes, on oder eine leere Zeichenkette lässt das Gate aus. Nur der exakte String 1 aktiviert es.
  • putenv()-Änderungen werden beim nächsten isEnabled()-Aufruf wirksam, da der Lesevorgang live ist. Ein mitten im Prozess umgeschaltetes Gate wird sofort beobachtet.
  • mechanismId() und parameterSetId() lösen Konstanten aus dem Namespace der Pkcs11-Erweiterung auf. Eine Laufzeitumgebung ohne die vorläufigen Post-Quantum-Erweiterungskonstanten scheitert mit einem PHP-Error (undefinierte Konstante) zur Aufrufzeit.
  • Die Mechanismus- und Parameter-Satz-IDs sind vorläufig. OASIS hat die PKCS#11-v3.1-Post-Quantum-Registrierung nicht abgeschlossen. Ein Token, dessen Firmware abweichende IDs zuweist, scheitert auf der PKCS#11-Ebene; Betreiber müssen die Firmware-IDs bestätigen, bevor sie die Vorschau aktivieren.
  • Der vom konsumierenden Signierer akzeptierte Signaturkontext ist auf 255 Bytes begrenzt, passend zum Signatureingabe-Vertrag von FIPS 204 (§x43.p2). Ein längerer Kontext wirft InvalidArgumentException vor jedem Token-Aufruf.
  • PqsCapabilityStatus::__construct() ist öffentlich, sodass eine handgefertigte Instanz beliebige Booleans tragen kann. Eine solche Instanz ist nur ein Wertobjekt. Sie verändert kein Signaturverhalten. current() ist der kanonische, fest verdrahtete Konstruktor.
  • Die Wahl zwischen randomisiert und deterministisch auf dem konsumierenden Signierer folgt der Semantik von FIPS 205 §x65.p7: Hedged-Signieren ist der Standard. Das Flag wird für ML-DSA ignoriert, das stets über seine eigene Nonce randomisiert.

ML-DSA und SLH-DSA sind FIPS 204- und FIPS 205-Algorithmen, aber diese Vorschau trägt keinen FIPS 140-3-Validierungsanspruch. Für diesen Pfad wurde kein FIPS-validierter Post-Quantum-HSM-Round-Trip etabliert. Das Enterprise-FIPS-Modus-Krypto-Richtlinienprofil, dokumentiert in der Security Deep Reference, gated die klassischen Signaturalgorithmen; es nimmt die PQS-Oberfläche nicht in einen validierten Satz auf. Das Aktivieren des FIPS-Modus macht Post-Quantum-Signaturen nicht FIPS-validiert. Setzen Sie die Vorschau nicht dort ein, wo eine FIPS-validierte Signatur erforderlich ist.

AnspruchStandardKlausel
ML-DSA-44/65/87 tragen beanspruchte NIST-Kategorien 2, 3, 5.FIPS 204§4.p9
ML-DSA-Signaturgrößen sind 2420, 3309, 4627 Bytes.FIPS 204§4.p15 (Table 2)
Die Signaturkontext-Bytefolge ist auf 255 Bytes begrenzt.FIPS 204§x43.p2
Eine Signatur oder ein Schlüssel mit falscher Länge muss abgelehnt werden.FIPS 204§x34
Zwölf SLH-DSA-Parameter-Sätze sind zugelassen.FIPS 205§11.p12 (Table 2)
SLH-DSA-Signaturgrößen folgen Table 2 (7856 Bytes für 128s).FIPS 205§11.p6
Hedged-Signieren ist der Standard; eine deterministische Variante existiert.FIPS 205§x65.p7
Die CAdES/PAdES-Suiten katalogisieren nur RSA und EC-DSA.ETSI TS 119 312 V1.5.1§7.x7.p10 (Table A.1)
Die PKCS#11-PQ-Mechanismus-IDs sind vorläufig.OASIS PKCS#11 v3.1product-source grounded

Alle Klauseln sind paraphrasiert. NextPDF gibt keinen normativen Text wieder. NextPDF besitzt keine Zertifizierung und gewährt keine. Die obigen Aussagen sind Aussagen zur strukturellen Übereinstimmung über Kennungen, Längen und Grenzen. Sie sind keine Konformitätstest-Ergebnisse, keine Drittpartei-Attestierungen und kein FIPS-, OASIS- oder ETSI-Konformitätsanspruch. PqsCapabilityStatus kodiert diese Haltung im Code: conformanceClaimed ist false, adesCompliant ist false und verificationAvailable ist false, in jeder Konfiguration. Eine von dieser Vorschau erzeugte Signatur ist nicht AdES-konform für die Langzeitarchivierung, und die meisten PDF-Viewer lehnen sie zur Validierungszeit ab.

  • Die OASIS-PKCS#11-Post-Quantum-Mechanismus-Registrierung ist nicht abgeschlossen; die hier verwendeten CKM_ML_DSA- / CKM_SLH_DSA-IDs und Parameter-Satz-Konstanten sind vorläufig und aus der Produktquelle abgeleitet, keine Spezifikationszitierung.

  • Der aktuelle Meilenstein ist Mock-getestete Bereitschaft. Es wurde noch kein echter Post-Quantum-Firmware-HSM-Round-Trip validiert.

  • Halten Sie beide Gates in der Produktion aus. Die Vorschau fügt keine Produktionsfähigkeit hinzu, die dem klassischen RSA/ECDSA-PKCS#11-Pfad fehlt.

  • Bestätigen Sie vor jeder Evaluierung mit echter Hardware die Mechanismus- und Parameter-Satz-IDs der Token-Firmware gegen die vorläufigen Werte. Eine Nichtübereinstimmung scheitert auf der PKCS#11-Ebene, nicht innerhalb von NextPDF.

  • Behandeln Sie PqsCapabilityStatus::current() als einzige Quelle der Wahrheit, wenn Sie den PQS-Status in Werkzeugen oder der UI darstellen. Geben Sie seine Booleans nicht von Hand wieder.

  • Die summary()-Ausgabe ist sicher für Logs und Status-Endpunkte; sie ist so formuliert, dass sie keinen Verfügbarkeits- oder Validierungsanspruch trägt.

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