En tidsmaskin för DPP:er

Tänk dig att du håller en produkt i handen och skannar QR-koden på den. Istället för en PDF-fil öppnas en liten app. Du ser produkten just nu: vad den består av, var den kommer ifrån, vad du bör tänka på. Med en svepande rörelse bläddrar du tillbaka i tiden - du kan se varje version som någonsin har publicerats.

Just det kan du prova nu: Demo⁠ visar ett komplett produktpass med exempeldata.

Det här är Transpareo Time Machine, vår öppen källkodsbaserade konsumentapp för alla digitala produktpass. Koden finns under GPL v3 på GitHub⁠.

Vi utvecklar den eftersom EU-förordningen om det digitala produktpasset skrevs för konsumenterna - för den person som håller produkten i handen. De flesta leverantörer gör det till ett formulär för regelefterlevnad som ingen skannar en andra gång. Vi gör det till en app som konsumenten faktiskt öppnar.

Vad appen gör

Fyra kontaktpunkter ur den persons perspektiv som håller produkten i handen. Ingen inloggning, ingen appinstallation.

1

Skanna

Skanna QR-koden med smarttelefonens kamera. Appen öppnas i webbläsaren.

2

Visa nyheter

Produkten presenteras här och nu - komponenter, material, ursprung, skötsel, återvinning.

3

Bläddra i historiken

En svepande rörelse bläddrar tillbaka i tiden. Varje tidigare version med datum och anledning till ändringen.

4

Dela

Varje versionsstatus har sin egen länk. En person delar en viss version med vänner eller myndigheter.

Varför överhuvudtaget?

EU-förordningen om det digitala produktpasset är den största förändringen mot produkttransparens på flera decennier. Om man läser de underliggande texterna noggrant framgår det att den uttryckligen är skriven för konsumenterna. Myndigheterna, återvinningsföretagen och verkstäderna hänger med, men den främsta mottagaren är den person som håller produkten i handen.

Siffrorna talar sitt tydliga språk. En genomsnittlig europeisk privatperson kommer i slutet av decenniet att kunna skanna dussintals till hundratals produktpass per år. Räknat på 200 miljoner hushåll innebär det miljarder konsumentinteraktioner varje år. Jämfört med detta är myndigheternas och återvinningsföretagens värld numeriskt sett försvinnande liten.

Om förordningen ska nå ut till konsumenterna måste konsumentsidan vara väl utformad - snabb, snygg och logisk. Annars missar den sitt syfte. Vi har beslutat att bygga denna konsumentsida som öppen källkod, så att den inte är beroende av en enskild leverantör.

Testat i webbläsaren, inte på vår server

Högst upp i varje produktpass visas en etikett: Verifierad av Transpareo. Den visar resultatet av en kontroll som inte sker på vår server, utan i besökarens webbläsare - utifrån de inlästa byte och tillverkarens offentliga nycklar.

Två oberoende instanser signerar varje DPP-version: tillverkaren och Transpareo. Båda signaturerna måste kunna verifieras för att märket ska bli grönt. Med Bring Your Own Key (BYOK) driver tillverkaren en egen signaturändpunkt - Transpareo förvarar aldrig den privata nyckeln och lägger endast till den oberoende motsignaturen. På så sätt skapas en utfärdarsignatur som Transpareo inte själv kan generera. En komprometterad server kan inte förfalska bockmarkeringen, eftersom verifieringen sker hos besökaren själv.

Den som vill veta mer klickar på märket. Där ser man signaturkedjan, hashvärdena och den länkade versionshistoriken. Den som bara vill ha informationen ignorerar helt enkelt detta och läser vidare i produktpasset.

Samma kontroll finns även som en fristående sida: På DPP-verifieringen anger du manifest-URL:en för valfritt produktpass och ser det fullständiga kontrollresultatet - utan att behöva öppna passet själv.

Vi släpper koden

