Ga naar inhoud

Handtekening: PAdES B-LT / B-LTA, DSS, documenttijdstempels

NextPDF Enterprise voegt bovenop de Core-handtekening volgens Cryptographic Message Syntax (CMS) een langetermijnproducer toe: een Document Security Store (DSS), validatiegerelateerde informatie per handtekening (VRI) en documenttijdstempels. Deze structuren brengen een baseline-handtekening voor PDF Advanced Electronic Signatures (PAdES) van B-B naar B-LT en vervolgens naar B-LTA. Deze pagina beschrijft het gedrag: wat de producer schrijft, wat deze niet beslist en waar de Pro-grens begint.

Terminal window
composer require nextpdf/enterprise

nextpdf/enterprise hangt af van nextpdf/core en nextpdf/pro. Laat het pakket resolven met je NextPDF-licentiegegevens via Private Packagist.

Een PAdES-baselinehandtekening heeft vier niveaus. Elk niveau voegt materiaal toe aan het vorige niveau. B-B is een CMS-handtekening met ondertekende attributen. B-T voegt een vertrouwde RFC 3161-tijdstempel toe aan de handtekeningwaarde. B-LT voegt een DSS toe met de certificaten, Online Certificate Status Protocol (OCSP)-antwoorden en certificate revocation lists (CRLs) die een verifier nodig heeft nadat het ondertekeningscertificaat is verlopen. B-LTA voegt een documenttijdstempel toe over de volledige documentstatus, inclusief de DSS, zodat het validatiemateriaal in de tijd verankerd blijft.

Core bouwt de CMS-SignedData en slaat deze DER-gecodeerd op in de Contents-vermelding van het handtekeningwoordenboek — ISO 32000-2 §12.8.1. Validatie op lange termijn gebruikt twee woordenboektypen: een document security store en een woordenboek voor documenttijdstempels — ISO 32000-2 §12.8. De Enterprise-producer schrijft de DSS met het certificaat-, OCSP- en CRL-materiaal — ISO 32000-2 §12.8.4.3 — en, voor B-LTA, het woordenboek voor documenttijdstempels — ISO 32000-2 §12.8.5. ETSI EN 319 142-2 beschrijft dezelfde langetermijnstructuur: DSS-vermeldingen plus documenttijdstempels voor langetermijnhandtekeningen — §5.5 — ondersteund door de handtekeninghandler — §6.3.3.3.

De producer verzamelt revocatiemateriaal voor elk certificaat in de keten. Deze raadpleegt eerst een OCSP-responder; een OCSP-antwoord meldt good, revoked of unknown — RFC 6960 §2.2 — en de velden thisUpdate en nextUpdate begrenzen de versheid van de status — RFC 6960 §4.2. Als OCSP niet beschikbaar is, valt de producer terug op een CRL. De producer doorloopt de keten van de ondertekenaar naar een trust anchor volgens de invoer voor padvalidatie — RFC 5280 §6.1.

De B-LTA-documenttijdstempel is een RFC 3161-uitwisseling met een Time-Stamping Authority (TSA). Het verzoek retourneert een Time Stamp Information (TSTInfo)-waarde — RFC 3161 §2.4.1 — waarvan de genTime het Coordinated Universal Time (UTC)-tijdstip is waarop het token is aangemaakt — RFC 3161 §2.4.2. Het token wordt ingebed in een /DocTimeStamp-woordenboek met /SubFilter /ETSI.RFC3161 dat het volledige bestand dekt.

De verifier beslist of een geproduceerde handtekening door de verificatie komt, met behulp van zijn geconfigureerde trust anchors en revocatiebeleid. De producer bedt materiaal in; deze claimt geen vertrouwde uitkomst. Deze grens wordt hieronder herhaald waar dat van belang is.

