Ga naar inhoud

Het standaardenlandschap

Spec: ISO 32000-2 Spec: ETSI EN 319 142-1 Spec: RFC 3161 Spec: WCAG 2.2 Evidence: Standard-backed

Een PDF-engine legt geen verantwoording af aan één document, maar aan een kleine federatie van standaarden, geschreven door verschillende organisaties, die naar elkaar verwijzen. Deze pagina brengt die federatie in kaart zoals NextPDF haar volgt. Ze toont ook het traject dat een clausule aflegt van „een standaard schrijft het voor” naar „de engine doet het en een test bewijst het.”

De pagina is geschreven voor een senior engineer die moet weten welk document een bepaald gedrag bepaalt, zodat je kunt beslissen of de interpretatie van NextPDF verdedigbaar is.

„PDF-ondersteuning” is een bewering die een vraag verhult: ondersteuning van wat, precies? De kernsyntaxis is ISO 32000-2. Handtekeningen lopen via ETSI. Tijdstempels zijn een IETF-protocol. De HTML en CSS die de engine weergeeft, vallen onder W3C. De onderliggende cryptografie valt onder NIST. De toegankelijkheid van de uitvoer valt opnieuw onder W3C.

Als je een bibliotheek als één ongedifferentieerde brok behandelt, kun je niet over een fout redeneren. Wanneer een validator een ondertekende factuur afwijst, is de nuttige eerste vraag niet „is de PDF kapot?” Ze luidt „welke clausule van welke standaard werd niet nageleefd, en aan welke kant?” Om die vraag te stellen heb je een kaart nodig die de organisaties benoemt en een eerlijk verslag van hoe een clausule gedrag wordt.

  • NextPDF volgt vijf standaardenorganisaties. ISO beheert het formaat. ETSI beheert de Europese handtekeningprofielen. IETF beheert de wire-protocollen (tijdstempels, cryptografische primitieven via verwijzing). W3C beheert HTML, CSS en de toegankelijkheidscriteria. NIST beheert de goedgekeurde cryptografische algoritmen.
  • Deze documenten vormen sporen, geen losse lijst: één capaciteit voor een ondertekende PDF doorloopt ISO → ETSI → IETF → NIST, waarbij elke laag normatief naar de volgende verwijst.
  • Een clausule wordt geen gedrag doordat je haar leest. Ze wordt gedrag doordat ze wordt geparafraseerd en geciteerd, aan een vereiste wordt toegewezen, geïmplementeerd en door een test wordt vastgelegd. De pagina die het gedrag beschrijft, geeft dat aan met haar bewijsniveau.
  • Wanneer een clausule verplicht is, draagt ze een normatief sleutelwoord (een shall, een must). NextPDF behandelt die sleutelwoorden als het contract. Een should is een aanbeveling, die NextPDF ook zo documenteert, niet als garantie.

ISO 32000-2 staat centraal. Die standaard bepaalt wat een conform bestand is. Een conform bestand moet voldoen aan elke vereiste van het document, terwijl het vrij is om elke functie die het document niet uitdrukkelijk vereist weg te laten Spec: ISO 32000-2, §6 . De standaard legt ook een verplichting op aan een schrijver: alles wat NextPDF in een bestand aanmaakt of wijzigt, moet aan het formaat voldoen en consistent blijven met de elementen die er al zijn Spec: ISO 32000-2, §6 . Die ene clausule is de reden waarom de engine weigert een structureel inconsistente incrementele update uit te voeren. Het is geen voorkeur van NextPDF. Het is een regel van het formaat zelf.

Vanuit dat centrum wijst ISO 32000-2 naar buiten. De afhandeling van handtekeningen is via verwijzing gedefinieerd aan de hand van de reeks ETSI EN 319 142 voor PAdES. ETSI verwijst op zijn beurt naar IETF RFC 3161 voor het tijdstempeltoken, en naar de NIST FIPS-reeks voor de hash- en handtekeningalgoritmen. Eén capaciteit is dus een pad door meerdere documenten, waarbij elk document normatief is voor zijn eigen laag.

  1. Step 1 of 5: ISO 32000-2 §12.8 signatures
  2. Step 2 of 5: ETSI EN 319 142-1 PAdES baseline
  3. Step 3 of 5: RFC 3161 timestamp token
  4. Step 4 of 5: NIST FIPS 180-4 hash strength
  5. Step 5 of 5: WCAG 2.2 tagged output
Het standaardenspoor dat één ondertekende PDF met langetermijnvalidatie doorloopt: ISO definieert de container en wijst naar ETSI voor het handtekeningprofiel; ETSI vereist een IETF-tijdstempel; de cryptografische primitieven zijn NIST-goedgekeurd; de weergegeven uitvoer wordt aan de W3C-toegankelijkheid getoetst. Elke pijl is een normatieve verwijzing, geen losse associatie.

