En tidsmaskin for DPP-er

Tenk deg at du holder et produkt i hånden og skanner QR-koden på det. I stedet for en PDF-fil åpnes en liten app. Du ser produktet her og nå: hva det består av, hvor det kommer fra, hva du må være oppmerksom på. Med en sveipebevegelse blar du tilbake i tiden - du kan se alle versjoner som noensinne har blitt publisert.

Dette er Transpareo Time Machine, vår åpne kildekode-app for forbrukere, tilpasset alle digitale produktpass. Koden er lisensiert under GPL v3 på GitHub.

Vi utvikler den fordi EU-forordningen om det digitale produktpasset ble skrevet for forbrukerne - for den som holder produktet i hånden. De fleste leverandører gjør det om til et samsvarsskjema som ingen skanner to ganger. Vi gjør det om til en app som forbrukeren faktisk åpner.

Se selv

Demoen viser komplette produktpass med eksempeldata: Bla gjennom versjonshistorikken og åpne kontrollmerket - direkte i nettleseren, uten å opprette en konto.

Hva appen gjør

Fire berøringspunkter sett fra perspektivet til den som holder produktet i hånden. Ingen pålogging, ingen app-installasjon.

1

Skanning

Skann QR-koden med smarttelefonens kamera. Appen åpnes i nettleseren.

2

Se nyheter

Produktet i nåtiden - komponenter, materialer, opprinnelse, vedlikehold, gjenvinning.

3

Bla gjennom historien

En sveipebevegelse blar tilbake i tiden. Hver tidligere versjon med dato og årsak til endringen.

4

Del

Hver versjon har sin egen lenke. En person deler en bestemt versjon med venner eller myndigheter.

Hvorfor i det hele tatt?

EU-forordningen om det digitale produktpasset er det største skrittet mot produktgjennomsiktighet på flere tiår. Hvis man leser de underliggende tekstene nøye, ser man at den er uttrykkelig skrevet for forbrukerne. Myndighetene, gjenvinningsbedriftene og verkstedene følger med, men den primære mottakeren er den som holder produktet i hånden.

Tallmessig er saken entydig. En gjennomsnittlig europeisk privatperson vil ved slutten av tiåret kunne skanne dusinvis til hundrevis av produktpass per år. Beregnet på 200 millioner husholdninger utgjør dette milliarder av forbrukerinteraksjoner årlig. Myndighets- og gjenvinningsverdenen er i sammenligning numerisk ubetydelig liten.

Hvis forordningen skal nå frem til forbrukerne, må forbrukersiden være godt utformet - rask, pen og logisk. Ellers oppfyller den ikke sitt formål.

Vi har valgt å utvikle denne forbrukersiden som åpen kildekode, slik at den ikke er avhengig av en enkelt leverandør.

Forløpet er fastsatt, manifestet er vårt

Et produktpass endres: en reparasjon, en ny resirkuleringsandel, en tilbakekalling. Kravene stiller derfor at tidligere versjoner skal forbli tilgjengelige: Lagringsstandarden fryser hver versjon, mens grensesnittstandarden sikrer at hver versjon kan leses målrettet. Det kravene ikke dekker, er det som ligger mellom: en liste som knytter alle versjonene av et pass sammen til en historie. Transpareo publiserer den for hvert pass som et manifest, signert, der hver versjon er lenket til sin forgjenger via et «fingeravtrykk». Dermed blar tidsmaskinen gjennom et produkts historie, og en leser kan ikke bare kontrollere at en versjon er ekte, men også at den er den gjeldende i en sammenhengende rekke.

Appen er imidlertid ikke avhengig av dette. Hvis man viser den et enkelt pass i stedet for manifestet - slik alle leverandører publiserer det i henhold til de åpne standardene - viser den denne ene versjonen, sjekker signaturen hvis den har en, og utelater ganske enkelt tidslinjen. Et pass uten signatur regnes ikke som en feil, men vises ganske enkelt uten verifiseringsmerke. På samme måte viser den samme appen også pass som aldri har vært hos Transpareo.

Bytte av leverandør uten avbrudd

EU-forordningen om det digitale produktpasset krever produktpass som er interoperable og basert på åpne standarder - som kan overføres mellom tjenester og systemer, i stedet for å være bundet til en enkelt leverandør. Uavhengighet fra tjenesteleverandøren er altså ikke et tillegg, men en del av kravet.

Transpareo Time Machine er løsningen som konkretiserer dette kravet. Fordi hvert produktpass leveres i åpne standarder - resolver-nøytral identifikasjon, kanonisk serialisering, offentlig publiserte nøkler - og rendereren er åpen kildekode under GPL v3, er visningen av et pass aldri avhengig av vår plattform.

Ansvaret for et produktpass ligger hos en økonomisk aktør - produsenten, en importør eller en fullmektig. Hvis denne aktøren bestemmer seg for å forlate Transpareo og bytte til en annen leverandør, forblir visningen stabil: Den samme åpne kildekode-baserte rendereren fortsetter å vise de allerede publiserte versjonene, inkludert historikken, uendret, og en ny leverandør som bruker de samme åpne standardene, vises av nøyaktig den samme appen.

Dataene følger med, forbrukerne merker ingen avbrudd, og ingen trenger å vente på en migrering.