De volgorde is bepalend: de DSS moet worden geschreven vóór de B-LTA-documenttijdstempel, omdat de tijdstempel de documentstatus moet dekken die het validatiemateriaal al bevat. De onderstaande flow toont die producersequentie.

RFC 3161 TSAOCSP or CRL responderEnterprise LtvManagerCore CMS SignerRFC 3161 TSAOCSP or CRL responderEnterprise LtvManagerCore CMS SignerB-LT — embed validation materialalt[OCSP available][OCSP unavailable]B-LTA — anchor the DSS in timeCallersign byteRange1CMS SignedData — B-B or B-T2OCSP request per chain certificate3OCSP response — good, revoked or unknown4CRL fetch — fallback5CRL6Write DSS — certs + OCSP + CRL7TimeStampReq over file incl. DSS8TimeStampToken9Verify token, embed /DocTimeStamp10Long-term PDF — B-LT or B-LTA11Caller
Diagram

Je gebruikt de Enterprise-langetermijnproducer via het Core-contract. Productiecode hangt af van het contract, niet van het concrete Enterprise-implementatietype.

TypeSoortRolStabiliteitSinds
SignerInterfaceinterface (NextPDF\Contracts)Core-ondertekeningscontract voor callersstabiel1.0.0
SignatureLevelenum (NextPDF\Security\Signature)PAdES-niveauselector: B-B, B-T, B-LT, B-LTAstabiel1.0.0
LtvManagerInterfaceinterface (NextPDF\Contracts)Contract voor de langetermijnvalidatieproducer, runtime-resolvedstabiel1.0.0
TsaClientInterfaceinterfaceRFC 3161-TSA-client die de producer gebruikt voor documenttijdstempelsstabiel1.0.0

SignatureLevel::requiresDss() is waar voor B-LT en B-LTA; SignatureLevel::requiresDocumentTimestamp() is alleen waar voor B-LTA. Core SignatureLevel::isAvailableInEnvironment() retourneert false voor B-LT en B-LTA wanneer de Enterprise-langetermijnproducer niet is geïnstalleerd; de Core-orchestrator faalt dan gesloten. De concrete Enterprise-producerklassen zijn intern en maken geen deel uit van de publieke API; hang af van LtvManagerInterface en de enum.

examples/contracts/pades-blt-quickstart.php
<?php
declare(strict_types=1);
require_once __DIR__ . '/../../vendor/autoload.php';
use NextPDF\Security\Signature\SignatureLevel;
/**
* Select the PAdES level for a long-term signature.
*
* B-LT embeds a DSS. B-LTA also adds a document timestamp.
* Both require the nextpdf/enterprise long-term producer at runtime.
*
* @return SignatureLevel The requested PAdES baseline level.
*/
function longTermLevel(): SignatureLevel
{
return SignatureLevel::PAdES_B_LTA;
}

De ondertekeningsconfiguratie bevat het niveau. De Core-orchestrator resolveert de langetermijnproducer tijdens runtime via LtvManagerInterface, zodat applicatiecode niet naar het Enterprise-type verwijst.

examples/contracts/pades-blt-production.php
<?php
declare(strict_types=1);
require_once __DIR__ . '/../../vendor/autoload.php';
use NextPDF\Contracts\LtvManagerInterface;
use NextPDF\Contracts\SignerInterface;
use NextPDF\Exception\NextPdfException;
use Psr\Log\LoggerInterface;
final readonly class LongTermSigner
{
public function __construct(
private SignerInterface $signer,
private LtvManagerInterface $ltv,
private LoggerInterface $logger,
) {}
/**
* Sign, then embed the DSS and the B-LTA document timestamp.
*
* The order matters: the DSS is written first, then the document
* timestamp is taken over the document state that already includes it.
*
* @param string $byteRange The PDF byte range to sign.
*
* @throws NextPdfException When revocation material is missing under the
* fail-closed enforcement default, or when no TSA
* is configured for B-LTA.
*/
public function sign(string $byteRange): string
{
try {
$contents = $this->signer->sign($byteRange)->toHex();
// The orchestrator drives DSS collection and the document
// timestamp through the resolved LtvManagerInterface; revocation
// freshness and TSA reachability are operational inputs.
return $contents;
} catch (NextPdfException $e) {
$this->logger->error('long-term signing failed', ['reason' => $e->getMessage()]);
throw $e;
}
}
}

De DSS moet worden geschreven vóór de documenttijdstempel. De B-LTA-tijdstempel dekt het volledige bestand, inclusief de DSS, wat het validatiemateriaal zelf in de tijd verankert.

  • Ontbrekend revocatiemateriaal faalt standaard gesloten. Wanneer geen handhavingsmodus is ingesteld, behandelt de producer een ontbrekend OCSP-antwoord en een ontbrekende CRL voor elk niet-root-certificaat als een fout, niet als een waarschuwing. Dit voorkomt dat er een document wordt geschreven dat een langetermijnniveau claimt maar geen revocatiemateriaal in de DSS bevat. De permissieve workflow is opt-in en alleen waarschuwend.
  • B-LTA vereist een TSA. Een documenttijdstempel is een RFC 3161-rondrit. Zonder geconfigureerde TSA-client levert de B-LTA-stap een fout op in plaats van stilzwijgend B-LT te produceren.
  • De volgorde is bepalend. Voeg de documenttijdstempel pas toe nadat de DSS is geschreven. Een tijdstempel die vóór de DSS wordt genomen, dekt het validatiemateriaal niet.
  • Air-gapped runs. Onder een strikt-offline netwerkbeleid voert de producer geen OCSP/CRL-ophaalverzoek en geen TSA-verzoek uit; deze gebruikt alleen materiaal dat al in de DSS is ingebed. B-LTA, dat een vers TSA-token vereist, is strikt-offline niet haalbaar.
  • VRI is opt-in. VRI per handtekening wordt standaard niet geschreven. Sommige validators tonen de status voor lange termijn beter wanneer VRI aanwezig is; schakel het in wanneer een doelverifier het nodig heeft.

De kosten voor DSS-assemblage schalen met de ketenlengte en het aantal opgehaalde revocatieantwoorden. Elke OCSP- of CRL-ophaalactie is één netwerkrondrit; vooraf verzameld of gecachet materiaal neemt die rondritten weg. Een B-LTA-run voegt één TSA-rondrit toe voor de documenttijdstempel. Het budget van 1500 ms wandtijd dekt één enkele langetermijnhandtekening met warme OCSP/CRL- en TSA-verbindingen; koude of trage responders bepalen dan vooral de wandtijd. Het reproduceerbaarheidsprofiel is structural: tijdstempels embedden de onderteken- en stempelmomenten, waardoor twee runs in die bytes verschillen terwijl de documentstructuur identiek blijft.

  • Vertrouwen is de beslissing van de verifier. De producer bedt certificaten, OCSP en CRLs in. Of de handtekening valideert, hangt af van de verifier, zijn trust anchors en zijn beleid voor revocatieversheid. NextPDF levert geen ingebouwde trust list.
  • Revocatieversheid is in de tijd begrensd. OCSP thisUpdate/nextUpdate en CRL-geldigheidsvensters begrenzen hoe lang ingebed materiaal bruikbaar blijft. De archiveringslus herstempelt voordat het tijdstempelcertificaat verloopt; je bent verantwoordelijk voor het volgens schema uitvoeren ervan.
  • Standaard fail-closed. De standaardinstelling voor strikte revocatiehandhaving voorkomt dat een claim voor lange termijn wordt gemaakt zonder het materiaal dat deze ondersteunt.
  • Zie de sectie Enterprise-dreigingsmodel en Archive: DSS, VRI, LTV health.

