Hoe bewijs ik dat een pdf niet is gewijzigd?
Om te bewijzen dat een pdf niet is gewijzigd, leg je op een bekend moment een cryptografische hash van het bestand vast, koppel je die hash aan een betrouwbare tijdstempel van een derde partij, en bewaar je een controleerbaar spoor van alles wat er daarna met het document is gebeurd. De hash maakt elke wijziging zichtbaar, de tijdstempel legt het moment vast, en het spoor overbrugt de periode ertussen. PDF/A-conformiteit en de bestandsmetadata bewijzen dit geen van beide.
Waarom de voor de hand liggende methodes falen
Er zijn drie methodes die iedereen als eerste noemt, en alle drie zijn zwakker dan ze lijken.
Bestandsmetadata. De documenteigenschappen openen en de aanmaakdatum met de wijzigingsdatum vergelijken voelt als een controle. Dat is het niet. Een bestand downloaden kan de wijzigingstijd al aanpassen zonder dat er één byte verandert, en veel bewerkingsprogramma’s laten de velden voor auteur en producent onaangeroerd. Metadata wordt geschreven door wie het bestand het laatst in handen had, en dat is precies de partij naar wiens handelen je vraagt.
PDF/A-conformiteit. PDF/A is een archiefformaat. Het verwijdert functies die ervoor kunnen zorgen dat een document er in de toekomst anders uitziet, zoals ingebedde scripts en verwijzingen naar externe lettertypen. Dat is waardevol, en het zegt niets over de vraag of de inhoud is veranderd. Een PDF/A-bestand kan worden bewerkt en opnieuw opgeslagen als een volkomen conform PDF/A-bestand.
Een ingeplakte handtekening. Een gescande handtekening in een document is een plaatje. Er is geen enkel cryptografisch verband met de bytes eromheen.
Wat wel werkt
Drie mechanismen, en ze beantwoorden drie verschillende vragen. Er één weglaten laat een gat.
1. Een cryptografische hash, om verandering te detecteren. Een hashfunctie brengt het bestand terug tot een vingerafdruk van vaste lengte. Verander één bit, waar dan ook, en de vingerafdruk verandert volledig. SHA-256 of SHA-384 zijn de verstandige keuzes van dit moment. De hash bewijst dat het bestand dat je nu hebt byte voor byte hetzelfde is als het bestand waarvan de hash is genomen.
Op zichzelf bewijst hij niets over het wanneer, en niets over wie hem nam. Een hash die je zelf hebt berekend en in je eigen database hebt gezet, blijft jouw woord.
2. Een betrouwbare tijdstempel, om het moment vast te leggen. RFC 3161 beschrijft hoe je een hash naar een Timestamp Authority stuurt en een ondertekend token terugkrijgt waarin die hash en het tijdstip staan. Alleen de hash gaat de deur uit, dus het document zelf verlaat je systemen nooit.
Dit is het onderdeel dat van jouw bewering bewijs van een derde maakt, want de bevestiging is ondertekend door iemand die geen belang heeft bij jouw document.
3. Een custody-spoor, om het gat te dichten. De hash en de tijdstempel bewijzen de toestand van het bestand op één moment. Een auditor vraagt naar de periode tussen dat moment en vandaag. Een custody-spoor beantwoordt die vraag: elke handeling op het document, wie hem uitvoerde, wanneer en vanaf waar, append-only weggeschreven zodat regels er niet stilletjes uit kunnen verdwijnen.
Door elke regel te koppelen aan de hash van de vorige, breekt een verwijdering in het midden de keten. Dat is wat de afwezigheid van manipulatie aantoonbaar maakt in plaats van alleen beweerd.
Wat je in de praktijk bewaart
Bewaar het document, de hash, het tijdstempeltoken en het custody-spoor bij elkaar. Bewaar ze in een formaat dat je over tien jaar nog kunt openen, en dat betekent in de praktijk PDF/A-3 voor het document, want dat formaat staat bijlagen toe en kan het bewijs dus naast het bestand meedragen.
Bewaar ook het verificatiemateriaal. Een tijdstempeltoken wordt geverifieerd tegen de certificaatketen van de Timestamp Authority, en certificaten verlopen. Wil je in 2035 verifiëren wat je in 2026 hebt getijdstempeld, dan moet je de keten en de intrekkingsstatus bewaren zoals ze op dat moment waren. Dat materiaal is vandaag beschikbaar en later niet meer.
Waar SealDoc past
SealDoc automatiseert de drie mechanismen hierboven. Elk document dat er doorheen gaat wordt een PDF/A-3B-bestand, gevalideerd tegen ISO 19005-3, standaard getijdstempeld met RFC 3161, met een SHA-384 hashketen en een chain-of-custody-registratie. Het exporteert per document als bewijspakket, op aanvraag: het document, het audittrail en een manifest dat zowel de losse bestanden als de hele set verzegelt.
Laatst gecontroleerd: