Openbaar maken zonder de signatuur te verliezen

Openbaar maken zonder de signatuur te verliezen

Transpareo ondertekent elk veld van een productpaspoort afzonderlijk, zodat ook beveiligde velden afzonderlijk kunnen worden gecontroleerd. De lezer hoeft het platform niet te vertrouwen.

Een digitaal productpaspoort toont niet voor iedereen hetzelfde. Een kopster ziet de openbare gegevens. Een reparatiebedrijf of een revisiebedrijf ziet meer. Een markttoezichtautoriteit ziet alles. Dat is duidelijk, en de Europese normen schrijven dit inmiddels uitdrukkelijk voor.

De interessante vraag is subtieler: wanneer iemand naast de openbare gegevens ook beveiligde velden te zien krijgt, kan hij dan aantonen dat juist deze velden authentiek zijn? Of moet hij erop vertrouwen dat het platform deze correct heeft geselecteerd en ongewijzigd heeft doorgegeven?

Stelt u zich eens een notaris voor die niet de brief in zijn geheel waarmerkt, maar elke alinea afzonderlijk. Iedereen ontvangt de openbare brief. Wie recht heeft op meer, krijgt de aanvullende alinea’s erbij, en elk daarvan draagt nog steeds het zegel van dezelfde notaris. Zo hebben wij ons platform opgebouwd. Bij de meeste platforms luidt het eerlijke antwoord op bovenstaande vraag: vertrouwen. Bij ons luidt het: bewijs, voor elk veld dat pas bij de openbaarmaking wordt toegevoegd. Dit artikel legt uit waarom dit verschil van belang is en waarom wij hiervoor de meer omvangrijke weg hebben gekozen.

De toegangsregel wordt door iedereen op dezelfde manier nageleefd

EN 18239, de Europese norm voor toegangsrechten, beveiliging en vertrouwelijkheid in het DPP, vereist dat de toegang per veld wordt geregeld: voor elk veld geldt een regel die bepaalt wie het mag inzien. Dat is de juiste eis, en deze is niet moeilijk na te leven. Welke status deze normen precies hebben, hebben wij uiteengezet in ons artikel over de geharmoniseerde normen.

De gebruikelijke manier om dit te realiseren is een filter op de server. De server weet wie de aanvraag indient, controleert wat deze persoon mag zien en levert precies dat deel terug. Meer eist de norm niet. De lezer moet erop vertrouwen dat de server eerlijk heeft geselecteerd en onderweg niets heeft gewijzigd. Voor een openbaar informatieblad is dat voldoende. Voor een waarde waarop een verwerker direct de prijs van een gebruikte batterij baseert, is dat wel veel vertrouwen.

Er zit echter een addertje onder het gras waar de norm geen rekening mee houdt: het fragment wordt zonder zegel geleverd.

De voor de hand liggende oplossing is om de gegevens te ondertekenen. Voor de twee uitersten van het spectrum werkt een gewone handtekening goed: de openbare weergave ondertekenen, de volledige dataset ondertekenen. Hoe dit in detail verloopt, staat beschreven in „Handtekeningen en certificaten“ in het DPP. In het midden loopt het mis. Een handtekening over het gehele document dekt precies de velden die op het moment van ondertekenen aanwezig waren. Als men een bevoegde lezer bovendien een beveiligd veld openstelt, valt dit veld buiten de ondertekende set en komt het ongedekt bij hem terecht. Niemand ondertekent vooraf elke mogelijke combinatie van ‘wie-ziet-wat’, aangezien het aantal combinaties explosief toeneemt. Men valt terug op het filter zonder zegel, en het middelste niveau berust weer op vertrouwen.

Elk veld afzonderlijk ondertekenen

Er bestaat een betere opzet, en daarop bouwen wij het platform. In plaats van het voltooide document als één blok te ondertekenen, legt de maker zich in één enkele bewerking per veld afzonderlijk vast (voor degenen die bekend zijn met de normen: de W3C-procedure ecdsa-sd-2023).

Elke weergave begint met dezelfde openbare velden. Wat een lezer daarna te zien krijgt, wordt veld voor veld toegevoegd, en elk van deze velden leidt nog steeds terug naar de openbare sleutel van de maker, offline, zonder opnieuw te ondertekenen en zonder vertrouwen in de instantie die de weergave heeft samengesteld. De velden waarvoor geen aanspraak bestaat, ontbreken simpelweg. Niet zwart gemaakt, maar helemaal niet aanwezig, en er sijpelt niets over door.