Bij het ophalen van OCSP en CRL worden de responders gecontacteerd die in elk certificaat worden genoemd; die endpoints en de TSA zien verzoekmetadata. In een implementatie met beperkingen op gegevenslocatie verzamel je revocatiemateriaal vooraf en draai je onder het strikt-offline beleid, zodat tijdens het ondertekenen geen responder of TSA wordt gecontacteerd. Certificaten bevatten subject-identiteit. De producer bedt de certificaten in die nodig zijn voor validatie en voegt geen identiteit toe buiten de keten; deze verwijdert geen subject-velden uit een certificaat dat je aanlevert.

Producerdiagnostiek rapporteert het niveau, de ketenpositie en de status van ontbrekend materiaal. Deze logt geen privésleutels of volledige certificaatinhoud. Wanneer je een PSR-3-logger aansluit, houd diagnostische logs voor ondertekeningsflows op een niet-productieniveau van verbositeit en scrub responder-URLs als die interne infrastructuur onthullen. Behandel ingebedde OCSP/CRL-bytes als documentinhoud, niet als loginhoud.

Het Federal Information Processing Standards (FIPS) 140-3 crypto-beleidsprofiel is een Enterprise-capaciteit die bij de beveiligingsmodule is gedocumenteerd. De langetermijnproducer voegt geen eigen cryptografische primitieven toe naast de SHA-256-digest die wordt gebruikt voor de documenttijdstempel en de RFC 3161-uitwisseling; de ondertekeningsprimitieve is die van de Core-ondertekenaar. Wanneer het FIPS-profiel actief is, produceert de producer dezelfde DSS- en documenttijdstempelstructuren; de beperking geldt voor de onderliggende onderteken- en digest-algoritmen, niet voor de DSS-lay-out.

AssetTegenstanderRisicoMitigatie
DSS-revocatiemateriaalAcceptatie van verouderd materiaalEen verifier vertrouwt verlopen revocatiegegevensOCSP/CRL-versheidsvelden begrenzen de geldigheid; de archiveringslus herstempelt vóór het verlopen
B-LTA-documenttijdstempelTSA-compromittering of onbereikbare TSAGeen betrouwbaar tijdankerDoor de caller gekozen TSA; B-LTA faalt gesloten wanneer geen TSA is geconfigureerd
Claim voor lange termijnStilzwijgend ontbrekend materiaalEen “lange-termijn” PDF zonder revocatiegegevensStandaard fail-closed-handhaving levert een fout op in plaats van een waarschuwing
HandtekeningverificatieVerkeerd geconfigureerd verifier-vertrouwenSchijnbare geldigheid die de verifier niet zou mogen claimenDe producer geeft aan dat deze alleen materiaal inbedt; de vertrouwensbeslissing is die van de verifier
ClaimStandaardClausulereference_id
De handtekeningwaarde (of het tijdstempeltoken) wordt DER-gecodeerd opgeslagen in /Contents.ISO 32000-2§12.8.1
Validatie op lange termijn gebruikt een DSS en een woordenboek voor documenttijdstempels.ISO 32000-2§12.8
De DSS bevat certificaten, OCSP-antwoorden en CRLs.ISO 32000-2§12.8.4.3
De documenttijdstempel gebruikt een woordenboek voor documenttijdstempels.ISO 32000-2§12.8.5
DSS-vermeldingen en documenttijdstempels ondersteunen handtekeningen op lange termijn.ETSI EN 319 142-2§5.5
De handtekeninghandler ondersteunt DSS-vermeldingen en documenttijdstempels.ETSI EN 319 142-2§6.3.3.3
Een tijdstempeltoken draagt een UTC-genTime die het moment is waarop het is aangemaakt.RFC 3161§2.4.2
OCSP meldt good, revoked of unknown, begrensd door thisUpdate/nextUpdate.RFC 6960§2.2, §4.2,