Transpareo Time Machine släpps under GPL v3 på GitHub⁠. Klona, forka, driva egen server - allt är tillåtet. Publicerade modifieringar måste i sin tur släppas under GPL v3, så att varje vidareutveckling kommer allmänheten till godo.

Tre sätt att integrera paketet:

  • Med script-tagg: lägg in <script> och <transpareo-time-machine src="…"> på sidan, klart - inget byggsteg krävs.
  • Via npm: npm install transpareo-time-machine i din egen app.
  • Egen hosting: Bygg paketet, egen infrastruktur, inga tredjepartsberoenden vid körning.

Den som bara behöver signaturkontrollen utan den fullständiga produktvyn importerar systerelementet <dpp-verifier> - perfekt för revisionsverktyg. Kan ses live på DPP-verifieringen.

Den som använder appen på ett meningsfullt sätt

Appen är i första hand utvecklad för konsumenter. Den fungerar dock för alla som vill granska eller verifiera produktdata på egen hand.

  • Slutkonsumenter skannar, tittar, bläddrar och delar. Ingen inloggning, inga spårningsverktyg.
  • Marknadsövervakningsorgan och myndigheter kan se produktpasset i en programvara vars källkod är öppet granskbar.
  • Verkstäder och återvinningsföretag ser material sammansättning och demonteringsanvisningar direkt på produkten.
  • Varumärken och fork-operatörer anpassar paketet till sitt eget varumärke - CSS-tokens, egna komponenter, egen hosting.

Vad händer om Transpareo inte finns längre?

EU kräver att ett registrerat produktpass ska vara tillgängligt i minst tio år - även efter att tillverkaren har gått i konkurs eller likviderats. En SaaS-leverantör håller sällan så länge. Därför bygger vi plattformen redan från början så att produktpasset förblir användbart oberoende av oss:

  • Varje signerad DPP-version lagras i ett offentligt läsbart minne. Bytena tillsammans med de publicerade offentliga nycklarna räcker för en senare verifiering.
  • Så snart produktpasset har registrerats i EU-registret speglas varje DPP-version och händelseprotokollet i ett andra, skrivskyddat lagringsutrymme under ytterligare tio år. Ingen - inte ens vi - kan ändra dessa spegelkopior i efterhand.
  • Efter en uppsägning förblir de korta produktpass-URL:erna tillgängliga via en omdirigering på Transpareo-plattformen.
  • Transpareo Time Machine fungerar oförändrat även med arkiverade data. Paketet kräver ingen återkoppling till oss vid körning; det behöver endast byten och nycklarna.

Om Transpareo-plattformen skulle försvinna i morgon, skulle DPP-versionerna och den öppen källkodsbaserade renderaren finnas kvar.

För de som är nyfikna på teknik

Här beskrivs vad som händer bakom kulisserna. Om du inte behöver veta detta i detalj kan du hoppa över detta avsnitt - appen fungerar ändå.

  • GS1 Digital Link (ISO/IEC 18975): Produktpassets URL innehåller produktidentifikationen i standardiserad form - resolverneutral och utbytbar mellan leverantörer.
  • JSON Canonicalization Scheme (RFC 8785): En deterministisk serialisering. På så sätt förblir hashvärdet reproducerbart oavsett fältordning eller blanksteg - vem som helst kan själv beräkna det.
  • W3C Data Integrity Proofs (eddsa-jcs-2022): Ed25519-signatur över den kanoniserade formen (JCS).
  • /.well-known/dpp-keys/ (RFC 8615): Utfärdarens offentliga nycklar finns under en standardiserad sökväg - inget behov av att kontakta Transpareo, varje verifierare hittar dem själv.

Allt är dokumenterat i README på GitHub⁠ - inklusive frontend-arkitekturen (egen reaktiv kärna, inga externa ramverk) och bygginstruktionerna för egen hosting.

Visa koden på GitHub

Den fullständiga källkoden, alla utgåvor och diskussionen kring problemet finns i det offentliga repositoriet.