Een doorloop: het reparatiebedrijf

Een reparatiebedrijf heeft voor een accu een gerechtvaardigd belang aangemeld, een van de toegangsniveaus waarin de batterijverordening uitdrukkelijk voorziet. Het werkplaatssysteem meldt zich met zijn sleutel aan bij onze interface en haalt het pasje op. Het antwoord is hetzelfde openbare pasje dat ook de koper te zien krijgt, maar dan met precies één veld extra: de demontagehandleiding, die alleen aan bevoegde lezers wordt getoond. Geen tweede document, geen speciale versie.

Voordat het bedrijf op dit veld vertrouwt, controleert de software of het meegeleverde certificaat overeenkomt met de openbare sleutel van de fabrikant. Als de handtekeningcontrole slaagt, ook wat betreft het extra veld, weet het bedrijf: deze handleiding is tot op de letter afkomstig van de fabrikant en niemand heeft er onderweg iets aan gewijzigd. Als de controle niet slaagt, legt hij het document in zijn geheel terzijde. Dat hij precies die velden ontvangt waarop hij recht heeft, blijft de taak van onze toegangsbeheersystemen. Nieuw is de stap die daarop volgt: of hetgeen hij ontvangt authentiek is, controleert hij zelf, zonder ons te raadplegen.

Waarom ‘onbeschadigd’ de kern van de zaak is

Een intact zegel zegt niet dat de inhoud waar is. Het zegt: dit is precies wat de maker heeft geschreven, en sindsdien heeft niemand er ook maar een teken aan veranderd. Daarmee valt iedereen buiten de vertrouwenskwestie die het document alleen maar heeft doorgegeven: de tussenopslag, het netwerk, het archief, wij.

Wie u het paspoort heeft gegeven, doet er niet meer toe.

En een zegel is binair. Het is intact of het is niet intact; een half gebroken zegel bestaat niet. Daarom is het geen gradueel verschil of de extra velden met hun zegel bij u aankomen of zonder: zonder zegel zijn ze niet iets minder goed gedocumenteerd, ze zijn helemaal niet gedocumenteerd.

Beide methoden om te bekijken

Iedereen kan dit zelf controleren. De Transpareo Time Machine is onze open-source weergave-app voor productpaspoorten: deze bladert door de versiegeschiedenis van een paspoort en berekent daarbij elke handtekening in de browser van de kijker, zonder een server van ons te raadplegen. Het paspoort van een T-shirt bevat een handtekening over het gehele document, dat van een batterij een veldgewijze goedkeuring.

Beide zijn open W3C-standaarden; iedereen kan ze implementeren. De handtekening over het gehele document is aanzienlijk goedkoper te realiseren en te onderhouden, en wie uitsluitend openbare gegevens verstrekt, kan hiermee volstaan. Dat de Transpareo Time Machine beide methoden ondersteunt, is bewust gekozen: het paspoort blijft een gangbaar standaardformaat dat door elke geschikte tool kan worden gecontroleerd, niet alleen door die van ons.

Voor wie is dit nuttig, en wat vereist de norm?

Aan wie wordt er, afgezien van de openbare gegevens, überhaupt iets bekendgemaakt? Niet aan de toevallige koper. Het zijn de verwerker die beoordeelt wat een gebruikt accupakket waard is, de verzekeraar die een risico inprijs, de recycler die chemische stoffen sorteert, de overheidsinstantie die een dossier opbouwt. Lezers wier beslissingen afhangen van geld of veiligheid. En volgens de gebruikelijke aanpak zijn dat juist de lezers die voor de velden waarop hun beslissing berust, geen keurmerk krijgen. Wij vinden dat een keurmerk voor iedereen hetzelfde moet betekenen: elk weergegeven veld is afkomstig van de fabrikant en is sindsdien niet meer aangeraakt. Een keurmerk dat alleen voor de openbare velden geldt, is een half keurmerk.

Wij zeggen het openlijk: niets hiervan is voorgeschreven. EN 18239 vereist dat de toegang wordt gecontroleerd, en een filter op de server doet dat feilloos. Dat wij de openbaar gemaakte velden controleerbaar maken, doen wij bovendien omdat het hele nut van een ondertekend paspoort juist is dat niemand het platform hoeft te vertrouwen. Het middelste niveau als uitzondering uitsluiten, haalt precies dat vertrouwen terug dat de handtekening juist had moeten wegnemen.