Alle clausules zijn geparafraseerd. NextPDF reproduceert geen normatieve tekst; raadpleeg de gepubliceerde standaarden voor de gezaghebbende formulering. NextPDF maakt geen PAdES-certificeringsclaim. De hier beschreven structuren zijn afgestemd op de B-LT- en B-LTA-niveaus zoals gedefinieerd in ETSI EN 319 142; er wordt geen conformiteitstestresultaat of attestatie van derden geclaimd. Het deel met baseline-niveaus, ETSI EN 319 142-1, valt buiten de geciteerde bewijsverzameling. Daarom beschrijft deze pagina de geproduceerde structuur en de Pro/Enterprise-grens, niet een gecertificeerd conformiteitsniveau. Het geciteerde ETSI-bewijs is EN 319 142-2; de ISO- en RFC-ankers onderbouwen de claims voor lange termijn en tijdstempels, zoals ze dat ook doen in de Core-ondertekeningsreferentie.

NextPDF Core produceert de B-B- en B-T-PAdES-baselineniveaus: Core levert de software-CMS-ondertekenaar plus het RFC 3161-tijdstempelpad, zodat een B-T-handtekening (met tijdstempel) een Core-capaciteit is en geen Enterprise vereist. NextPDF Pro produceert ook B-B en B-T: Pro stelt de Core-RFC 3161-stack samen om het ongetekende attribuut signature-time-stamp op de handtekeningwaarde toe te voegen (PadesBtTimestamper, fixture-geverifieerd). De B-LT- en B-LTA-niveaus — de DSS-, VRI- en documenttijdstempelproducer — zijn een Enterprise-capaciteit en worden niet geproduceerd door Core of Pro. Dit komt overeen met de gepubliceerde niveautabel op de Pro security-pagina: B-B en B-T worden geproduceerd door Core en Pro, en B-LT en B-LTA alleen door Enterprise. De B-T-producer is structureel: deze stelt de RFC 3161 signature-time-stamp samen volgens het geciteerde bewijs uit RFC 3161 / RFC 5652 / ETSI EN 319 122-1; het is geen gecertificeerde ETSI EN 319 142-1 conformiteit of eIDAS-gekwalificeerde claim. In een Pro-only-implementatie faalt het aanvragen van B-LT of B-LTA gesloten met een bericht dat de ontbrekende Enterprise-component benoemt, omdat SignatureLevel::isAvailableInEnvironment() false retourneert wanneer de Enterprise-langetermijnproducer afwezig is.

PAdES-niveauVoegt toeProducer-editie
B-BCMS-handtekening met ondertekende attributenCore, Pro, Enterprise
B-TRFC 3161 signature-time-stamp op de handtekeningwaarde (structureel; niet eIDAS-gekwalificeerd)Core, Pro, Enterprise
B-LTDocument Security Store met validatiemateriaalAlleen Enterprise (nextpdf/enterprise)
B-LTADocumenttijdstempels voor archiveringsgeldigheidAlleen Enterprise (nextpdf/enterprise)

Dit is de canonieke niveau→niveau-matrix: B-B is de baseline die door elke editie wordt geproduceerd; B-T (getijdstempeld) wordt ook geproduceerd door Core en Pro (Pro stelt de Core-RFC 3161-stack samen); B-LT en B-LTA zijn alleen Enterprise. De B-T-producer is structureel; dit is geen gecertificeerde ETSI EN 319 142-1 conformiteit of eIDAS-gekwalificeerde claim.

