Enterprise Edition
FIPS 140-2/3 – Kryptorichtlinie und Selbsttest
Auf einen Blick
Abschnitt betitelt „Auf einen Blick“NextPDF Enterprise begrenzt die kryptografischen Auswahlentscheidungen, die eine Signier- oder Verschlüsselungsoperation treffen kann, auf einen nach den Federal Information Processing Standards (FIPS) zugelassenen Satz und verweigert jede Auswahl außerhalb dieses Satzes. Ein Laufzeit-Guard prüft jeden Hash, jede Signaturalgorithmus-Kennung, jeden Verschlüsselungsalgorithmus und jede Schlüsselstärke, bevor die Operation ausgeführt wird. Eine Power-on-Selbsttest-Batterie wird einmal beim Prozessstart ausgeführt. Falls ein Known-Answer-Test fehlschlägt, wechselt das Modul in einen Fehlerzustand. Diese Seite beschreibt das Verhalten: was die Richtlinie erlaubt, was der Guard verweigert, was der Selbsttest abdeckt und welche ausdrückliche Zertifizierungshaltung gilt.
NextPDF Enterprise unterstützt die Compliance. Es ist kein zertifiziertes kryptografisches Modul. Die ausdrückliche Nicht-Zertifizierungs-Haltung finden Sie unter Sicherheit und Compliance.
Das Front Matter listet die Voraussetzungen auf, und Voraussetzungen wiederholt sie.
Verfügbarkeit und Lizenzierung
Abschnitt betitelt „Verfügbarkeit und Lizenzierung“Diese Funktion ist in NextPDF Enterprise (nextpdf/enterprise) enthalten und wird mit einem Lizenz-Envelope der Enterprise-Stufe aktiviert. Ein Deployment ohne diese Berechtigung lädt die Klassen der Funktion nicht. Editionen vergleichen und Lizenz erwerben.
NextPDF Core und NextPDF Pro stellen kein FIPS-Modus-Profil bereit. Der Guard und der Selbsttest laufen im Prozess; Richtlinienprüfungen und Selbsttests senden keinen Dokumentinhalt vom Host weg.
Was diese Funktion leistet
Abschnitt betitelt „Was diese Funktion leistet“Die Funktion besteht aus drei Teilen: einer Kryptorichtlinie, einem Laufzeit-Guard und einem Power-on-Selbsttest.
Die Kryptorichtlinie begrenzt kryptografische Auswahlentscheidungen auf einen zugelassenen Satz und bietet zwei Voreinstellungen:
- Strict (an der FIPS 140-3-Generation ausgerichtet) — SHA-256-, SHA-384- und SHA-512-Hashes; RSA- und ECDSA-Signaturobjektkennungen (OIDs) mit diesen Hashes; AES-256-CBC-Verschlüsselung; sowie Mindestschlüsselgrößen von RSA 2048 und Elliptic-Curve 256.
- Standard (an der FIPS 140-2-Generation ausgerichtet) — identisch mit strict, erlaubt jedoch zusätzlich AES-128-CBC für ältere Interoperabilität.
Für die Signaturerzeugung akzeptiert NIST SP 800-131A Rev.2 §3 einen RSA-Schlüssel von mindestens 2048 Bit und eine ECDSA-Ordnung von mindestens 224 Bit; die 2048/256-Untergrenzen der Voreinstellung strict erreichen oder übertreffen diese Mindestwerte. Die Richtlinie lehnt einen unbekannten Schlüsseltyp standardmäßig ab — sie akzeptiert einen nicht erkannten Typ nicht stillschweigend.
Der Laufzeit-Guard umschließt die Richtlinie und stellt Assert-Methoden für einen Hash, eine Signatur-OID, einen Verschlüsselungsalgorithmus und eine Schlüsselstärke bereit. Ist eine Auswahl unzulässig, löst er eine typisierte Verletzung aus, die die Richtlinie und das beanstandete Element benennt, und stoppt anschließend die Operation. Der Pfad ist fail-closed: Die Richtlinie lockert sich niemals selbst und ersetzt niemals einen Algorithmus durch einen schwächeren. Bei einer RSASSA-PSS-Signatur bindet das Erzeugungs-Gate den Message-Digest ausdrücklich. Jede PSS-Variante verwendet dieselbe Signatur-OID; der Hash liegt in den PSS-Parametern, nicht in der OID. Eine OID-Allowlist allein kann den wirksamen Digest nicht nachweisen, daher prüft das Gate, dass der Digest FIPS-zugelassen ist (SHA-256/384/512). Es lehnt jedes PSS-Token, dessen Digest unbekannt oder nicht zugelassen ist, zum Beispiel SHA-1 PSS, vor jedem Signierer-Dispatch fail-closed ab (FIPS 186-5 §5.4(b)).
Der Power-on-Selbsttest führt einmal beim Prozessstart eine Known-Answer-Test-Batterie (KAT) aus. Die Batterie deckt die zugelassenen Hash-, Nachrichtenauthentifizierungs-, Verschlüsselungs-, Authenticated-Encryption-, Signatur- und Zufallsbitfunktionen ab. Gemäß ISO/IEC 19790:2025 §7.10.4.2 schlägt ein Known-Answer-Test fehl, wenn die berechnete Ausgabe nicht der bekannten Antwort entspricht. Bei einem Fehlschlag wechselt das Modul in einen Fehlerzustand und verweigert kryptografische Dienste (ISO/IEC 19790:2025 §7.2.4.3). Der Fehlerzustand ist prozessgebunden: Sobald irgendein Boot-Guard im Prozess einen Fehler feststellt, bleibt der gesamte Prozess während seiner Lebensdauer fail-closed. Das Erstellen eines frischen Boot-Guards oder einer frischen Richtlinie kann ihn nicht bereinigen. Ein späterer bestandener Wiederholungslauf des Selbsttests setzt einen verriegelten Fehler nicht zurück — dies leistet nur ein Prozessneustart (ein echter Power-Cycle), gemäß ISO/IEC 19790:2025 §7.10.2. Das Ergebnis wird für die Prozesslebensdauer zwischengespeichert; Sie können einen On-Demand-Wiederholungslauf für einen Admin-Endpunkt oder einen Befehl ausführen, doch er dient der Pflicht zum periodischen Selbsttest, nicht der Fehlerbehebung.
Die Richtlinie erfordert für die Verwendung von Authenticated Encryption einen eindeutigen Initialisierungsvektor (IV) pro Schlüssel, gemäß NIST SP 800-38D §5.2.1.
Warum es so funktioniert
Abschnitt betitelt „Warum es so funktioniert“Die FIPS-Validierung bezieht sich auf eine bestimmte Grenze eines kryptografischen Moduls, nicht auf eine Anwendung, die ein solches Modul aufruft. NextPDF setzt daher die Richtlinie durch und führt die Selbsttest-Batterie aus, delegiert aber jede Primitive an einen FIPS-validierten Provider, den Sie konfigurieren — es prüft zugelassene Auswahlentscheidungen, statt zu behaupten, selbst das validierte Modul zu sein. Der Fehlerzustand ist bewusst prozessgebunden: Eine Selbsttest-Abweichung bedeutet, dass dem Modul nicht mehr vertraut werden kann, daher dürfen ein frischer Guard oder ein späterer bestandener Wiederholungslauf ihn nicht stillschweigend bereinigen, und nur ein echter Prozessneustart tut dies. Das hält den Fehler ehrlich und prüfbar, statt ihn im laufenden Betrieb still wiederherstellbar zu machen. Das Ergebnis ist eine Funktion, die die Compliance unterstützt, ohne jemals zu überzeichnen, wofür NextPDF zertifiziert ist.
Design-Hintergrund: Compliance, die Sie einem Prüfer vorlegen können.
Voraussetzungen
Abschnitt betitelt „Voraussetzungen“- Installieren Sie NextPDF Core und das Enterprise-Paket und halten Sie eine aktive Enterprise-Lizenz aufrecht.
- Um einen FIPS-kompatiblen Betrieb zu beanspruchen, konfigurieren Sie NextPDF mit einem FIPS-validierten kryptografischen Provider — zum Beispiel einem FIPS-validierten OpenSSL-Provider — oder einem FIPS-validierten Hardware-Sicherheitsmodul (HSM). NextPDF Enterprise führt die strukturelle Zusammenstellung, die Digest-Berechnung und die Richtliniendurchsetzung aus; die zugrunde liegende Primitive läuft innerhalb der validierten Grenze, die Sie bereitstellen.
- Wählen Sie die Voreinstellung: strict für eine an FIPS 140-3 ausgerichtete Durchsetzung oder standard, wo AES-128-CBC-Interoperabilität erforderlich ist.
Konfiguration
Abschnitt betitelt „Konfiguration“- Voreinstellung — wählen Sie strict oder standard. Strict erlaubt nur AES-256-CBC; standard erlaubt zusätzlich AES-128-CBC.
- Guard — erstellen Sie den Guard mit der gewählten Richtlinie. Verwenden Sie den Guard als die Grenze, an der Sie jede kryptografische Auswahl prüfen.
- Selbsttest-Verdrahtung — binden Sie den Boot-Guard beim Anwendungs-Bootstrap ein, sodass jeder Worker-Prozess seinen eigenen Selbsttest-Zyklus durchläuft. Jede Prozessinstanz führt ihren eigenen Power-on-Selbsttest aus.
Schritt für Schritt
Abschnitt betitelt „Schritt für Schritt“- Führen Sie beim Anwendungs-Bootstrap den Power-on-Selbsttest über den Boot-Guard aus und stellen Sie sicher, dass das Modul betriebsbereit ist. Stoppen Sie den Prozess, falls dies nicht der Fall ist.
- Konstruieren Sie den Guard mit der Richtlinie strict oder standard.
- Prüfen Sie vor jeder kryptografischen Operation den Hash, die Signatur-OID, den Verschlüsselungsalgorithmus und die Schlüsselstärke mit dem Guard.
- Fangen Sie die typisierte Verletzung ab, protokollieren Sie eine strukturierte Meldung und verweigern Sie die Operation. Greifen Sie nicht auf eine schwächere Auswahl zurück.
<?php
declare(strict_types=1);
require_once __DIR__ . '/../../vendor/autoload.php';
use NextPDF\Enterprise\Security\Fips\FipsBootGuard;use NextPDF\Enterprise\Security\Fips\FipsCryptoPolicy;use NextPDF\Enterprise\Security\Fips\FipsModeGuard;use NextPDF\Enterprise\Security\Fips\FipsSelfTest;use NextPDF\Enterprise\Security\Fips\FipsModuleErrorStateException;use Psr\Log\LoggerInterface;
/** * Run the power-on self-test, then build a guard on the strict policy. * * The self-test runs once per process. A known-answer failure raises a * module-error-state exception; the caller must stop rather than proceed * with an unverified crypto path. * * @param LoggerInterface $logger Structural diagnostics only — never secrets. * * @throws FipsModuleErrorStateException When a power-on known-answer test fails. * * @return FipsModeGuard A guard ready to assert each cryptographic choice. */function bootFipsGuard(LoggerInterface $logger): FipsModeGuard{ $bootGuard = new FipsBootGuard(new FipsSelfTest());
try { $bootGuard->assertOperational(); } catch (FipsModuleErrorStateException $e) { $logger->critical('FIPS power-on self-test failed; refusing crypto services.', [ 'reason' => $e->getMessage(), ]);
throw $e; }
return new FipsModeGuard(FipsCryptoPolicy::strict());}<?php
declare(strict_types=1);
require_once __DIR__ . '/../../vendor/autoload.php';
use NextPDF\Enterprise\Security\Fips\FipsModeGuard;use NextPDF\Enterprise\Security\Fips\FipsViolationException;use Psr\Log\LoggerInterface;
final readonly class FipsCheckedSigning{ public function __construct( private FipsModeGuard $guard, private LoggerInterface $logger, ) {}
/** * Assert the signing choices against the active policy before signing. * * A disallowed hash, signature OID, or key strength raises a typed * violation; the operation is refused rather than downgraded. * * @param string $hash The hash algorithm name (e.g. 'sha256'). * @param string $signatureOid The signature algorithm OID. * @param string $keyType The key type (e.g. 'rsa', 'ec'). * @param positive-int $keyBits The key length in bits. * * @throws FipsViolationException When any choice is not approved. */ public function assertApproved( string $hash, string $signatureOid, string $keyType, int $keyBits, ): void { try { $this->guard->assertHashAllowed($hash); $this->guard->assertSignatureAlgorithmAllowed($signatureOid); $this->guard->assertKeyStrengthAllowed($keyType, $keyBits); } catch (FipsViolationException $e) { $this->logger->error('FIPS policy violation', ['reason' => $e->getMessage()]);
throw $e; } }}Verifizierung
Abschnitt betitelt „Verifizierung“- Führen Sie den Power-on-Selbsttest aus und bestätigen Sie, dass er Betriebsbereitschaft meldet. Bestätigen Sie, dass er jede zugelassene Algorithmusklasse ausführt — Hash, Nachrichtenauthentifizierung, Verschlüsselung, Authenticated Encryption, Signatur und Zufallsbit.
- Prüfen Sie eine zugelassene Auswahl, zum Beispiel SHA-256, RSA 2048, und bestätigen Sie, dass sie erfolgreich ist. Prüfen Sie eine unzulässige Auswahl, zum Beispiel SHA-1, RSA 1024, und bestätigen Sie, dass sie eine typisierte Verletzung auslöst.
- Injizieren Sie einen absichtlich defekten Hash oder eine absichtlich defekte Zufallsquelle in den Selbsttest und bestätigen Sie, dass das Modul in den Fehlerzustand eintritt und Dienste verweigert.
- Bestätigen Sie, dass ein unbekannter Schlüsseltyp standardmäßig abgelehnt statt akzeptiert wird.
Sicherheit und Compliance
Abschnitt betitelt „Sicherheit und Compliance“- Fail-closed. Ist eine kryptografische Auswahl unzulässig, löst der Guard eine typisierte Verletzung aus und stoppt die Operation. Die Richtlinie lockert sich niemals selbst und ersetzt niemals einen Algorithmus durch einen schwächeren.
- Selbsttest verweigert bei Abweichung. Ein Known-Answer-Test-Fehlschlag versetzt das Modul in einen prozessgebundenen Fehlerzustand. Der gesamte Prozess bleibt fail-closed; ein frischer Boot-Guard oder eine frische Richtlinie kann ihn nicht wiederherstellen, und ein bestandener Wiederholungslauf hebt die Verriegelung nicht auf. Nur ein Prozessneustart setzt ihn zurück (ISO/IEC 19790:2025 §7.10.4.2; §7.10.2).
- Schlüsselstärke. Die Voreinstellung strict erzwingt Mindestwerte von RSA 2048 und Elliptic-Curve 256, die auf oder über den akzeptablen Untergrenzen von NIST SP 800-131A Rev.2 §3 liegen.
- IV-Eindeutigkeit. Die Verwendung von Authenticated Encryption erfordert einen eindeutigen IV pro Schlüssel (NIST SP 800-38D §5.2.1).
Diese Seite betrifft kryptografische Richtlinien. Jede normative Quelle ist paraphrasiert; kein normativer Text wird wiedergegeben. > NextPDF Enterprise ist kein FIPS-validiertes kryptografisches Modul und erhebt keinen FIPS-Zertifizierungsanspruch. Es arbeitet nur dann in einem FIPS-kompatiblen Modus, wenn Sie es mit einem FIPS-validierten kryptografischen Provider — zum Beispiel einem FIPS-validierten OpenSSL-Provider — oder einem FIPS-validierten Hardware-Sicherheitsmodul (HSM) konfigurieren. Die FIPS-Modus-Richtlinie unterstützt die Compliance; sie ist keine Zertifizierung und kein Rechtsgutachten. Konsultieren Sie zu Ihren regulatorischen Pflichten Ihre eigenen Compliance- und Rechtsberater.
Fehlerbehandlung
Abschnitt betitelt „Fehlerbehandlung“- Selbsttest-Fehlschlag beim Boot. Der Boot-Guard löst eine Module-Error-State-Ausnahme aus. Stoppen Sie den Prozess; fahren Sie nicht mit einem nicht verifizierten Kryptopfad fort.
- Richtlinienverletzung. Der Guard löst eine typisierte Verletzung aus, die die Richtlinie und das beanstandete Element benennt. Verweigern Sie die Operation; nehmen Sie kein Downgrade vor.
- Unbekannter Schlüsseltyp. Die Richtlinie lehnt ihn standardmäßig ab. Bilden Sie den Schlüsseltyp nur dann ausdrücklich ab, wenn er tatsächlich zugelassen ist.
- Selbsttest-Wiederholungslauf. Ein Wiederholungslauf ist bei Bedarf für einen Admin-Endpunkt oder einen Befehl verfügbar und erfüllt die Pflicht zum periodischen On-Demand-Selbsttest. Er ist kein Wiederherstellungsmechanismus: Ein fehlgeschlagener Wiederholungslauf verriegelt den Prozess ebenfalls, und ein bestandener Wiederholungslauf hebt eine bestehende Verriegelung nicht auf. Die Wiederherstellung eines Moduls im Fehlerzustand erfordert einen Prozessneustart.
Publikationsgrenze
Abschnitt betitelt „Publikationsgrenze“Diese Seite dokumentiert ausschließlich das extern beobachtbare Verhalten und die unterstützte öffentliche API-Oberfläche. Interne Namespace-Pfade, Hilfsklassen, Mechanismustabellen, Runbook-Dateinamen und Ticket-Präfixe sind nicht Gegenstand dieser Seite.
Siehe auch
Abschnitt betitelt „Siehe auch“- Sicherheit — NextPDF Enterprise — die kombinierten Enterprise-Sicherheitskontrollen.
- HSM-Signierung — NextPDF Enterprise — Public-Key Cryptography Standards #11 (PKCS#11) Hardware-Schlüsselverwahrung.
- Signatur — NextPDF Enterprise — der Langzeiterzeuger für PDF Advanced Electronic Signatures (PAdES) B-LT und B-LTA.
- Sicherheit — NextPDF Core — die Kern-Verschlüsselungs- und -Signaturoberfläche.
- FIPS-Modus · KAT · Authenticated Encryption (AEAD) — Glossarbegriffe.