De riskante variant van standaardenwerk is een clausule lezen en vervolgens uit het hoofd code schrijven. Het pad van NextPDF is bewust langer, omdat juist dat langere pad auditeerbaar is:

  1. Retrieve The clause is read from the standard, not from memory.
  2. Cite It is paraphrased and pinned with a chunk digest, never quoted.
  3. Classify Its keyword (shall / should / may) sets whether it is a contract or a recommendation.
  4. Map The obligation becomes a concrete engine requirement.
  5. Implement The requirement is built into the pipeline.
  6. Pin A test holds the behaviour against drift.
  7. Tag The page that describes it declares its evidence level.
Het pad van een normatieve clausule naar een getest enginegedrag: haal de clausule op en citeer ze, classificeer haar verplichting op basis van haar normatieve sleutelwoord, wijs ze toe aan een enginevereiste, implementeer ze, leg ze vast met een test en label de documenterende pagina met haar bewijsgrondslag. Een clausule die vóór de test stopt, is een bewering, geen gedrag.

Bij de stap „classificeren” wordt de meeste dubbelzinnigheid opgelost. Specificaties coderen hun vereistenniveaus in sleutelwoorden: de welbekende familie MUST, SHALL, SHOULD, MAY. De betekenis van die sleutelwoorden ligt vast in de IETF-conventie voor vereistensleutelwoorden, bijgewerkt om te verduidelijken dat alleen de hoofdlettervormen normatief zijn, en wordt vervolgens toegepast op de beschrijvende prozatekst van elke specificatie Spec: RFC 2119 Spec: RFC 8174 . NextPDF leest een shall als een harde grens die de engine niet overschrijdt, en een should als een aanbeveling die wordt gevolgd en als aanbeveling wordt gedocumenteerd — nooit als een belofte. Dat onderscheid is het verschil tussen een eerlijke capaciteitsclaim en een overdreven bewering.

„Conform” is zelden één bit. De handtekeningstandaarden kennen niveaus — het Europese profiel voor de lange termijn met archivering bestaat bijvoorbeeld specifiek om tijdstempeltokens toe te voegen die een handtekening lang na de aanmaak valideerbaar houden Spec: ETSI EN 319 122-1, §6 . Dit is een strikt sterkere claim dan een kale basishandtekening. De toegankelijkheidsstandaard heeft dezelfde vorm: een conformiteitsniveau wordt alleen bereikt door aan elk succescriterium op dat niveau te voldoen, en een claim vermeldt het niveau dat daadwerkelijk is bereikt Spec: WCAG 2.2, §5.2.1 . NextPDF vermeldt daarom het profiel en het niveau, niet een ongekwalificeerd „conform”.

Deze pagina is Evidence: Standard-backed : elke bewering is verankerd in een clausule, geparafraseerd en gekoppeld aan een citaat met een digest, zodat de volgende reviewer ze opnieuw bij de bron kan verifiëren.

LaagOrganisatieVerankerende clausule (geparafraseerd)Wat het bepaalt in NextPDF
FormaatISODe aangemaakte of gewijzigde elementen van een schrijver moeten conform zijn en consistent blijven Spec: ISO 32000-2, §6 De PDF die de engine uitvoert
ConformiteitISOEen conform bestand voldoet aan alle vereisten; extra functies zijn optioneel Spec: ISO 32000-2, §6 Wat „geldige uitvoer” betekent
HandtekeningprofielETSIHet niveau voor de lange termijn met archivering voegt tijdstempels toe voor latere validatie Spec: ETSI EN 319 122-1, §6 Het PAdES-profiel waarop een handtekening zich richt
Vertrouwde tijdIETFEen tijdstempeldienst bewijst dat een gegeven vóór een bepaald tijdstip bestond Spec: RFC 3161, §2 Het tijdstempeltoken van het document
CryptografieNISTGoedgekeurde hashes verschillen in de beveiligingssterkte die ze bieden Spec: NIST FIPS 180-4, §1 Het digestalgoritme voor een handtekening
Toegankelijkheid van de uitvoerW3CEen conformiteitsniveau vereist elk criterium op dat niveau Spec: WCAG 2.2, §5.2.1 Toegankelijkheidsclaims voor weergegeven PDF’s

De aangehaalde digests zijn vastgelegd in de citations-frontmatter van deze pagina. Geen standaardtekst wordt hier gereproduceerd. De regel achter die keuze heeft een eigen pagina. Zie Citatiediscipline.

Je voert het standaardenlandschap niet uit; je leest het om te beslissen wat je de engine vraagt. Concreet is een ondertekeningsaanroep met langetermijnvalidatie een uitspraak over welk punt op het spoor je nodig hebt:

