FIPS 140-2/3 – polityka kryptograficzna i autotest
W skrócie
Dział zatytułowany „W skrócie”NextPDF Enterprise ogranicza wybory kryptograficzne dostępne dla operacji podpisywania lub szyfrowania do zbioru zatwierdzonego przez Federal Information Processing Standards (FIPS) i odrzuca każdy wybór spoza tego zbioru. Strażnik działający w czasie wykonywania sprawdza każdy skrót, identyfikator algorytmu podpisu, algorytm szyfrowania i siłę klucza przed uruchomieniem operacji. Zestaw autotestów po uruchomieniu jest wykonywany jednokrotnie podczas startu procesu. Jeśli którykolwiek test ze znaną odpowiedzią zakończy się niepowodzeniem, moduł przechodzi w stan błędu. Ta strona opisuje to zachowanie: co dopuszcza polityka, co odrzuca strażnik, co obejmuje autotest oraz jakie jest jednoznaczne stanowisko dotyczące certyfikacji.
NextPDF Enterprise wspiera zgodność z przepisami. Nie jest certyfikowanym modułem kryptograficznym. Zobacz Bezpieczeństwo i zgodność, aby poznać jednoznaczne stanowisko dotyczące braku certyfikacji.
Front matter podaje wymagania wstępne, a sekcja Wymagania wstępne je powtarza.
Edycja i licencjonowanie
Dział zatytułowany „Edycja i licencjonowanie”Profil polityki kryptograficznej w trybie FIPS, strażnik działający w czasie wykonywania oraz strażnik autotestu po uruchomieniu są dostarczane w pakiecie nextpdf/enterprise i wymagają flagi funkcji licencyjnej enterprise. NextPDF Core i NextPDF Pro nie udostępniają profilu trybu FIPS. Strażnik i autotest działają w obrębie procesu; kontrole polityki i autotesty nie wysyłają zawartości dokumentu poza hosta. Porównaj edycje.
Co robi ta funkcja
Dział zatytułowany „Co robi ta funkcja”Funkcja składa się z trzech części: polityki kryptograficznej, strażnika działającego w czasie wykonywania oraz autotestu po uruchomieniu.
Polityka kryptograficzna ogranicza wybory kryptograficzne do zatwierdzonego zbioru i oferuje dwa ustawienia wstępne:
- Strict (zgodne z generacją FIPS 140-3) — skróty SHA-256, SHA-384 i SHA-512; identyfikatory obiektów (OID) podpisów RSA i ECDSA z tymi skrótami; szyfrowanie AES-256-CBC oraz minimalne rozmiary kluczy RSA 2048 i krzywej eliptycznej 256.
- Standard (zgodne z generacją FIPS 140-2) — odpowiada ustawieniu strict, a dodatkowo dopuszcza AES-128-CBC dla zgodności ze starszymi rozwiązaniami.
W przypadku generowania podpisu NIST SP 800-131A Rev.2 §3 akceptuje klucz RSA o długości co najmniej 2048 bitów oraz rząd ECDSA wynoszący co najmniej 224 bitów; dolne progi 2048/256 w ustawieniu strict spełniają te minima lub je przekraczają. Polityka domyślnie odrzuca nieznany typ klucza — nie akceptuje po cichu nierozpoznanego typu.
Strażnik działający w czasie wykonywania opakowuje politykę i udostępnia metody asercji dla skrótu, identyfikatora OID podpisu, algorytmu szyfrowania oraz siły klucza. Gdy wybór jest niedozwolony, strażnik zgłasza typowane naruszenie, które wskazuje politykę oraz problematyczny element, a następnie zatrzymuje operację. Ścieżka przechodzi w stan bezpiecznej awarii: polityka nigdy nie łagodzi własnych reguł i nigdy nie zastępuje algorytmu słabszym. W przypadku podpisu RSASSA-PSS bramka generowania podpisu jawnie wiąże skrót wiadomości. Wszystkie warianty PSS współdzielą jeden OID podpisu; skrót znajduje się w parametrach PSS, a nie w OID. Sama lista dozwolonych OID nie może potwierdzić rzeczywistego skrótu, dlatego bramka sprawdza, czy skrót jest zatwierdzony przez FIPS (SHA-256/384/512). W trybie bezpiecznej awarii odmawia każdego tokenu PSS, którego skrót jest nieznany lub niezatwierdzony, na przykład SHA-1 PSS, przed jakimkolwiek wywołaniem podpisującego (FIPS 186-5 §5.4(b)).
Autotest po uruchomieniu wykonuje zestaw testów ze znaną odpowiedzią (KAT) jednokrotnie podczas startu procesu. Zestaw obejmuje zatwierdzone funkcje skrótu, uwierzytelniania wiadomości, szyfrowania, szyfrowania uwierzytelnionego, podpisu oraz generowania bitów losowych. Zgodnie z ISO/IEC 19790:2025 §7.10.4.2 test ze znaną odpowiedzią kończy się niepowodzeniem, gdy obliczony wynik nie jest równy znanej odpowiedzi. Przy każdym niepowodzeniu moduł przechodzi w stan błędu i odmawia usług kryptograficznych (ISO/IEC 19790:2025 §7.2.4.3). Stan błędu jest trwały dla procesu: gdy jakikolwiek strażnik rozruchu w procesie zaobserwuje błąd, cały proces pozostaje w stanie bezpiecznej awarii przez cały okres działania. Utworzenie nowego strażnika rozruchu ani polityki nie może go wyczyścić. Późniejsze pomyślne ponowne wykonanie autotestu nie czyści zatrzaśniętego błędu — robi to wyłącznie ponowne uruchomienie procesu (rzeczywisty cykl zasilania), zgodnie z ISO/IEC 19790:2025 §7.10.2. Wynik jest buforowany przez cały okres działania procesu; możesz uruchomić ponowne wykonanie na żądanie dla punktu końcowego administratora lub polecenia, ale służy ono spełnieniu obowiązku okresowego autotestu, a nie odzyskiwaniu po błędzie.
Polityka wymaga unikatowego wektora inicjalizacji (IV) na klucz w przypadku szyfrowania uwierzytelnionego, zgodnie z NIST SP 800-38D §5.2.1.
Wymagania wstępne
Dział zatytułowany „Wymagania wstępne”- Zainstaluj NextPDF Core oraz pakiet Enterprise i utrzymuj aktywną licencję Enterprise.
- Aby zadeklarować działanie zgodne z FIPS, skonfiguruj NextPDF z dostawcą kryptografii walidowanym pod kątem FIPS — na przykład walidowanym pod kątem FIPS dostawcą OpenSSL — lub walidowanym pod kątem FIPS sprzętowym modułem bezpieczeństwa (HSM). NextPDF Enterprise wykonuje montaż strukturalny, obliczanie skrótu oraz egzekwowanie polityki; bazowy prymityw działa w walidowanej granicy, którą dostarczasz.
- Wybierz ustawienie wstępne: strict dla egzekwowania zgodnego z FIPS 140-3 lub standard, gdy wymagana jest interoperacyjność z AES-128-CBC.
Konfiguracja
Dział zatytułowany „Konfiguracja”- Ustawienie wstępne — wybierz strict lub standard. Strict dopuszcza wyłącznie AES-256-CBC; standard dopuszcza także AES-128-CBC.
- Strażnik — utwórz strażnika z wybraną polityką. Używaj strażnika jako granicy, na której sprawdzany jest każdy wybór kryptograficzny.
- Podłączenie autotestu — podłącz strażnika rozruchu podczas inicjalizacji aplikacji, aby każdy proces roboczy wykonywał własny cykl autotestu. Każda instancja procesu wykonuje własny autotest po uruchomieniu.
Krok po kroku
Dział zatytułowany „Krok po kroku”- Podczas inicjalizacji aplikacji wykonaj autotest po uruchomieniu za pomocą strażnika rozruchu i potwierdź, że moduł jest sprawny. Zatrzymaj proces, jeśli tak nie jest.
- Utwórz strażnika z polityką strict lub standard.
- Przed każdą operacją kryptograficzną sprawdź skrót, identyfikator OID podpisu, algorytm szyfrowania oraz siłę klucza za pośrednictwem strażnika.
- Przechwyć typowane naruszenie, zapisz w dzienniku ustrukturyzowany komunikat i odmów wykonania operacji. Nie przechodź awaryjnie na słabszy wybór.
<?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; } }}Weryfikacja
Dział zatytułowany „Weryfikacja”- Uruchom autotest po uruchomieniu i potwierdź, że zgłasza stan sprawności. Potwierdź, że obejmuje każdą zatwierdzoną klasę algorytmów — skrót, uwierzytelnianie wiadomości, szyfrowanie, szyfrowanie uwierzytelnione, podpis oraz generowanie bitów losowych.
- Sprawdź zatwierdzony wybór, na przykład SHA-256, RSA 2048, i potwierdź, że przechodzi pomyślnie. Sprawdź niedozwolony wybór, na przykład SHA-1, RSA 1024, i potwierdź, że zgłasza typowane naruszenie.
- Celowo wstrzyknij uszkodzony skrót lub źródło losowości do autotestu i potwierdź, że moduł przechodzi w stan błędu i odmawia usług.
- Potwierdź, że nieznany typ klucza jest domyślnie odrzucany, a nie akceptowany.
Bezpieczeństwo i zgodność
Dział zatytułowany „Bezpieczeństwo i zgodność”- Bezpieczna awaria. Gdy wybór kryptograficzny jest niedozwolony, strażnik zgłasza typowane naruszenie i zatrzymuje operację. Polityka nigdy nie łagodzi własnych reguł i nigdy nie zastępuje algorytmu słabszym.
- Autotest odmawia przy niezgodności. Niepowodzenie testu ze znaną odpowiedzią wprowadza moduł w stan błędu trwały dla procesu. Cały proces pozostaje w stanie bezpiecznej awarii; nowy strażnik rozruchu ani polityka nie mogą go przywrócić, a pomyślne ponowne wykonanie nie zwalnia zatrzasku. Czyści go wyłącznie ponowne uruchomienie procesu (ISO/IEC 19790:2025 §7.10.4.2; §7.10.2).
- Siła klucza. Ustawienie strict egzekwuje minima RSA 2048 i krzywej eliptycznej 256, które spełniają lub przekraczają dopuszczalne dolne progi z NIST SP 800-131A Rev.2 §3.
- Unikatowość IV. Użycie szyfrowania uwierzytelnionego wymaga unikatowego IV na klucz (NIST SP 800-38D §5.2.1).
Ta strona jest oznaczona jako export_control_class: legal-review-required, ponieważ dotyczy polityki kryptograficznej. Każde źródło normatywne jest parafrazowane; żaden tekst normatywny nie jest odtwarzany. Przed ustawieniem flagi publish wymagana jest akceptacja działu prawnego.
NextPDF Enterprise nie jest modułem kryptograficznym walidowanym pod kątem FIPS i nie składa żadnego oświadczenia o certyfikacji FIPS. Działa w trybie zgodnym z FIPS tylko wtedy, gdy skonfigurujesz go z dostawcą kryptografii walidowanym pod kątem FIPS — na przykład walidowanym pod kątem FIPS dostawcą OpenSSL — lub walidowanym pod kątem FIPS sprzętowym modułem bezpieczeństwa (HSM). Polityka trybu FIPS wspiera zgodność z przepisami; nie jest certyfikacją ani opinią prawną. W zakresie swoich zobowiązań regulacyjnych skonsultuj się z własnymi doradcami ds. zgodności i prawnymi.
Obsługa niepowodzeń
Dział zatytułowany „Obsługa niepowodzeń”- Niepowodzenie autotestu podczas rozruchu. Strażnik rozruchu zgłasza wyjątek stanu błędu modułu. Zatrzymaj proces; nie kontynuuj pracy z niezweryfikowaną ścieżką kryptograficzną.
- Naruszenie polityki. Strażnik zgłasza typowane naruszenie, które wskazuje politykę oraz problematyczny element. Odmów wykonania operacji; nie obniżaj poziomu zabezpieczeń.
- Nieznany typ klucza. Polityka domyślnie go odrzuca. Odwzoruj typ klucza jawnie tylko wtedy, gdy rzeczywiście jest zatwierdzony.
- Ponowne wykonanie autotestu. Ponowne wykonanie jest dostępne na żądanie dla punktu końcowego administratora lub polecenia, co spełnia obowiązek okresowego autotestu na żądanie. Nie jest to mechanizm odzyskiwania: nieudane ponowne wykonanie również zatrzaskuje proces, a pomyślne ponowne wykonanie nie zwalnia istniejącego zatrzasku. Przywrócenie modułu ze stanu błędu wymaga ponownego uruchomienia procesu.
Kontekst komercyjny
Dział zatytułowany „Kontekst komercyjny”NextPDF Core dostarcza programowy komponent podpisujący i szyfrowanie bez profilu trybu FIPS. NextPDF Enterprise dodaje profil polityki kryptograficznej w trybie FIPS, strażnika działającego w czasie wykonywania oraz strażnika autotestu po uruchomieniu, dzięki czemu możesz ograniczyć wybory kryptograficzne do zatwierdzonego zbioru i przejść w stan bezpiecznej awarii przy niezgodności autotestu. Połącz to z podpisywaniem HSM, aby wykonywać prymityw wewnątrz urządzenia walidowanego pod kątem FIPS. Porównaj edycje.
Zobacz też
Dział zatytułowany „Zobacz też”- Bezpieczeństwo — NextPDF Enterprise — pełny zestaw mechanizmów kontroli bezpieczeństwa Enterprise.
- Podpisywanie HSM — NextPDF Enterprise — sprzętowe przechowywanie kluczy zgodne z Public-Key Cryptography Standards #11 (PKCS#11).
- Podpis — NextPDF Enterprise — wytwarzanie długoterminowych podpisów PDF Advanced Electronic Signatures (PAdES) B-LT i B-LTA.
- Bezpieczeństwo — NextPDF Core — podstawowy obszar szyfrowania i podpisu.
- tryb FIPS · KAT · szyfrowanie uwierzytelnione (AEAD) — terminy ze słownika.