De langetermijnproducer maakt deel uit van de Enterprise-editie (license_feature_flag: enterprise). Deze wordt tijdens runtime via het Core-contract geresolved; de publieke API verandert niet wanneer je upgradet van Pro naar Enterprise.

  • Core en Pro produceren beide B-B en B-T (B-T voegt de RFC 3161 signature-time-stamp toe; Pro stelt de Core-RFC 3161-stack samen). B-LT en B-LTA vormen een Enterprise-grens; een aanvraag daarvoor zonder nextpdf/enterprise faalt gesloten met een benoemde fout.
  • De producer schrijft een DSS (B-LT) en een documenttijdstempel over de DSS (B-LTA). Deze bedt validatiemateriaal in en claimt geen vertrouwde verificatie-uitkomst.
  • De standaardinstelling voor strikte revocatiehandhaving levert een fout op wanneer revocatiemateriaal ontbreekt voor een niet-root-certificaat, tenzij de caller kiest voor de permissieve workflow.
  • B-LTA vereist een geconfigureerde TSA; zonder TSA genereert de B-LTA-stap een fout in plaats van te degraderen naar B-LT.

Deze publieke pagina beschrijft alleen extern waarneembaar producergedrag. De pagina bevat geen interne namespace-paden, geen interne klasse- of trait-namen, geen runbook-bestandsnamen en geen interne ticketprefixen. De concrete Enterprise-typen voor de langetermijnproducer worden alleen aangesproken via het publieke Core-contract (LtvManagerInterface, SignatureLevel). Gedetailleerde DSS-assemblage- en archiveringslus-internals bevinden zich in de gated diepte-referentie onder een geheimhoudingsovereenkomst (NDA).

In een Core-only-implementatie produceert de software-ondertekenaar PAdES B-B en B-T met een lokale sleutel of een sleutel die via het Core-ondertekeningsstrategiecontract wordt aangeleverd. Core levert het RFC 3161-tijdstempelpad, zodat B-T bereikbaar is zonder enig premium-pakket. Core heeft geen DSS-, VRI- of documenttijdstempelproducer; het aanvragen van B-LT of B-LTA faalt gesloten met een benoemde fout. Zie Security / Signing (Core).

In een Pro-only-implementatie is het ondersteunde ondertekeningspad de Pro-B-B-baseline en het Pro-B-T-niveau (Pro stelt de Core-RFC 3161-stack samen om het ongetekende attribuut signature-time-stamp toe te voegen), plus zijn remote en cloud key management service (KMS)-ondertekeningsstrategieën. Pro produceert geen DSS, VRI of documenttijdstempel. Een configuratie die B-LT of B-LTA aanvraagt in een Pro-only-implementatie faalt gesloten met een bericht dat de ontbrekende Enterprise-component benoemt. Zie Pro security voor het Pro-ondertekeningsoppervlak.

De DSS-, VRI- en documenttijdstempelproducer wordt alleen op gedragsniveau beschreven. Interne logica voor DSS-assemblagevolgorde, interne details van VRI-keying per handtekening en interne details van archiveringslusplanning vallen buiten het bereik van het publieke oppervlak en worden hier niet gereproduceerd.

NextPDF Enterprise bedt validatiemateriaal in en integreert met door de caller aangeleverde OCSP/CRL-responders en een RFC 3161-TSA. Het beheert, host of garandeert de beschikbaarheid van die responders of de TSA niet zelf. Geldigheid op lange termijn hangt af van de responders, de TSA, het archiveringslusschema en de operator — niet van NextPDF Enterprise alleen. De operator is verantwoordelijk voor TSA-selectie en -bereikbaarheid, toegang tot revocatieresponders of vooraf verzameld materiaal, het netwerkbeleid en het uitvoeren van de archiveringslus voordat elk tijdstempelcertificaat verloopt.

Deze pagina is gemarkeerd als export_control_class: legal-review-required. De pagina gaat over cryptografisch ondertekenen en validatie op lange termijn. Juridische goedkeuring is vereist voordat de publish-vlag wordt gezet. Afstemming op de B-LT- en B-LTA-structuren gedefinieerd in ETSI EN 319 142 is een structurele uitspraak, geen juridisch oordeel en geen certificering. NextPDF maakt geen PAdES-certificeringsclaim. Raadpleeg je compliance- en juridische adviseurs voor je regelgevingsverplichtingen.