En tidsmaskine til DPP'er

Forestil dig, at du holder et produkt i hånden og scanner QR-koden på det. I stedet for en PDF åbnes der en lille app. Du ser produktet her og nu: hvad det består af, hvor det kommer fra, og hvad du skal være opmærksom på. Et enkelt stryg med fingeren tager dig tilbage i tiden - du kan se alle versioner, der nogensinde er blevet udgivet.

Netop det kan du prøve nu: Demoen⁠ viser et komplet produktpas med eksempeldata.

Det er Transpareo Time Machine, vores open source-app til forbrugere til ethvert digitalt produktpas. Koden er tilgængelig under GPL v3 på GitHub⁠.

Vi udvikler den, fordi EU-forordningen om det digitale produktpas er skrevet til forbrugerne - til den person, der holder produktet i hånden. De fleste udbydere laver det til et compliance-formular, som ingen kigger på to gange. Vi laver det til en app, som forbrugeren rent faktisk åbner.

Hvad appen gør

Fire berøringspunkter set fra den persons perspektiv, der holder produktet i hånden. Ingen login, ingen app-installation.

1

Scanning

Scan QR-koden med smartphone-kameraet. Appen åbnes i browseren.

2

Se nyheder

Produktet i nutiden - komponenter, materialer, oprindelse, pleje, genbrug.

3

Bladre gennem historien

En strygebevægelse bladrer tilbage i tiden. Hver tidligere version med dato og årsag til ændringen.

4

Del

Hver version har sit eget link. En person deler en bestemt version med venner eller myndigheder.

Hvorfor overhovedet?

EU-forordningen om det digitale produktpas er det største skridt i retning af produktgennemsigtighed i årtier. Hvis man læser de underliggende tekster grundigt, er den udtrykkeligt skrevet med forbrugerne for øje. Myndighederne, genvindingsvirksomhederne og værkstederne følger med, men den primære modtager er den person, der holder produktet i hånden.

Tallene taler deres tydelige sprog. En gennemsnitlig europæisk privatperson vil ved udgangen af dette årti kunne scanne snesevis til hundreder af produktpas om året. Omregnet til 200 millioner husstande svarer det til milliarder af forbrugerinteraktioner årligt. Myndighedernes og genvindingsvirksomhedernes verden er i sammenligning numerisk ubetydelig.

Hvis forordningen skal nå ud til forbrugerne, skal forbrugersiden være godt udformet - hurtig, flot og sammenhængende. Ellers går den glip af sit formål. Vi har besluttet at udvikle denne forbrugerside som open source, så den ikke er afhængig af en enkelt udbyder.

Testet i browseren, ikke på vores server

Øverst i hvert produktpas vises et mærke: »Verificeret af Transpareo«. Det viser resultatet af en kontrol, der ikke finder sted på vores server, men i den besøgendes browser - baseret på de indlæste bytes og producentens offentlige nøgler.

To uafhængige instanser underskriver hver DPP-version: producenten og Transpareo. Begge underskrifter skal kunne verificeres, for at mærket bliver grønt. Med Bring Your Own Key (BYOK) driver producenten sit eget signaturendepunkt - Transpareo opbevarer aldrig den private nøgle og tilføjer kun den uafhængige modsignatur. På den måde opstår der en udsteder-signatur, som Transpareo ikke selv kan generere. En kompromitteret server kan ikke forfalske afkrydsningen, da kontrollen foregår hos besøgende selv.

Hvis man vil vide det helt præcist, skal man klikke på mærket. Bagved kan man se signaturkæden, hashværdierne og den sammenkædede versionshistorik. Hvis du blot ønsker informationen, kan du blot ignorere det og læse videre i produktpasset.

Den samme kontrol findes også som en selvstændig side: På DPP-verifikationen indsætter du manifest-URL’en for et hvilket som helst produktpass og ser det fulde kontrolresultat - uden at åbne passet selv.

Vi frigiver koden