Hetzelfde principe zorgt ervoor dat een veld over het hoofd wordt gezien

Het afzonderlijk vastleggen van elk veld brengt een tweede eigenschap met zich mee, en deze wordt daadwerkelijk door het Europees recht vereist. De Algemene Verordening Gegevensbescherming geeft mensen het recht om persoonsgegevens te laten verwijderen. Een als één blok ondertekend gegevensrecord kan hieraan niet voldoen zonder de eigen handtekening te vernietigen.

Omdat hier elk veld op zichzelf staat, kan een afzonderlijk veld worden verwijderd, terwijl de rest nog steeds geldig blijft. Mocht er per ongeluk persoonsgegevens in een paspoort terechtkomen, dan worden deze netjes weer verwijderd en blijft het paspoort geldig: geen heruitgifte, geen onderbroken geschiedenis. De velden die volgens de wet bewaard moeten blijven, blijven staan; wat verwijderd kan worden, kan op verzoek worden verwijderd, zelfs jaren later.

Waarom dit moeilijk is, en hoe wij dit hebben opgelost

Wij hebben deze methode niet zelf bedacht; het is een openbare W3C-standaard. Het is niet moeilijk om het idee te bedenken. Het is moeilijk om het zo te bouwen dat een paspoort over tien jaar nog steeds geldig is. Een gewone handtekening wordt berekend op basis van de bytes van een document. De veldgewijze handtekening wordt berekend op basis van de afzonderlijke gegevens, en daarvoor wordt het paspoort vóór het ondertekenen in een vaste notatie omgezet, waarin elk gegeven als een afzonderlijke zin wordt weergegeven. Deze notatie moet over tien jaar teken voor teken weer terugkomen, anders klopt het zegel niet meer. Drie onopvallende zaken staan dit in de weg, en wij hebben ze alle drie bij de wortel aangepakt.

Getallen verliezen hun type. Een waarde als 2,0 komt na een verwerking via een gewoon gegevensformaat terug als 2. Voor een mens is dat hetzelfde, voor de vaste notatie is het een andere zin. Bij ons wordt elke waarde met zijn type opgeslagen, en de publicatie wordt afgebroken zodra er ook maar één getal zonder type opduikt.

Benamingen zijn nog geen betekenis. Elke veldnaam moet terug te voeren zijn op een eenduidige betekenis in een woordenboek; anders verdwijnt het veld bij het omzetten stilletjes en wordt het niet door het zegel gedekt. Bij ons is elk woordenboek lokaal beschikbaar en wordt het nooit via het netwerk opgehaald; een onbekende veldnaam stopt het ondertekenen, in plaats van stilzwijgend een leeg resultaat te leveren.

Vermeldingen hebben vaste namen nodig. Elke vermelding in het document draagt bij ons een vaste identificatiecode, zodat de schrijfwijze bij elke doorloop hetzelfde blijft, in plaats van telkens nieuwe hulpnamen toe te wijzen.

Het meest delicate onderdeel betreft de eigen sleutel van de fabrikant. Voor elke uitgifte is een extra, kortstondige sleutel nodig, waarmee de openbaar te maken velden afzonderlijk worden ondertekend. Deze sleutel wordt door de fabrikant zelf gegenereerd en vervolgens vernietigd. Als deze bij ons zou liggen, zouden wij achteraf afzonderlijke velden kunnen verzinnen. Elk paspoort draagt twee van dergelijke zegels: één van de fabrikant en één van Transpareo, ook voor een afzonderlijk openbaar gemaakt veld.

Voor ons is deze inspanning een goede investering. Met de Transpareo Proofchain wordt elk paspoort bij publicatie ondertekend en gekoppeld aan de voorgaande versie, en de Transpareo Vault - het onveranderlijke tienjarige archief - treedt in werking zodra de paspoorten bij het EU-register zijn geregistreerd. Het ondertekenen van elk veld in plaats van het gehele blok is een uitbreiding van deze kern, geen toevoeging.

Waar we nu staan

We hebben gekozen voor het bewijs, voor elke lezer, omdat een zegel één ding moet betekenen, ongeacht wie ernaar kijkt. Voor wie wil zien hoe het werkt: de twee hierboven gelinkte voorbeeldpassen kunnen direct in de browser worden gecontroleerd, zonder een server te raadplegen.

