Enterprise edición
Directiva criptográfica y autocomprobación FIPS 140-2/3
De un vistazo
Sección titulada «De un vistazo»NextPDF Enterprise restringe las opciones criptográficas que puede tomar una operación de firma o de cifrado a un conjunto aprobado por las Federal Information Processing Standards (FIPS), y rechaza cualquier opción ajena a ese conjunto. Una protección en tiempo de ejecución valida cada hash, identificador de algoritmo de firma, algoritmo de cifrado y fortaleza de clave antes de ejecutar la operación. Una batería de autocomprobación de encendido se ejecuta una vez al iniciar el proceso. Si falla alguna prueba de respuesta conocida, el módulo entra en un estado de error. Esta página describe el comportamiento: qué permite la directiva, qué rechaza la protección, qué cubre la autocomprobación y cuál es la postura explícita sobre la certificación.
NextPDF Enterprise asiste al cumplimiento. No es un módulo criptográfico certificado. Consulte Seguridad y cumplimiento para conocer la postura explícita de no certificación.
El front matter enumera los requisitos previos, y Requisitos previos los repite.
Disponibilidad y licencias
Sección titulada «Disponibilidad y licencias»Esta funcionalidad se distribuye en NextPDF Enterprise (nextpdf/enterprise) y se activa con un sobre de licencia de nivel Enterprise. Una implementación sin ese derecho no carga las clases de la funcionalidad. Comparar ediciones y obtener una licencia.
NextPDF Core y NextPDF Pro no proporcionan un perfil en modo FIPS. La protección y la autocomprobación se ejecutan dentro del proceso; las comprobaciones de la directiva y las autocomprobaciones no envían el contenido del documento fuera del host.
Qué hace esta funcionalidad
Sección titulada «Qué hace esta funcionalidad»La funcionalidad consta de tres partes: una directiva criptográfica, una protección en tiempo de ejecución y una autocomprobación de encendido.
La directiva criptográfica restringe las opciones criptográficas a un conjunto aprobado, con dos preajustes:
- Strict (alineado con la generación FIPS 140-3): hashes SHA-256, SHA-384 y SHA-512; identificadores de objeto (OID) de firma RSA y ECDSA con esos hashes; cifrado AES-256-CBC; y tamaños mínimos de clave de RSA 2048 y curva elíptica 256.
- Standard (alineado con la generación FIPS 140-2): coincide con strict y permite además AES-128-CBC para la interoperabilidad con sistemas más antiguos.
Para la generación de firmas, NIST SP 800-131A Rev.2 §3 acepta una clave RSA de al menos 2048 bits y un orden ECDSA de al menos 224 bits; los límites mínimos 2048/256 del preajuste strict alcanzan o superan esos mínimos. La directiva deniega de forma predeterminada un tipo de clave desconocido: no acepta silenciosamente un tipo no reconocido.
La protección en tiempo de ejecución envuelve la directiva y expone métodos de tipo assert para un hash, un OID de firma, un algoritmo de cifrado y una fortaleza de clave. Cuando una opción no está permitida, genera una infracción tipada que nombra la directiva y el elemento infractor, y luego detiene la operación. La ruta falla de forma cerrada: la directiva nunca se relaja a sí misma ni sustituye un algoritmo por otro más débil. En el caso de una firma RSASSA-PSS, el control de generación vincula explícitamente el resumen del mensaje. Todas las variantes de PSS comparten un mismo OID de firma; el hash reside en los parámetros de PSS, no en el OID. Una lista de OID permitidos por sí sola no puede demostrar el resumen efectivo, por lo que el control valida que el resumen esté aprobado por FIPS (SHA-256/384/512). Deniega de forma cerrada cualquier token PSS cuyo resumen sea desconocido o no esté aprobado, por ejemplo SHA-1 PSS, antes de enviar la operación a cualquier firmante (FIPS 186-5 §5.4(b)).
La autocomprobación de encendido ejecuta una batería de pruebas de respuesta conocida (KAT) una vez al iniciar el proceso. La batería cubre las funciones aprobadas de hash, autenticación de mensajes, cifrado, cifrado autenticado, firma y bits aleatorios. Según ISO/IEC 19790:2025 §7.10.4.2, una prueba de respuesta conocida falla cuando la salida calculada no coincide con la respuesta conocida. Ante cualquier fallo, el módulo entra en un estado de error y rechaza los servicios criptográficos (ISO/IEC 19790:2025 §7.2.4.3). El estado de error es persistente a nivel de proceso: una vez que cualquier protección de arranque del proceso observa un error, todo el proceso permanece en modo de fallo cerrado durante el resto de su vida útil. Crear una nueva protección de arranque o una nueva directiva no lo borra. Una reejecución correcta posterior de la autocomprobación no borra un error retenido: solo lo hace un reinicio del proceso (un verdadero ciclo de apagado y encendido), según ISO/IEC 19790:2025 §7.10.2. El resultado se almacena en caché durante la vida útil del proceso; se puede lanzar una reejecución a petición para un endpoint de administración o un comando, pero cumple la obligación de autocomprobación periódica, no la recuperación de errores.
La directiva requiere un vector de inicialización (IV) único por clave para el uso de cifrado autenticado, según NIST SP 800-38D §5.2.1.
Por qué funciona así
Sección titulada «Por qué funciona así»La validación FIPS se asocia a un límite específico de módulo criptográfico, no a una aplicación que lo invoca. Por eso NextPDF aplica la directiva y ejecuta la batería de autocomprobación, pero delega cada primitiva en un proveedor validado por FIPS que usted configura: valida opciones aprobadas en lugar de afirmar ser el módulo validado. El estado de error es deliberadamente persistente a nivel de proceso: una discrepancia en la autocomprobación significa que el módulo ya no es fiable, de modo que una nueva protección o una reejecución correcta posterior no deben borrarlo silenciosamente, y solo lo hace un verdadero reinicio del proceso. Así el fallo se mantiene honesto y auditable en lugar de recuperable de forma silenciosa en el sitio. El resultado es una funcionalidad que asiste al cumplimiento sin exagerar nunca aquello para lo que NextPDF está certificado.
Contexto de diseño: Cumplimiento que puede entregar a un auditor.
Requisitos previos
Sección titulada «Requisitos previos»- Instalar NextPDF Core y el paquete Enterprise, y mantener una licencia Enterprise activa.
- Para afirmar un funcionamiento compatible con FIPS, configurar NextPDF con un proveedor criptográfico validado por FIPS (por ejemplo, un proveedor OpenSSL validado por FIPS) o un módulo de seguridad de hardware (HSM) validado por FIPS. NextPDF Enterprise realiza el ensamblaje estructural, el cálculo del resumen y la aplicación de la directiva; la primitiva subyacente se ejecuta en el límite validado que usted proporciona.
- Elegir el preajuste: strict para una aplicación alineada con FIPS 140-3, o standard cuando se requiera la interoperabilidad con AES-128-CBC.
Configuración
Sección titulada «Configuración»- Preajuste: elegir strict o standard. Strict permite únicamente AES-256-CBC; standard permite además AES-128-CBC.
- Protección: construir la protección con la directiva elegida. Usar la protección como el límite en el que se valida cada opción criptográfica.
- Conexión de la autocomprobación: conectar la protección de arranque en el bootstrap de la aplicación para que cada proceso de trabajo ejecute su propio ciclo de autocomprobación. Cada instancia de proceso ejecuta su propia autocomprobación de encendido.
Paso a paso
Sección titulada «Paso a paso»- En el bootstrap de la aplicación, ejecutar la autocomprobación de encendido a través de la protección de arranque y validar que el módulo está operativo. Detener el proceso si no lo está.
- Construir la protección con la directiva strict o standard.
- Antes de cada operación criptográfica, validar el hash, el OID de firma, el algoritmo de cifrado y la fortaleza de clave a través de la protección.
- Capturar la infracción tipada, registrar un mensaje estructural y rechazar la operación. No recurrir a una opción más débil.
<?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; } }}Verificación
Sección titulada «Verificación»- Ejecutar la autocomprobación de encendido y confirmar que informa de que está operativa. Confirmar que ejercita cada clase de algoritmo aprobada: hash, autenticación de mensajes, cifrado, cifrado autenticado, firma y bits aleatorios.
- Validar una opción aprobada, por ejemplo SHA-256, RSA 2048, y confirmar que se acepta. Validar una opción no permitida, por ejemplo SHA-1, RSA 1024, y confirmar que genera una infracción tipada.
- Inyectar un hash o una fuente de aleatoriedad deliberadamente defectuosos en la autocomprobación y confirmar que el módulo entra en el estado de error y rechaza los servicios.
- Confirmar que un tipo de clave desconocido se deniega de forma predeterminada en lugar de aceptarse.
Seguridad y cumplimiento
Sección titulada «Seguridad y cumplimiento»- Fallo cerrado. Cuando una opción criptográfica no está permitida, la protección genera una infracción tipada y detiene la operación. La directiva nunca se relaja a sí misma ni sustituye un algoritmo por otro más débil.
- La autocomprobación rechaza ante una discrepancia. El fallo de una prueba de respuesta conocida coloca el módulo en un estado de error persistente a nivel de proceso. Todo el proceso permanece en modo de fallo cerrado; una nueva protección de arranque o directiva no puede recuperarlo, y una reejecución correcta no libera el bloqueo. Solo un reinicio del proceso lo borra (ISO/IEC 19790:2025 §7.10.4.2; §7.10.2).
- Fortaleza de clave. El preajuste strict exige mínimos de RSA 2048 y curva elíptica 256, que alcanzan o superan los límites mínimos aceptables de NIST SP 800-131A Rev.2 §3.
- Unicidad del IV. El uso de cifrado autenticado requiere un IV único por clave (NIST SP 800-38D §5.2.1).
Esta página trata sobre directiva criptográfica. Toda fuente normativa se parafrasea; no se reproduce ningún texto normativo. > NextPDF Enterprise no es un módulo criptográfico validado por FIPS y no realiza ninguna afirmación de certificación FIPS. Funciona en modo compatible con FIPS únicamente cuando se configura con un proveedor criptográfico validado por FIPS (por ejemplo, un proveedor OpenSSL validado por FIPS) o un módulo de seguridad de hardware (HSM) validado por FIPS. La directiva en modo FIPS asiste al cumplimiento; no es una certificación ni una opinión legal. Consulte a sus propios asesores de cumplimiento y jurídicos sobre sus obligaciones regulatorias.
Gestión de fallos
Sección titulada «Gestión de fallos»- Fallo de la autocomprobación en el arranque. La protección de arranque genera una excepción de estado de error del módulo. Detener el proceso; no continuar con una ruta criptográfica no verificada.
- Infracción de la directiva. La protección genera una infracción tipada que nombra la directiva y el elemento infractor. Rechazar la operación; no degradarla.
- Tipo de clave desconocido. La directiva lo deniega de forma predeterminada. Asignar el tipo de clave de forma explícita solo si está realmente aprobado.
- Reejecución de la autocomprobación. Hay disponible una reejecución a petición para un endpoint de administración o un comando, que cumple la obligación de autocomprobación periódica bajo demanda. No es un mecanismo de recuperación: una reejecución fallida también bloquea el proceso, y una reejecución correcta no libera un bloqueo existente. Recuperar un módulo en estado de error requiere un reinicio del proceso.
Límite de publicación
Sección titulada «Límite de publicación»Esta página documenta únicamente el comportamiento observable externamente y la superficie de API pública admitida. Las rutas de espacio de nombres internas, las clases auxiliares, las tablas de mecanismos, los nombres de archivo de runbook y los prefijos de tickets quedan fuera de su alcance.
Véase también
Sección titulada «Véase también»- Seguridad — NextPDF Enterprise — los controles de seguridad combinados de Enterprise.
- Firma con HSM — NextPDF Enterprise — custodia de claves por hardware según Public-Key Cryptography Standards #11 (PKCS#11).
- Firma — NextPDF Enterprise — el productor a largo plazo de PDF Advanced Electronic Signatures (PAdES) B-LT y B-LTA.
- Seguridad — NextPDF Core — la superficie principal de cifrado y firma.
- Modo FIPS · KAT · cifrado autenticado (AEAD) — términos del glosario.