Transpareo Time Machine er udgivet under GPL v3 på GitHub⁠. Kloning, forking, selvhosting - alt er tilladt. Offentliggjorte ændringer skal selv være under GPL v3, så enhver videreudvikling kommer almenheden til gode.

Tre måder at integrere pakken på:

  • Via script-tag: et <script> og et <transpareo-time-machine src="…"> på siden, færdig - ingen build-trin.
  • Via npm: npm install transpareo-time-machine i din egen app.
  • Selvhosting: Byg pakken, brug din egen infrastruktur, ingen tredjepartsafhængigheder ved kørsel.

Hvis du kun har brug for signaturkontrol uden den fulde produktvisning, kan du importere søsterelementet <dpp-verifier> - ideelt til revisorværktøjer. Kan ses live på DPP-verifikationen.

Hvem der bruger appen på en fornuftig måde

Appen er primært udviklet til forbrugere. Den kan dog bruges af alle, der ønsker at se eller verificere produktdata uafhængigt.

  • Slutforbrugere scanner, ser, bladrer og deler. Ingen login, ingen sporingsværktøjer.
  • Markedstilsynsmyndigheder og offentlige myndigheder kan se produktpasset i et program, hvis kildekode kan kontrolleres offentligt.
  • Værksteder og genvindingsvirksomheder kan se materialesammensætning og demonteringsvejledning direkte på produktet.
  • Mærker og fork-operatører tilpasser pakken til deres eget mærke - CSS-tokens, egne komponenter, selvhosting.

Hvad sker der, hvis Transpareo ikke længere findes?

EU kræver, at et registreret produktpas forbliver tilgængeligt i mindst ti år - også efter producentens konkurs eller likvidation. En SaaS-udbyder eksisterer sjældent så længe. Derfor bygger vi platformen fra starten af på en sådan måde, at produktpassene forbliver anvendelige uafhængigt af os:

  • Hver signeret DPP-version ligger i et offentligt læsbart lager. Bytes samt de offentliggjorte offentlige nøgler er tilstrækkelige til en senere verifikation.
  • Så snart produktpasene er registreret i EU-registret, spejles hver DPP-version og hændelsesloggen i et andet, skrivebeskyttet lager i yderligere ti år. Ingen - heller ikke vi - kan ændre disse spejlkopier efterfølgende.
  • Efter en opsigelse forbliver de korte produktpas-URL’er tilgængelige via en omdirigering på Transpareo-platformen.
  • Transpareo Time Machine kører uændret, også på arkiverede data. Pakken kalder ikke tilbage til os under kørsel; den har kun brug for bytes og nøglerne.

Hvis Transpareo-platformen forsvandt i morgen, ville DPP-versionerne og den open source-baserede renderer forblive.

Til de teknologisk nysgerrige

Her er en beskrivelse af, hvad der foregår »under motorhjelmen«. Hvis du ikke har brug for at kende detaljerne, kan du springe dette afsnit over - appen fungerer alligevel.

  • GS1 Digital Link (ISO/IEC 18975): Produktpass-URL’en indeholder produktidentifikationen i en standardiseret form - resolverneutral og udskiftelig mellem udbydere.
  • JSON Canonicalization Scheme (RFC 8785): En deterministisk serialisering. På den måde forbliver hashen reproducerbar uafhængigt af feltrækkefølge eller mellemrum - alle kan selv beregne den.
  • W3C Data Integrity Proofs (eddsa-jcs-2022): Ed25519-signatur via den kanoniserede form (JCS).
  • /.well-known/dpp-keys/ (RFC 8615): Udstederens offentlige nøgler findes under en standardiseret sti - der er ikke behov for at kontakte Transpareo, da enhver verifikator selv kan finde dem.

Alt er dokumenteret i README på GitHub⁠ - inklusive frontend-arkitekturen (egen reaktiv kerne, ingen eksterne rammeværker) og vejledningen til selvhosting.

Se koden på GitHub

Den fulde kildekode, alle udgivelser og diskussionen om problemet findes i det offentlige repository.