Selve flyttingen er ikke et prosjekt. Transpareo Time Machine er en statisk pakke: én gang bygget, kopiert til en hvilken som helst webserver - ferdig. Utformingen du har satt opp i Transpareo for passene dine, følger med hvert pass som et publisert stilark. Passvisningen som kundene dine har blitt vant til, ser altså nøyaktig lik ut på din egen server, inkludert farger, skrift og logo.

Testet i nettleseren, ikke på vår server

Øverst i hvert produktpass vises et merke: «Verifisert av Transpareo». Det viser resultatet av en kontroll som ikke foregår på vår server, men i besøkerens nettleser - basert på de innlastede byteene og utstederens offentlige nøkler.

To uavhengige instanser signerer hver DPP-versjon: utstederen og Transpareo. Begge signaturene må kunne verifiseres for at merket skal bli grønt. Med «Bring Your Own Key» (BYOK) driver utstederen sin egen signaturendepunkt - Transpareo oppbevarer aldri den private nøkkelen og legger bare til den uavhengige motsignaturen. Slik oppstår en utstillersignatur som Transpareo selv ikke kan generere.

En kompromittert server kan ikke forfalske haken, fordi verifiseringen skjer hos besøkende selv.

Den som vil vite mer, klikker på merket. Der ser du signaturkjeden, hashverdiene og den sammenkjedede versjonshistorikken. De som bare ønsker informasjonen, kan ganske enkelt ignorere dette og lese videre i produktpasset.

Den samme kontrollen finnes også som en egen side: På DPP-verifisering kan du legge inn manifest-URL-en til et hvilket som helst produktpass og se det fullstendige kontrollresultatet - uten å åpne selve passet.

Vi gjør koden tilgjengelig

Transpareo Time Machine er lisensiert under GPL v3 på GitHub. Publiserte modifikasjoner må på sin side være lisensiert under GPL v3, slik at all videreutvikling kommer allmennheten til gode.

Kloning, forking, egen hosting - alt er tillatt.

Hvordan du integrerer appen, enten med en linje på siden, som et pakke i din egen applikasjon eller fullstendig egenhostet, står beskrevet i README-filen der. Der finner du også søsterelementet for ren signaturkontroll, som kjører live på DPP-verifisering.

Hvem som bruker appen på en fornuftig måte

Appen er først og fremst utviklet for forbrukere. Den fungerer imidlertid for alle som ønsker å se eller verifisere produktdata uavhengig.

  • Sluttforbrukere skanner, ser, blar og deler. Ingen pålogging, ingen sporingsverktøy.
  • Markedstilsyn og myndigheter ser produktpasset i en programvare hvis kildekode kan kontrolleres offentlig.
  • Verksteder og gjenvinningsbedrifter ser materialsammensetning og demonteringsanvisninger direkte på produktet.
  • Merkevarer og fork-operatører tilpasser pakken til sitt eget merke - CSS-tokens, egne komponenter, egen hosting.

Hva skjer hvis Transpareo ikke lenger finnes?

EU krever at et registrert produktpass skal være tilgjengelig i minst ti år - også etter at utstederen har gått konkurs eller blitt avviklet. En SaaS-leverandør holder sjelden så lenge. Vi bygger derfor plattformen fra starten av slik at produktpassene forblir brukbare uavhengig av oss:

  • Hver signert DPP-versjon ligger i et offentlig lesbart lagringssted. Bytene pluss de publiserte offentlige nøklene er tilstrekkelig for senere verifisering.
  • Så snart produktpassene er registrert i EU-registeret, speiler et annet, skrivebeskyttet lagringssted hver DPP-versjon og hendelsesloggen i ytterligere ti år. Ingen - heller ikke vi - kan endre disse speilkopiene i etterkant.
  • Etter en oppsigelse forblir de korte produktpass-URL-ene tilgjengelige via en viderekobling på Transpareo-plattformen.
  • Transpareo Time Machine fungerer uendret også med arkiverte data. Pakken trenger ikke å hente data fra oss under kjøring; den trenger bare byteene og nøklene.

Selv om Transpareo-plattformen skulle forsvinne i morgen, ville DPP-versjonene og den åpne kildekode-rendereren forbli.

For de som er nysgjerrige på teknologi

Her er hva som skjer «under panseret». Hvis du ikke trenger å vite dette i detalj, kan du hoppe over dette avsnittet - appen fungerer uansett.

  • GS1 Digital Link (ISO/IEC 18975): Produktpass-URL-en inneholder produktidentifikasjonen i en standardisert form - resolver-nøytral og utskiftbar mellom leverandører.
  • JSON Canonicalization Scheme (RFC 8785): En deterministisk serialisering. På denne måten forblir hashen reproduserbar uavhengig av feltrekkefølge eller mellomrom - alle kan beregne den selv.
  • W3C Data Integrity Proofs (eddsa-jcs-2022): Ed25519-signatur over den kanoniserte formen (JCS).
  • /.well-known/dpp-keys/ (RFC 8615): Utstederens offentlige nøkler ligger under en standardisert bane - ingen henvendelse til Transpareo er nødvendig, hver verifikator finner dem selv.

Alt er dokumentert i README på GitHub - inkludert frontend-arkitekturen (egen reaktiv kjerne, ingen eksterne rammeverk) og byggeveiledningen for egen hosting.

Se koden på GitHub

Den fullstendige kildekoden, alle utgivelser og diskusjonen rundt feilen finner du i det offentlige repositoriet.