examples/36-sign-pades-b-b-and-b-t.php
<?php
declare(strict_types=1);
use NextPDF\Core\Document;
use NextPDF\Security\Signature\CertificateInfo;
use NextPDF\Security\Signature\DigitalSigner;
use NextPDF\Security\Signature\SignatureLevel;
// The signature level is a coordinate on the ISO -> ETSI -> RFC trail.
// PAdES B-B is the ETSI baseline CMS SignedData the Core engine produces;
// B-T adds an RFC 3161 timestamp, and B-LT/B-LTA add the DSS and document
// timestamps that keep a signature validatable after the certificate
// expires. The level you name is the point on the trail you are asking for.
$certInfo = CertificateInfo::fromFiles(
certPath: 'signer-cert.pem',
keyPath: 'signer-key.pem',
);
// The functional signing path is the direct two-phase signing engine.
// (Document::setSignature() records intent but its writer seam is not yet
// wired and fail-fasts on output — see the PadesOrchestrator docblock.)
$signer = new DigitalSigner(
certInfo: $certInfo,
level: SignatureLevel::PAdES_B_B,
);
$result = $signer->sign(file_get_contents('agreement.pdf'));
printf(
"PAdES %s CMS: %d bytes, timestamp=%s\n",
SignatureLevel::PAdES_B_B->value,
$result->getSize(),
$result->hasTimestamp() ? 'yes' : 'no',
);

Het benoemen van PAdES_B_LTA in plaats van een kale basislijn is geen performanceknop. Het is een beslissing over hoever de verplichting langs het standaardenspoor reikt. B-LT en B-LTA nemen de DSS- en archiveringstijdstempellagen mee en vereisen tijdens runtime het enterprise-LTV-pakket. In plaats van stilzwijgend terug te vallen, weigert de engine te doen alsof een lager niveau een hoger niveau levert.

De valkuil is „NextPDF is standaardenconform” lezen als één allesomvattende garantie. Dat is het niet, en geen enkele eerlijke engine biedt die. Conformiteit geldt per standaard, per clausule en per niveau. NextPDF richt zich op de PDF 2.0-basislijn, benoemde PAdES-profielen en vermelde toegankelijkheidsniveaus — elk afgebakend, elk geciteerd. Een bewering zonder een clausule en een niveau erachter is marketing, en Insider_ publiceert die niet.

De tweede, subtielere valkuil is aannemen dat een normatieve should een belofte is. Het is een aanbeveling. NextPDF documenteert aanbevelingen als aanbevelingen. De garanties van de engine zijn opgebouwd uit de shall-clausules, en dat verschil is wezenlijk.

Deze pagina is de kaart, niet het terrein. Ze somt niet elke clausule op die NextPDF implementeert, en het is geen conformiteitscertificaat. Bewijs per gedrag staat op de onderwerppagina die het gedrag behandelt, met het bewijsniveau van die pagina zelf — bijvoorbeeld PDF 2.0: wat is er veranderd voor de formaatdelta.

Het standaardenlandschap verandert ook. Er verschijnen nieuwe edities. Verwijzingen worden bijgewerkt. Een hier geciteerde clausule is vastgepind aan de corpus-snapshot die is vastgelegd in de citations van deze pagina. Wanneer een upstream-standaard wordt herzien, wordt het citaat opnieuw gevalideerd tegen de nieuwe clausule, niet verondersteld te blijven gelden. Waar deze pagina een capaciteit van de Premium-laag noemt, benoemt ze die op het niveau van aan welke standaard ze beantwoordt, nooit op het niveau van het interne mechanisme.

  • PDF 2.0: wat is er veranderd — de concrete ISO 32000-2-delta waar de formaatlaag van deze kaart naar verwijst.
  • Documentatie als product — waarom de discipline van het koppelen van clausules aan gedrag als engineering wordt behandeld.
  • Citatiediscipline — de regel die bepaalt hoe een clausule hier wordt geciteerd, en wat een bewijsniveau betekent.
  • Standaardenorganisatie — een organisatie die een specificatie publiceert (ISO, ETSI, IETF, W3C, NIST). Elke organisatie beheert een andere laag van de PDF-stack.
  • Normatieve clausule — een vereiste in een standaard, geïdentificeerd door haar sleutelwoord (shall/must voor verplicht, should voor aanbevolen, may voor optioneel).
  • Standaardenspoor — een geordende keten van specificaties die één capaciteit doorloopt, waarbij elk document normatief naar het volgende verwijst.
  • Conformiteitsniveau — een gegradeerde vorm van conformiteit (een ETSI-basisprofiel, een WCAG-niveau). Een claim vermeldt het niveau dat daadwerkelijk werd bereikt, geen ongekwalificeerd „conform”.
  • PAdES — PDF Advanced Electronic Signatures, de ETSI EN 319 142-familie van handtekeningprofielen waarnaar ISO 32000-2 verwijst voor PDF-ondertekening.