Vragen over dit artikel

Schrijft een norm de veldgewijze signatuur voor?

Nee. EN 18239, de Europese norm voor toegangsrechten in het DPP, schrijft voor dat de toegang per veld moet worden geregeld, en een filter op de server voldoet daar volledig aan. Het is onze eigen keuze om de openbaar gemaakte velden bovendien controleerbaar te maken; dit is geen vereiste die door de regelgeving van wie dan ook wordt opgelegd. Wij achten deze inspanning gerechtvaardigd, omdat het hele nut van een gesigneerd paspoort juist ligt in het feit dat niemand het platform hoeft te vertrouwen. Welke status deze normen überhaupt hebben, staat vermeld in ons artikel over de geharmoniseerde normen.

Wij publiceren uitsluitend openbare gegevens. Is dat nodig?

Waarschijnlijk niet, en dat zeggen wij ook zo. Een handtekening over het gehele document dekt een paspoort waarvan alle velden openbaar zijn, en deze is aanzienlijk goedkoper te realiseren en te onderhouden. Het veldgewijs vrijgeven loont de moeite zodra er een tweede doelgroep bijkomt, bijvoorbeeld een reparatienetwerk, een recyclingbedrijf of een overheidsinstantie waaraan u anders uittreksels zonder zegel zou overhandigen. Beide methoden zijn open W3C-standaarden (ecdsa-sd-2023 voor de veldgewijze handtekening); elke tool die de standaard ondersteunt, kan deze controleren, en beide draaien momenteel in de Transpareo Time Machine, op het paspoort van een T-shirt en op het paspoort van een batterij.

Kunnen persoonsgegevens later worden verwijderd zonder dat het paspoort ongeldig wordt gemaakt?

Ja, en dit onderdeel wordt inderdaad door de Europese wetgeving vereist. De Algemene Verordening Gegevensbescherming geeft mensen het recht om persoonsgegevens te laten verwijderen, en een als blok ondertekend gegevensrecord kan hieraan niet voldoen zonder de eigen handtekening te vernietigen. Omdat hier elk veld afzonderlijk is vastgelegd, kan een enkel veld worden verwijderd, terwijl de rest nog steeds geldig blijft, zonder dat er een nieuwe versie hoeft te worden uitgegeven en zonder dat de versiegeschiedenis wordt onderbroken. De velden die volgens de wet moeten worden bewaard, blijven intact.

Wie is in het bezit van de ondertekeningssleutel?

Elk paspoort is voorzien van twee zegels, en één daarvan kan van u zijn. Voor elke uitgifte is bovendien een tijdelijke sleutel nodig, waarmee de openbaar te maken velden afzonderlijk worden ondertekend; deze wordt door de fabrikant zelf gegenereerd en vervolgens vernietigd, want als wij deze in ons bezit zouden hebben, zouden wij achteraf afzonderlijke velden kunnen verzinnen. Wij controleren het teruggezonden zegel aan de hand van de opgeslagen openbare sleutel, voordat wij het vertrouwen. Elk paspoort draagt dus twee zegels van twee onafhankelijke instanties, zowel voor een afzonderlijk vrijgegeven veld als voor het gehele gegevensbestand.

Is een paspoort over tien jaar nog geldig?

Precies daar schuilt de uitdaging. De veldgewijze handtekening wordt berekend op basis van de afzonderlijke gegevens van een document in plaats van op basis van de bytes ervan; dezelfde vaste notatie moet dus een decennium later teken voor teken weer tevoorschijn komen. Drie zaken verstoren dit proces, en wij hebben ze alle drie bij de wortel aangepakt. Elke waarde wordt samen met het bijbehorende type opgeslagen, elk woordenboek bevindt zich bij ons en wordt nooit via het internet opgehaald, en elk item heeft een vaste identificatiecode. Het onveranderlijke tienjarige archief is aangelegd en treedt in werking zodra de paspoorten bij het EU-register zijn geregistreerd. Meer hierover vindt u in onze analyse van de registerverordening.

Updates over toegangsniveaus en bewijsstukken

Selectieve openbaarmaking, handtekeningen en de ontwikkeling van de DPP-normen - maandelijks in beknopte vorm in uw inbox.