Mapeo de los niveles de línea base de PAdES
De un vistazo
Sección titulada «De un vistazo»PAdES es la familia de perfiles de firma electrónica avanzada para PDF, estandarizada en ETSI EN 319 142. Define cuatro niveles de conformidad de línea base —B-B, B-T, B-LT y B-LTA—; cada nivel superior añade material al inferior. Esta página relaciona esos niveles con lo que produce NextPDF y separa la superficie de Core de la de las ediciones Pro y Enterprise. El mapeo se sitúa en el plano del comportamiento: describe lo que emite el motor, no sus clases internas.
El resumen es el siguiente: NextPDF Core produce estructuras de firma alineadas con los niveles B-B y B-T. La ruta de producción de B-LT y B-LTA se incluye en las ediciones Pro y Enterprise. Que una firma producida sea aceptada como conforme a un nivel determinado depende del verificador y de las anclas de confianza con las que esté configurado. Un productor no puede afirmar la conformidad por cuenta del verificador.
Instalación
Sección titulada «Instalación»composer require nextpdf/core:^3Visión conceptual
Sección titulada «Visión conceptual»Una firma digital de PDF es una estructura CMS SignedData almacenada en la entrada Contents del diccionario de firma. El arreglo ByteRange indica los tramos de bytes que cubre el resumen —ISO 32000-2 §12.8.1. El CMS SignerInfo contiene los atributos firmados, incluidos content-type y message-digest —RFC 5652 §5.3. El resumen del mensaje sobre esos atributos se calcula mediante el proceso de §5.4. PAdES reutiliza el modelo de atributos de CAdES y lo incrusta dentro de ese diccionario de firma del PDF.
Los cuatro niveles de línea base son aditivos:
- B-B incluye la firma base con sus atributos firmados obligatorios.
- B-T añade un atributo de marca de tiempo de la firma calculado sobre el valor de la firma. Ese atributo acredita que la firma existía en el instante marcado —ETSI PAdES §5.4.3. El token lo emite una autoridad de sellado de tiempo conforme a RFC 3161 —RFC 3161 §2.4.1.
- B-LT añade material de validación a largo plazo —certificado, datos OCSP y CRL— ubicado en el Document Security Store —ETSI PAdES §6.2.2, ISO 32000-2 §12.8.4.3, y en la ubicación de los datos de validación descrita en ETSI EN 319 142-2 §6.3.
- B-LTA añade un sello de tiempo de documento de archivo para que la validez se pueda mantener durante periodos prolongados —ETSI PAdES §6.2.2.
Los cuatro niveles son estrictamente aditivos: cada nivel superior conserva todo lo que incluía el nivel inferior y añade exactamente una capa nueva de material. La edición productora que incluye cada paso se muestra en la transición.
Superficie de la API
Sección titulada «Superficie de la API»El selector de nivel es el enum SignatureLevel, con los casos PAdES_B_B, PAdES_B_T, PAdES_B_LT y PAdES_B_LTA. Sus métodos requiresTimestamp(), requiresDss(), requiresDocumentTimestamp() y isAvailableInEnvironment() indican qué requiere un nivel y si el entorno de ejecución actual puede satisfacerlo. En la distribución Core, isAvailableInEnvironment() devuelve true para B-B y B-T, y false para B-LT y B-LTA. Devuelve false para B-LT y B-LTA porque el productor de validación a largo plazo se resuelve en tiempo de ejecución y no forma parte del paquete de código abierto. El código en producción consume el contrato SignerInterface en lugar de estos tipos internos.
Matriz de compatibilidad por nivel
Sección titulada «Matriz de compatibilidad por nivel»| Nivel | Qué añade | Core (nextpdf/core) | Pro / Enterprise |
|---|---|---|---|
| B-B | Firma base con atributos firmados obligatorios | Produce una estructura alineada; probada contra líneas base de referencia sintéticas | Misma superficie |
| B-T | Marca de tiempo de la firma sobre el valor de la firma | Produce una estructura alineada cuando se proporciona un servicio de marca de tiempo conforme a RFC 3161 | Misma superficie |
| B-LT | Datos de validación en el Document Security Store | Core no incluye el productor; seleccionar B-LT sin el paquete Enterprise falla de forma cerrada | Productor incluido |
| B-LTA | Sello de tiempo de documento de archivo | Core no incluye el productor; falla de forma cerrada del mismo modo | Productor incluido |
«Produce una estructura alineada» significa que el motor emite una firma cuya estructura sigue las cláusulas citadas. Esa estructura se prueba mediante los artefactos tests/Corpus/pades/ y tests/Golden/baselines/ del proyecto. No constituye una afirmación de que un validador externo certifique la salida en ese nivel. Consulta la sección de conformidad.
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\Contracts\SignerInterface;
/** * Sign a byte range with any SignerInterface implementation. * * @param SignerInterface $signer A Core or Premium signer. * @param string $byteRange The PDF byte range to sign. * * @return string Hex-encoded CMS SignedData for the PDF /Contents field. */function signByteRange(SignerInterface $signer, string $byteRange): string{ return $signer->sign($byteRange)->toHex();}La función depende del contrato SignerInterface, no de una clase concreta. Tanto un firmante por software de Core (B-B o B-T) como un firmante HSM de Premium cumplen ese contrato. El código que la invoca no cambia cuando cambia la edición.
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\Security\Signature\SignatureLevel;
/** * Resolve the highest baseline level the current runtime can produce. * * B-B and B-T are produced by the Core distribution. B-LT and B-LTA * require the Enterprise long-term-validation package; without it the * level reports unavailable so callers fail closed rather than emit a * structure that does not carry the validation material the level names. * * @return SignatureLevel The highest level available in this runtime. */function highestAvailableLevel(): SignatureLevel{ foreach ([ SignatureLevel::PAdES_B_LTA, SignatureLevel::PAdES_B_LT, SignatureLevel::PAdES_B_T, SignatureLevel::PAdES_B_B, ] as $level) { if ($level->isAvailableInEnvironment()) { return $level; } }
return SignatureLevel::PAdES_B_B;}isAvailableInEnvironment() devuelve true para B-B y B-T sin ningún paquete adicional. Devuelve true para B-LT y B-LTA solo cuando está instalado el paquete de validación a largo plazo de Enterprise. Seleccionar un nivel no disponible sin optar por la degradación lanza una excepción tipada de nivel inalcanzable cuyo mensaje nombra el paquete que falta. Por lo tanto, un despliegue mal configurado falla de forma cerrada en lugar de emitir en silencio un nivel inferior al que solicitó el llamante.
Casos límite y errores frecuentes
Sección titulada «Casos límite y errores frecuentes»- Una firma estructuralmente B-T no es lo mismo que una firma validada como B-T. La validación se ejecuta en el verificador, con sus anclas de confianza y la vigencia de la información de revocación. El productor no puede afirmar ese resultado.
- PAdES B-LT y B-LTA requieren el paquete NextPDF Enterprise (
nextpdf/enterprise). Cuando no está instalado, el firmante falla de forma cerrada y B-LT/B-LTA no quedan disponibles. La superficie de Core ofrece B-B/B-T a través del contrato públicoNextPDF\Contracts\SignerInterface, con la validación a largo plazo detrás deLtvManagerInterface. Seleccionar un nivel no disponible en la distribución Core falla de forma cerrada por defecto. La excepción tipada nombra el paquete público que falta, no un tipo interno. La degradación elegante a un nivel inferior es opcional, nunca el comportamiento predeterminado. - El resumen del rango de bytes debe excluir el valor de la firma. Un resumen que también cubra los octetos de
Contentsno podrá verificarse nunca —ISO 32000-2 §12.8.1. - La marca de tiempo de la firma en B-T se calcula sobre el valor de la firma, no sobre los bytes del documento. El sello de tiempo de archivo en B-LTA es un sello de tiempo de documento independiente. Los dos no son intercambiables —ETSI PAdES §5.4.3 y §6.2.2.
- ETSI EN 319 142-1 (la parte de los niveles de línea base) no está en el corpus de evidencia de este proyecto. Las afirmaciones sobre la estructura de niveles que aparecen aquí se anclan a ETSI EN 319 142-2, el documento de perfil
pades, ISO 32000-2 §12.8 y RFC 5652 / RFC 3161. Los nombres de nivel y la estructura aditiva se declaran tal como están implementados en v3.x. No se afirma ningún resultado de prueba de conformidad ni atestación de terceros.
Rendimiento
Sección titulada «Rendimiento»El costo del nivel crece con el nivel. B-B es una única operación de firma, de menos de diez milisegundos con una clave por software. B-T añade una ida y vuelta de red a la autoridad de sellado de tiempo. B-LT añade una consulta de revocación por cada certificado de la cadena. B-LTA añade un sello de tiempo de documento adicional. El presupuesto de 1500 ms de reloj cubre una única firma B-T con una TSA remota en una conexión ya establecida. B-LT o B-LTA contra un punto de conexión de revocación lento supera ese presupuesto y debe situarse fuera de la ruta de la solicitud. El perfil de reproducibilidad es structural, no bitwise. Una marca de tiempo incrusta el instante de firma. Por lo tanto, dos ejecuciones difieren en los bytes de la marca de tiempo, aunque la estructura del documento permanece idéntica.
Notas de seguridad
Sección titulada «Notas de seguridad»El nivel que declara una firma y el nivel con el que se valida son hechos distintos. Esta página describe únicamente la superficie del productor. La validación a largo plazo depende de que los datos de validación se recopilen en el momento de la firma y de que el verificador confíe posteriormente en las mismas anclas. El productor no puede garantizar ninguna de las dos cosas. La confianza en la marca de tiempo se reduce a la confianza en la autoridad de sellado de tiempo, que el despliegue fija mediante un proveedor inyectable. Esta página está marcada como export_control_class: legal-review-required porque trata sobre perfiles de firma criptográfica. Todas las fuentes normativas se parafrasean y ninguna se reproduce, conforme a las buenas prácticas de citación.
Conformidad
Sección titulada «Conformidad»| Afirmación | Estándar | Cláusula | Evidencia |
|---|---|---|---|
El valor de la firma se almacena codificado en DER como CMS SignedData o como un TimeStampToken en la entrada Contents del diccionario de firma. | ISO 32000-2 | §12.8.1 | |
El resumen se calcula sobre los tramos de ByteRange y excluye el valor de la firma. | ISO 32000-2 | §12.8.1 | |
| El atributo de marca de tiempo de la firma se calcula sobre el valor de la firma (B-T). | ETSI PAdES (EN 319 142) | §5.4.3 | |
| El material de validación a largo plazo se incorpora en el Document Security Store (B-LT). | ETSI PAdES (EN 319 142) / ISO 32000-2 | §6.2.2 / §12.8.4.3 | , |
| Los datos de validación se colocan en los diccionarios DSS y VRI. | ETSI EN 319 142-2 | §6.3 | , |
| Un sello de tiempo de documento de archivo mantiene la validez durante periodos prolongados (B-LTA). | ETSI PAdES (EN 319 142) | §6.2.2 | |
| SignerInfo contiene los atributos firmados content-type y message-digest. | RFC 5652 | §5.3 | |
| El resumen del mensaje se calcula sobre los atributos firmados codificados en DER (proceso de §5.4). | RFC 5652 | §5.4 | |
| La marca de tiempo se solicita a una TSA conforme a RFC 3161 y devuelve una estructura TSTInfo. | RFC 3161 | §2.4.1 |
Todas las cláusulas se parafrasean. NextPDF no reproduce el texto normativo. Consulta los estándares publicados para conocer la redacción autorizada. ETSI EN 319 142-1 no está en el corpus de evidencia. Las afirmaciones estructurales sobre los niveles de línea base se anclan a las fuentes anteriores y se declaran tal como están implementadas en v3.x.
Contexto comercial
Sección titulada «Contexto comercial»Core produce estructuras de firma B-B y B-T. La ruta de producción de B-LT y B-LTA, la custodia de claves por HSM y PKCS#11, y el perfil de política criptográfica FIPS 140-3 se incluyen en las ediciones Pro y Enterprise. Core resuelve el productor de validación a largo plazo en tiempo de ejecución. Por lo tanto, el motor de código abierto no incorpora ninguna dependencia comercial, y la API SignerInterface no cambia al actualizar.
Véase también
Sección titulada «Véase también»- Seguridad / Firma — la superficie de implementación para CMS, marca de tiempo, LTV, cadena de confianza y revocación.
- Contratos / Firma — la SPI
SignerInterfacey sus niveles de estabilidad. - Seguridad — la superficie de implementación para cifrado y firma.
- Conformidad — la aplicación de PDF/A y de perfiles asociada al archivado firmado.
- PAdES · PAdES B-T · DSS · CAdES — términos del glosario.