Pro edición
Seguridad
De un vistazo
Sección titulada «De un vistazo»NextPDF Pro añade una superficie de seguridad sobre NextPDF Core: enmascaramiento de contenido en tiempo de generación, detección de PII en la capa de texto, estrategias de firma remota y con KMS en la nube, y firma secuencial multifirmante. NextPDF Core produce los niveles PAdES B-B y B-T; Pro produce los mismos niveles y añade estos flujos de firma sobre ellos (para B-T, una firma B-B más un signature-time-stamp de RFC 3161 sobre el valor de la firma). Esta página se mantiene a nivel de comportamiento. Indica qué hace cada parte, qué no hace y dónde empieza el límite de Enterprise.
Disponibilidad y licencia
Sección titulada «Disponibilidad y licencia»Esta capacidad se distribuye en NextPDF Pro (nextpdf/pro) y se activa con un sobre de licencia de nivel Pro. Una implementación sin ese derecho de uso no carga las clases de la capacidad. Compare ediciones y obtenga una licencia.
Core incluye el firmante CMS por software, el cliente de marca de tiempo RFC 3161, la validación de ruta RFC 5280 y la comprobación de revocación por OCSP y CRL. Pro añade el enmascaramiento, la detección de PII y los flujos de firma remota/con KMS en la nube/secuencial; esos flujos producen los mismos niveles B-B y B-T de Core a través de la pila RFC 3161 de Core (para B-T, un signature-time-stamp sobre el valor de la firma). Una implementación sin un derecho de uso de Pro activo no carga estas clases; el contrato de firma de Core sigue funcionando sin cambios.
Instalación
Sección titulada «Instalación»composer require nextpdf/pro:^3Descripción conceptual
Sección titulada «Descripción conceptual»El motor de enmascaramiento aplica una lista ordenada de reglas al texto antes de escribir la página. Cada regla coincide con una expresión regular. Una regla reemplaza una coincidencia de una de tres formas: un relleno de caja negra que elimina el texto del flujo de contenido, una serie de asteriscos con el mismo número de caracteres, o una etiqueta fija como [REDACTED]. El motor elimina los objetos de texto subyacentes en el modo de caja negra según lo probado; no afirma que se encuentre toda forma de contenido sensible. La detección depende de las reglas que se configuren.
La superficie de PII es una herramienta de detección, no una garantía de enmascaramiento. Extrae la capa de texto y luego aplica patrones integrados para direcciones de correo electrónico, números de teléfono, números de la Seguridad Social de Estados Unidos y números de tarjeta de crédito. Devuelve una vista enmascarada del texto y un recuento de coincidencias. No sobrescribe los glifos renderizados en la imagen de la página. Una página escaneada sin capa de texto no produce coincidencias. Trate el resultado como detección por coincidencia de patrones de los tipos configurados, no como una eliminación completa de datos personales.
La superficie de firma añade flujos de trabajo remotos y asíncronos sobre el firmante de Core. Una sesión calcula el resumen del documento, construye los atributos firmados CMS y entrega los bytes de los atributos firmados a una estrategia de firma. Una estrategia puede ser un KMS en la nube, un firmante externo diferido o una vía de incorporación que envuelve una firma CAdES o XAdES existente. La sesión ensambla luego el CMS SignedData y lo almacena codificado en DER en la entrada Contents del diccionario de firma — ISO 32000-2 §12.8.1. El SignerInfo transporta los atributos firmados content-type y message-digest; el proceso de cálculo del resumen del mensaje es RFC 5652 §5.4. Un verificador no debe confiar en los resúmenes calculados por el originador; vuelve a calcular de forma independiente el resumen del contenido y lo compara con el atributo message-digest, y la comparación debe coincidir para que la firma sea válida — proceso de verificación de firma de RFC 5652 §5.6.
NextPDF Core produce los niveles PAdES B-B y B-T; NextPDF Pro produce los mismos niveles y añade sus flujos de firma sobre ellos. Para B-B la sesión ensambla un CMS SignedData con el conjunto de atributos firmados B-B y no aplica ninguna marca de tiempo. Para B-T la sesión añade exactamente un signature-time-stamp de RFC 3161 como atributo no firmado CMS sobre el valor de la firma: un signature-time-stamp es un atributo no firmado que transporta un token de marca de tiempo calculado sobre el valor de la firma digital de un firmante — ETSI EN 319 122-1 §5.3, y su MessageImprint es un hash del valor del campo de firma del SignerInfo, identificado por el OID id-aa-timeStampToken — RFC 3161 Appendix A. El genTime de la marca de tiempo es el instante UTC en que se creó el token — RFC 3161 §2.4.2. Como la marca de tiempo es un atributo no firmado, el resumen firmado B-B, el valor de la firma del SignerInfo y el /ByteRange del PDF no cambian; solo crece el CMS. El token RFC 3161 se obtiene de un proveedor de marca de tiempo configurado (el cliente RFC 3161 de Core predeterminado, o un proveedor suministrado por el llamante); B-T usa una huella de mensaje SHA-256 en la vía del proveedor predeterminado. NextPDF Pro implementa el soporte de firma PAdES B-T según ETSI EN 319 122-1 §5.3, RFC 3161, RFC 5652 y RFC 5816; está verificado con fixtures. NextPDF Pro no afirma una certificación independiente ETSI EN 319 142-1 ni afirma la validez legal del documento. B-LT y B-LTA añaden un almacén de seguridad de documento y marcas de tiempo de documento para la validación de archivado a largo plazo — ETSI EN 319 142-2 §5.5; esos niveles son una capacidad de Enterprise (nextpdf/enterprise) y no los produce Pro. Consulte Límite de Enterprise más abajo.
Por qué funciona así
Sección titulada «Por qué funciona así»La superficie de firma entrega los bytes de los atributos firmados a una SigningStrategy en lugar de retener una clave privada. Esa única decisión es estructural. Un KMS en la nube, un firmante externo diferido o una vía de incorporación CAdES/XAdES satisfacen todos el mismo contrato, de modo que el código llamante permanece idéntico y el material de clave nunca entra en NextPDF. Dividir la sesión en RemoteSigningSession::prepare() y RemoteSigningSession::complete() permite que la firma se devuelva de forma asíncrona, porque el resumen queda fijado antes de llegar siquiera a la clave. La marca de tiempo se adjunta como atributo no firmado CMS, así que B-T sigue siendo aditivo: el resumen firmado B-B, el valor de la firma del SignerInfo y el /ByteRange quedan intactos. Cada juntura es de fallo cerrado, ya que una vía de firma que se degrada silenciosamente es peor que una que se detiene. Contexto de diseño: Firma a escala, sin concesiones.
Superficie de la API
Sección titulada «Superficie de la API»| Tipo | Clase | Función | Estabilidad | Desde |
|---|---|---|---|---|
RemoteSigningSession | clase | Sesión de firma remota o asíncrona en dos fases | estable | 1.9.0 |
RemoteSigningConfig | clase | Configuración de sesión inmutable, incluido el nivel PAdES | estable | 1.9.0 |
SequentialSigner | clase | Firma secuencial multifirmante con soporte DocMDP | estable | 1.9.0 |
SigningStrategy | interfaz | El contrato del mecanismo de firma que invoca una sesión | estable | 1.9.0 |
PadesWrapper | clase | Envuelve una firma CAdES o XAdES existente para incrustación PAdES | estable | 1.9.0 |
KmsSignerInterface | interfaz (SPI) | Contrato de controlador HSM y KMS de terceros | estable | 2.1.0 |
GenerationTimeMasker | clase | Enmascaramiento dirigido por reglas aplicado antes de escribir la página | estable | 1.9.0 |
MaskingConfig / MaskingRule / MaskingMode | tipos | Configuración de enmascaramiento, regla y modo de reemplazo | estable | 1.9.0 |
RemoteSigningConfig transporta un campo de nivel PAdES cuyo enum es el SignatureLevel de Core. La vía de firma de Pro produce la línea base B-B y el nivel B-T: configure RemoteSigningConfig::default()->withLevel(SignatureLevel::PAdES_B_T) (o use SequentialSigner::withTimestamping()) y suministre un proveedor de marca de tiempo, y la sesión añade el atributo no firmado signature-time-stamp de RFC 3161. El espacio reservado /Contents de B-T se amplía automáticamente para que el token quepa; un espacio configurado insuficiente falla de forma cerrada con un error de configuración tipado en lugar de truncar. Un nivel superior a B-T transportado en la configuración (B-LT o B-LTA) es un valor declarado por adelantado sobre el que Pro no actúa; ese productor de largo plazo se resuelve en tiempo de ejecución a través del contrato de Core y se distribuye en el paquete nextpdf/enterprise.
Ejemplo de código — Inicio rápido
Sección titulada «Ejemplo de código — Inicio rápido»<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Pro\Security\Signing\RemoteSigningSession;use NextPDF\Pro\Security\Signing\SigningStrategy;
/** * Produce a signed PDF using any signing strategy. * * @param string $pdfWithPlaceholder PDF bytes with a signature placeholder. * @param SigningStrategy $strategy A cloud-KMS, deferred, or ingest strategy. * * @return string The signed PDF bytes. */function signWithStrategy(string $pdfWithPlaceholder, SigningStrategy $strategy): string{ $session = RemoteSigningSession::create($pdfWithPlaceholder);
$session->prepare( certDer: $strategy->getCertificateDer(), chainDer: $strategy->getCertificateChainDer(), algorithmOid: $strategy->getSignatureAlgorithmOid(), digestAlgorithm: $strategy->getDigestAlgorithm(), contentsHexStart: 0, contentsHexEnd: 0, );
return $session->complete($strategy);}El llamante depende del contrato SigningStrategy. Tanto una estrategia de KMS en la nube como una estrategia de incorporación de CAdES lo satisfacen, así que este código no cambia entre estrategias.
Ejemplo de código — Producción
Sección titulada «Ejemplo de código — Producción»<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Pro\Security\Signing\SequentialSigner;use NextPDF\Pro\Security\Signing\SigningStrategy;use Psr\Log\LoggerInterface;
final readonly class ApprovalWorkflow{ public function __construct(private LoggerInterface $logger) {}
/** * Sign a PDF with two parties in sequence. * * @param string $pdfData The PDF bytes to sign. * @param SigningStrategy $approver The first-party strategy. * @param SigningStrategy $reviewer The second-party strategy. * * @return string The signed PDF bytes. */ public function run(string $pdfData, SigningStrategy $approver, SigningStrategy $reviewer): string { try { $result = SequentialSigner::create($pdfData) ->addSigner($approver, 'Approver', reason: 'Approved') ->addSigner($reviewer, 'Reviewer', reason: 'Reviewed') ->sign();
$this->logger->info('Sequential signing complete', [ 'signatures' => $result->signatureCount, ]);
return $result->pdfData; } catch (\Throwable $e) { $this->logger->error('Sequential signing failed', ['error' => $e->getMessage()]);
throw $e; } }}Cada firmante es una revisión incremental separada. El bloque catch registra y vuelve a lanzar; no traga el fallo, lo que mantiene la vía de firma de fallo cerrado.
Casos límite y trampas
Sección titulada «Casos límite y trampas»- Una firma producida no es una firma verificada. La validación de ruta se ejecuta en el verificador con los anclajes de confianza de ese verificador — RFC 5280 §6.1. El productor no puede afirmar el resultado.
- La detección del enmascaramiento depende de las reglas configuradas. Un conjunto de reglas que no coincide con un valor no lo enmascara. El motor no afirma que se encuentre todo el contenido sensible.
- La detección de PII es solo de la capa de texto. Una página escaneada sin capa de texto no produce coincidencias. La herramienta no sobrescribe los glifos renderizados de la página.
- La estructura CMS debe caber en el espacio
Contentsreservado. El SignedData B-B con una cadena de certificados completa tiene un tamaño; dimensione el espacio reservado en consecuencia, o la sesión lanza un error de desbordamiento. - Una estrategia de KMS en la nube depende de la accesibilidad de red y de la disponibilidad del proveedor. Un error de red o de proveedor lanza una excepción tipada; la sesión no produce silenciosamente un documento sin firmar.
- OCSP
unknownno esgood. Trateunknowncomo una no determinación — RFC 6960 §2.2.
Rendimiento
Sección titulada «Rendimiento»Una firma por software es de milisegundos de un solo dígito. Una firma con KMS en la nube añade un ciclo de ida y vuelta de red al proveedor. Una firma B-T añade un ciclo de ida y vuelta al proveedor de marca de tiempo configurado, además de la operación de firma. El presupuesto de tiempo de pared de 1500 ms cubre una única firma B-B con un proveedor remoto sobre una conexión en caliente. El costo del enmascaramiento escala con el número de reglas y la longitud del texto. El perfil de reproducibilidad es structural: los atributos firmados B-B incrustan el instante de firma y una firma B-T incrusta además un token de marca de tiempo, por lo que dos ejecuciones difieren en los bytes de la hora de firma y de la marca de tiempo mientras que la estructura firmada es idéntica.
Notas de seguridad
Sección titulada «Notas de seguridad»Este es un límite criptográfico, por lo que el modelo de amenazas es explícito. El motor calcula el rango de bytes y nunca se acepta del llamante. La vía de firma es de fallo cerrado: un fallo de primitiva o una carencia de capacidad lanza una excepción tipada y nunca se degrada silenciosamente a un algoritmo más débil. Una estrategia de KMS en la nube es un punto de integración, no un almacén de claves. La protección de la clave depende del manejo de claves, del KMS configurado y de la implementación; NextPDF Pro no posee la clave privada de una estrategia de KMS. Pro opera en un modo compatible con FIPS cuando se configura contra un KMS o HSM validado con FIPS; NextPDF Pro no es en sí mismo un módulo criptográfico validado con FIPS. Esta página concierne a la firma criptográfica; toda fuente normativa está parafraseada y ninguna se reproduce.
Residencia de datos y mitigaciones de PII
Sección titulada «Residencia de datos y mitigaciones de PII»Las superficies de enmascaramiento y de PII se ejecutan en el proceso. Ningún contenido del documento sale del host para el enmascaramiento ni la detección de PII. Una estrategia de KMS en la nube envía el resumen de los atributos firmados, no el documento, al proveedor para la operación de firma. La detección de PII coincide por patrones sobre los tipos configurados y elimina los objetos de texto subyacentes en el modo de caja negra según lo probado; no es una garantía de eliminación completa de datos personales y no es una declaración de cumplimiento normativo.
Telemetría segura y depuración de registros
Sección titulada «Telemetría segura y depuración de registros»La biblioteca lanza excepciones tipadas con mensajes estructurales. No escribe contenido del documento ni valores de PII detectados en los mensajes de excepción ni en los registros. Una implementación que registra en torno a la vía de firma debe registrar los campos estructurales que se muestran en el ejemplo de producción, no los bytes del documento.
Comportamiento en modo FIPS
Sección titulada «Comportamiento en modo FIPS»Pro selecciona el algoritmo a partir del algoritmo de firma configurado y de la estrategia. Cuando se configura contra un KMS o HSM validado con FIPS, la operación criptográfica se ejecuta en ese límite validado. NextPDF Pro en sí mismo realiza el ensamblaje estructural y el cálculo de resumen; no es un módulo validado con FIPS y no hace ninguna declaración de certificación FIPS.
Límite de Enterprise
Sección titulada «Límite de Enterprise»NextPDF Pro produce la línea base B-B y el nivel B-T. B-T añade un signature-time-stamp de RFC 3161 como atributo no firmado CMS sobre el valor de la firma, calculado sobre el valor de la firma digital de un firmante — ETSI EN 319 122-1 §5.3. NextPDF Pro implementa esto según ETSI EN 319 122-1 §5.3, RFC 3161, RFC 5652 y RFC 5816; está verificado con fixtures. NextPDF Pro no afirma una certificación independiente ETSI EN 319 142-1 ni afirma la validez legal del documento.
Los niveles B-LT y B-LTA son capacidades de Enterprise y no los produce Pro. B-LT y B-LTA añaden un almacén de seguridad de documento y marcas de tiempo de documento para la validación de archivado a largo plazo — ETSI EN 319 142-2 §5.5. Una configuración que solicita un almacén de seguridad de documento o el bucle de archivado a largo plazo resuelve ese productor en tiempo de ejecución a través del contrato de Core; ese productor se distribuye en el paquete nextpdf/enterprise. En una implementación solo con Pro, solicitar B-LT o B-LTA falla de forma cerrada con un mensaje que nombra el componente de Enterprise ausente. Pro no produce ningún almacén de seguridad de documento, ningún diccionario VRI, ninguna marca de tiempo de documento ni ningún bucle de archivado, y no hace ninguna declaración de validación a largo plazo (LTV). La custodia de claves en hardware mediante PKCS#11, y el perfil de política criptográfica FIPS 140-3, también son capacidades de Enterprise.
| Nivel PAdES | Añade | Edición del productor |
|---|---|---|
| B-B | Firma CMS con atributos firmados | Core, Pro, Enterprise |
| B-T | Un atributo no firmado signature-time-stamp de RFC 3161 sobre el valor de la firma | Core, Pro, Enterprise |
| B-LT | Almacén de seguridad de documento con material de validación | Enterprise (nextpdf/enterprise) |
| B-LTA | Marcas de tiempo de documento para la validez de archivado | Enterprise (nextpdf/enterprise) |
Contrato de comportamiento
Sección titulada «Contrato de comportamiento»- El enmascaramiento aplica las reglas configuradas antes de escribir la página y elimina los objetos de texto subyacentes en el modo de caja negra según lo probado.
- La detección de PII extrae la capa de texto, aplica los patrones configurados y devuelve una vista enmascarada y un recuento de coincidencias. No sobrescribe los glifos renderizados.
- La firma remota es en dos fases: prepare calcula el resumen y construye los atributos firmados; complete ensambla el CMS y lo incrusta.
- Pro produce la línea base B-B y el nivel B-T. Para B-T, la sesión añade un
signature-time-stampde RFC 3161 como atributo no firmado CMS sobre el valor de la firma; el resumen firmado B-B y el/ByteRangeno cambian. Una solicitud B-T sin un proveedor de marca de tiempo, o con un espacioContentsconfigurado insuficiente, falla de forma cerrada con un error de configuración tipado. Una solicitud de B-LT o B-LTA sin el paquete de Enterprise falla de forma cerrada con un error nombrado. - Una estrategia de KMS en la nube recibe el resumen de los atributos firmados, no el documento, y devuelve los bytes de la firma en bruto.
Conformidad
Sección titulada «Conformidad»| Declaración | Estándar | Cláusula |
|---|---|---|
La firma CMS se almacena codificada en DER en la entrada Contents del diccionario de firma. | ISO 32000-2 | §12.8.1 |
| El proceso de cálculo del resumen del mensaje; los atributos firmados transportan content-type y message-digest. | RFC 5652 | §5.4 |
| El verificador no debe confiar en los resúmenes calculados por el originador; los vuelve a calcular de forma independiente y los compara (proceso de verificación de firma). | RFC 5652 | §5.6 |
| Un signature-time-stamp PAdES B-T es un atributo no firmado que transporta un token de marca de tiempo calculado sobre el valor de la firma digital de un firmante (Pro produce B-T). | ETSI EN 319 122-1 | §5.3 |
El MessageImprint del token id-aa-timeStampToken del signature-time-stamp es un hash del valor del campo de firma del SignerInfo. | RFC 3161 | Appendix A |
En el lado de verificación, NextPDF vincula el MessageImprint de un signature-time-stamp al valor de la firma del SignerInfo y falla de forma cerrada ante una discrepancia, un token ausente/duplicado o una huella SHA-1 (verificación estricta, no una certificación). | RFC 3161 | Appendix A |
| Un token de marca de tiempo B-T transporta un genTime UTC que es el instante en que se creó el token. | RFC 3161 | §2.4.2 |
| La validación de la ruta de certificación comprueba las restricciones básicas y las entradas de la ruta hasta un anclaje de confianza. | RFC 5280 | §6.1 |
| OCSP informa certStatus como good, revoked o unknown. | RFC 6960 | §2.2 |
| B-LT y B-LTA añaden un almacén de seguridad de documento y marcas de tiempo de documento para la validación a largo plazo (límite de Enterprise). | ETSI EN 319 142-2 | §5.5 |
Todas las cláusulas están parafraseadas. NextPDF no reproduce el texto normativo. Consulte los estándares publicados para conocer la redacción autorizada. NextPDF Pro implementa el soporte de firma PAdES B-T según ETSI EN 319 122-1 §5.3 (signature-time-stamp), RFC 3161, RFC 5652 y RFC 5816, y está verificado con fixtures. ETSI EN 319 142-1 (la parte de niveles de línea base de PAdES) queda fuera del conjunto de evidencia citado; por tanto, NextPDF Pro no afirma una certificación, conformidad o cumplimiento independientes de ETSI EN 319 142-1, ni afirma la validez legal del documento. Esta página indica la estructura producida, los estándares que implementa el soporte de B-T y el límite Enterprise B-LT/B-LTA, no un nivel de conformidad certificado.
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 pública de la API soportada. Las rutas de espacio de nombres internas, las clases auxiliares, las tablas de mecanismos, los nombres de archivo de runbook y los prefijos de ticket quedan fuera de alcance.
Véase también
Sección titulada «Véase también»- Seguridad — Referencia profunda — la referencia profunda de esta superficie de seguridad de Pro.
- Firma de Core — el firmante CMS, la marca de tiempo RFC 3161, la validación de ruta RFC 5280, OCSP y CRL.
- Mapeo de línea base PAdES — B-B, B-T, B-LT, B-LTA entre ediciones.
- NextPDF Pro — la superficie completa de funciones de Pro.
- Seguridad de Core — cifrado y la superficie de firma más amplia.
- CMS · PAdES · Marca de tiempo RFC 3161 · KMS · DSS — términos del glosario.