Ett digitalt produktpass visar inte samma information för alla. En köpare ser de offentliga uppgifterna. En reparatör eller återvinningsföretag ser mer. En marknadsövervakningsmyndighet ser allt. Detta är klarlagt, och de europeiska standarderna föreskriver det numera uttryckligen.
Den intressanta frågan är mer subtil: Om någon får tillgång till skyddade fält utöver de offentliga uppgifterna, kan hen då bevisa att just dessa fält är äkta? Eller måste hen lita på att plattformen har valt ut dem korrekt och vidarebefordrat dem oförändrade?
För de flesta plattformar är det ärliga svaret: förtroende. Vi har byggt vår plattform så att svaret är bevis - inte bara för de offentliga fälten, utan för varje fält som läggs till först vid offentliggörandet. Varför denna skillnad är viktig, och varför vi har valt den mer krävande vägen.
Alla uppfyller åtkomstregeln på samma sätt
EN 18239, den europeiska standarden för åtkomsträttigheter, säkerhet och sekretess i DPP, kräver åtkomstkontroll per dataelement: För varje fält finns det en regel om vem som får se det. Det är rätt krav, och det är inte svårt att uppfylla. Vilken status dessa standarder egentligen har har vi redogjort för under harmoniserade standarder.
Det vanligaste sättet att uppnå detta är filtrering på serversidan. Servern vet vem som gör förfrågan, kontrollerar vad denna person får se och levererar exakt detta utdrag. Åtkomstkontroll: klart. Standarden kräver inte mer än så.
Det finns dock en hake som standarden inte tar hänsyn till: Utsnittet anländer osignerat. Läsaren får en vy som sammanställts åt just honom och måste lita på att servern har valt ut innehållet ärligt och inte ändrat något under vägen. För ett offentligt informationsblad är det okej. För ett värde som en återvinnare baserar priset på ett begagnat batteri på, krävs det mycket tillit.
Där en enskild signatur når sina gränser
Den uppenbara lösningen är att signera data. För de båda ändarna av skalan fungerar en vanlig signatur bra: signera den offentliga vyn, signera den fullständiga datamängden, och båda verifieras mot en offentlig nyckel utan att en server står emellan. Hur detta fungerar i detalj beskrivs i Signaturer och certifikat i DPP.
I mitten bryter det samman. En signatur över hela dokumentet täcker exakt en uppsättning fält, nämligen de som fanns vid signeringen. Om man dessutom gör ett skyddat fält tillgängligt för en behörig läsare ligger detta fält utanför den signerade mängden och når mottagaren utan att vara täckt av signaturen. Om man istället från början signerar hela datamängden täcker signaturen visserligen allt, men då skulle man också behöva visa allt för alla.
Nivåerna däremellan faller därmed mellan stolarna: reparationsverkstaden, försäkringsbolaget, återvinningsföretaget. Om man ville signera varje möjlig kombination av ”vem ser vad” i förväg skulle man behöva ett eget signerat dokument per kombination, och antalet kombinationer exploderar med varje ytterligare åtkomstgrupp. Det gör ingen. Man faller tillbaka på det osignerade serverfiltret, och det mellanliggande steget bygger återigen på förtroende.
Signera varje fält separat
Det finns en bättre konstruktion, och det är den vi bygger plattformen på. I stället för att signera det färdiga dokumentet som en helhet fastställer utfärdaren varje fält enskilt i en enda signeringsomgång (för dem som är insatta i standarder: W3C-specifikationen ecdsa-sd-2023 för selektiv offentliggörande).
Varje vy börjar med den offentliga kärnan
Varje vy börjar alltså med samma offentliga fält. Det som läsaren får se utöver detta läggs till fält för fält, och vart och ett av dessa fält kan fortfarande spåras tillbaka till utfärdarens offentliga nyckel - offline, utan ny signering och utan förtroende för den instans som har sammanställt vyn. Fälten utan behörighet saknas helt enkelt. De är inte svärtade, utan finns inte alls, och ingenting läcker ut om dem.
Ett exempel: reparationsverkstaden
Hur detta konkret fungerar visar ett exempel. En reparationsverkstad har anmält ett berättigat intresse för ett batteri, en av de åtkomstnivåer som batteriförordningen uttryckligen föreskriver. Verkstadens system loggar in på vårt gränssnitt med sin API-nyckel och hämtar passet.
Svaret är samma offentliga pass som även köparen ser, men med exakt ett fält till: demonteringsanvisningen, som endast visas för behöriga läsare. Inget andra dokument, ingen specialversion, samma pass med ett fält till.
Innan verkstaden förlitar sig på detta fält jämför dess programvara det medföljande intyget med utfärdarens offentliga nyckel. Om kontrollen går igenom, även vad gäller det extra fältet, vet verkstaden: Denna anvisning kommer tecken för tecken från tillverkaren, och varken vi eller någon annan längs vägen har ändrat något i den. Om kontrollen inte stämmer, vet han det lika säkert och lägger undan hela dokumentet.
Vår del i detta är medvetet liten. Att han får exakt de fält som han har rätt till är en uppgift för vår åtkomstkontroll; det klarar varje serverfilter lika bra. Det som är nytt är steget därefter: Han kontrollerar själv, utan att fråga oss, om det som kommer fram är äkta.
Varför ”obrott” är hela poängen
Föreställ dig en notarie som inte bestyrker brevet i sin helhet, utan varje stycke för sig. Det offentliga brevet får alla. Den som har rätt till mer får de ytterligare styckena, och vart och ett av dem bär fortfarande samma notaries sigill.
Varför det är så viktigt att det är ”intakt” förtjänar en mening till. Ett intakt sigill säger inte att innehållet är sant. Det säger: Det här är exakt vad utfärdaren har skrivit, och sedan dess har ingen ändrat ett enda tecken i det. Därmed faller alla som bara har vidarebefordrat dokumentet utanför förtroendefrågan - mellanlagringen, nätet, arkivet, vi. Vem som gav dig passet spelar ingen roll längre.
Och en försegling är binär. Antingen håller den eller så håller den inte; det finns ingen sådan sak som en halvbruten försegling. Om den bryts får du inte reda på vilken mening som har ändrats, utan bara att du inte längre kan lita på hela dokumentet. Därför är det ingen gradvis skillnad om de extra fälten med sin försegling når dig eller inte: Utan sigill är de inte något svagare verifierade, de är inte verifierade alls.
Båda metoderna att titta på
Det kan vem som helst kontrollera själv. Transpareo Time Machine är vår öppen källkodsbaserade visningsapp för produktpass: Den bläddrar igenom versionshistoriken för ett pass och beräknar samtidigt varje signatur i betraktarens webbläsare, utan att fråga någon av våra servrar. Två exempelpass är offentligt tillgängliga där. Passet för en T-shirt har en signatur som täcker hela dokumentet, medan passet för ett batteri har fältspecifik verifiering.
Båda är öppna W3C-specifikationer: eddsa-jcs-2022 för signaturen som täcker hela dokumentet, ecdsa-sd-2023 för fältvis redovisning. Den som vill kan implementera dem. Arbetsinsatsen är anledningen till att många inte kommer att göra det: Signaturen som täcker hela dokumentet är betydligt billigare att bygga upp och driva, och den som endast levererar offentliga data klarar sig med den.
Att Time Machine behärskar båda metoderna är avsiktligt och kommer att förbli så. Den tillhör ingen plattform. En granskare som endast accepterar den dyrare metoden skulle vara ett verktyg för oss och för ingen annan.
Vem får tillgång till de skyddade fälten
Det är värt att fråga sig vem som överhuvudtaget får tillgång till något utöver de offentliga uppgifterna. Inte den tillfälliga köparen - hon får det offentliga passet. Det är återvinningsföretaget som bedömer vad ett begagnat batteripaket är värt, försäkringsbolaget som prissätter en risk, återvinningsföretaget som sorterar kemikalier, myndigheten som bygger upp ett ärende. Det är dessa läsare vars beslut påverkas av pengar eller säkerhet.
Och det är just dessa fält som i det vanliga tillvägagångssättet lämnas utan täckning. Den som har störst anledning att vilja ha ett kryptografiskt intyg får det just inte för de fält som ligger till grund för beslutet.
Vi anser att ett kontrollmärke bör betyda samma sak för alla. ”Kontrollerat av Transpareo” betyder samma sak på den utökade vyn hos en reparatör som på ett köpares offentliga certifikat: Varje visat område kommer från utfärdaren och har inte rörts sedan dess. Ett certifikat som endast gäller de offentliga fälten är ett halvcertifikat.
Mer än vad standarden kräver
Vi säger det rakt ut: Inget av detta är föreskrivet. EN 18239 kräver att åtkomsten kontrolleras, och ett filter på serversidan styr åtkomsten på ett felfritt sätt. Att även göra de offentliga fälten kryptografiskt verifierbara är något vi gör utöver det vanliga, inte en kryssruta som regelverket kräver av oss.
Just därför är det värt att skriva ner. Hela poängen med ett signerat pass är att ingen behöver lita på plattformen. Att ta bort den mellersta nivån som ett undantag återinför just det förtroende som signaturen var avsedd att eliminera.
Samma princip gör att ett fält kan glömmas bort
Att fastställa varje fält för sig medför en andra egenskap, och denna krävs faktiskt enligt europeisk lagstiftning. Den allmänna dataskyddsförordningen ger människor rätten att få personuppgifter raderade. En datamängd som signerats som en helhet kan inte uppfylla detta krav utan att förstöra sin egen signatur.
Eftersom varje fält här står för sig själv kan ett enskilt fält tas bort, medan resten fortfarande kan verifieras. Om personuppgifter av misstag hamnar i ett pass kan de tas bort helt, och passet förblir giltigt: ingen nyutfärdning, ingen avbruten historik. De fält som enligt lagstiftningen måste bevaras kvarstår; det som kan raderas kan raderas på begäran, även flera år senare.
Trots detta är det ett helt vanligt pass
Inget av detta gör passet till ett speciellt objekt som endast våra verktyg kan öppna. Det förblir en verifierbar referens i JSON-LD, det format som webbstandardvärlden strävar mot, och samma format som används av FN:s transparensprotokoll och övriga W3C-miljön.
Passet som en köpare skannar i webbläsaren är alltså samma objekt som en partner i datarummet kan läsa in, och varje granskar som följer standarden kan kontrollera det, inte bara våra. Den extra säkerheten kostar inte läsaren något och binder ingen till oss.
Varför det är tekniskt svårt
Först och främst, så att inget felaktigt intryck uppstår: vi har inte uppfunnit metoden. ecdsa-sd-2023 är en offentlig W3C-specifikation, kryptografin bakom den kommer inte från oss, och den som vill implementera den kan läsa om den. Det svåra är inte att komma på idén. Det svåra är att bygga den så att ett pass fortfarande kan verifieras om tio år. Det är där arbetet ligger, och om det finns något användbart att säga.
Skillnaden låter liten, men förskjuter grunden: En vanlig signatur beräknar utifrån dokumentets byte. Selektiv offentliggörande beräknas utifrån dess påståenden. Passet omformas till en standardiserad form före signeringen, där varje uppgift förekommer som en egen, fristående mening. Först då går det att utelämna en mening utan att skada de övriga.
Därmed får man ett problem som en bytesignatur inte har: samma standardiserade form måste återges exakt om tio år. Inte ungefär, utan tecken för tecken, annars stämmer inte verifieringen längre. Tre saker står i vägen för detta, och alla tre är obetydliga.
Siffror förlorar sin typ. Om man skriver en siffra som ren JSON går det förlorat under vägen vilken typ av siffra det var. Ett värde som 2,0 kommer tillbaka som 2 efter en omgång genom JSON. För en människa är det samma sak, men för den standardiserade formen är det en annan sats, och kontrollen misslyckas.
Beteckningar är ännu inte någon betydelse. För att den standardiserade formen ska uppstå måste varje fältnamn kunna hänföras till en entydig betydelse. Saknas en sådan försvinner fältet tyst vid omvandlingen. Det finns då kvar i passet, men verifieringen täcker inte det, och ingen märker det.
Betydelser finns vanligtvis på nätet. Denna koppling finns i ett vokabulär som de flesta verktyg hämtar från nätet vid kontrollen. Den som gör detta gör kontrollbarheten av sitt pass beroende av att en främmande adress fortfarande svarar om tio år, och dessutom oförändrad.
Hur vi löste det
Vi ## haråtgärdat de tre punkterna vid källan, istället för att fånga upp dem senare.
Typer. Varje värde skrivs med sin typ, och publiceringen avbryts så snart även bara ett enda typfritt tal dyker upp i den standardiserade formen. Felet upptäcks därmed där det kostar en rad, istället för år senare som en oförklarlig verifieringsfel.
Vokabulärer. Varje vokabulär som ett pass hänvisar till finns lokalt hos oss och hämtas aldrig via nätet. En okänd adress innebär ett tvärt avbrott vid signeringen, inte ett tyst återfall till ett tomt resultat.
Identifierare. Varje nod i dokumentet har en stabil identifierare, så att den standardiserade formen förblir reproducerbar, istället för att tilldela nya hjälpnamn vid varje genomgång.
Den mest känsliga delen ligger i ”Bring Your Own Key”. För varje utfärdande behövs en extra, kortlivad nyckel, med vilken de fält som kan offentliggöras signeras individuellt. Denna nyckel genereras och kasseras av utfärdaren själv. Om den fanns hos oss skulle vi kunna hitta på enskilda fält i efterhand, och utställarens signaturs oberoende skulle då bara vara en påstående. Vi kontrollerar det återkommande beviset mot den lagrade offentliga nyckeln innan vi litar på det.
Varje pass innehåller två sådana bevis, ett från utfärdaren och ett från Transpareo, och båda härleds oberoende av varandra för en läsares granskning. Två signaturer, två oberoende auktoriteter, även för ett enskilt offentliggjort fält.
För oss ligger denna insats på rätt plats. Vi har inte lagt till verifierbarheten i efterhand; plattformen har byggts upp kring detta ändamål redan från den första versionen. Varje pass signeras vid publiceringen och länkas till den föregående versionen. Det oföränderliga tioåriga arkivet är upprättat och träder i kraft så snart passen registreras i EU-DPP-registret. Att signera varje fält istället för hela blocket är en utvidgning av denna kärnfunktion, inte något som lagts till i efterhand på något som aldrig var avsett för detta.
Var vi står
Vi har valt att visa detta för varje läsare, eftersom en signatur ska betyda samma sak oavsett vem som tittar på den. För den som vill se hur det fungerar: De två demos som länkats till ovan kan verifieras direkt i webbläsaren, utan att behöva fråga en server.
Frågor om detta inlägg
Föreskriver någon standard en fältvis signatur?
Nej. EN 18239 kräver att åtkomsten kontrolleras per dataelement, och ett serverbaserat filter uppfyller detta krav fullt ut. Att göra de offentliggjorda fälten verifierbara utöver detta är vårt eget beslut och inte något krav som ställs av någon myndighet. Vi anser att insatsen är motiverad, eftersom hela poängen med ett signerat pass är att ingen behöver lita på plattformen - att utesluta mellanledet återställer just detta förtroende. Vilken status dessa standarder egentligen har framgår av vårt inlägg om de harmoniserade standarderna.
Vad är det egentligen som skiljer sig från ett serverfilter?
Det handlar inte om vem som ser vad, utan om vad som når fram. Båda metoderna visar läsaren exakt de fält som han har rätt till. Vid serverfiltrering anländer utdraget osignerat, vilket innebär att läsaren måste lita på att servern har valts ut på ett ärligt sätt och att ingenting har ändrats under överföringen. Vid fältvisa verifieringar anländer samma utdrag med en verifiering som offline kan spåras tillbaka till utfärdarens publika nyckel, utan att någon behöver fråga oss. För ett offentligt informationsblad är skillnaden av akademisk karaktär, men för det värde som en återvinningsföretagare baserar priset på ett begagnat batteri på är den avgörande.
Behöver läsarna någon speciell programvara för detta?
Nej. Passet förblir en verifierbar referens i JSON-LD, och verifieringen sker med den offentliga W3C-kryptosviten ecdsa-sd-2023, vilket innebär att alla verifierare som följer standarden kan kontrollera det. Vår öppen källkodsbaserade visningsapp, Transpareo Time Machine, beräknar varje signatur i läsarens webbläsare utan att behöva fråga någon av våra servrar, och hanterar medvetet även enkel signering av hela dokumentet. En verifierare som endast accepterar vår metod skulle vara ett verktyg för oss och för ingen annan.
För vem är de skyddade fälten egentligen tillgängliga?
Inte den tillfälliga köparen - hon får det allmänna intyget. Det är reparationsverkstaden med anmält berättigat intresse, återvinningsföretaget som bedömer värdet på ett begagnat batteripaket, återvinningsföretaget som sorterar kemikalier, försäkringsbolaget som prissätter en risk och myndigheten som bygger upp ett ärende - aktörer vars beslut påverkas av ekonomiska eller säkerhetsmässiga överväganden. EU:s batteriförordning föreskriver just dessa steg. Det är samtidigt just dessa aktörer som, enligt det vanliga tillvägagångssättet, inte får någon dokumentation just för de områden som deras beslut bygger på.
Vi publicerar endast offentliga uppgifter. Behöver vi det?
Förmodligen inte, och det säger vi också rakt ut. En signatur som täcker hela dokumentet, kryptosviten eddsa-jcs-2022, omfattar ett pass vars alla fält är offentliga, och den är betydligt billigare att bygga upp och driva. Det lönar sig att offentliggöra fälten så snart en andra målgrupp tillkommer, till exempel ett reparationsnätverk, en återvinningsaktör eller en myndighet, som du annars skulle överlämna osignerade utdrag till. Båda metoderna är öppna W3C-specifikationer, och båda används idag i Time Machine, på passet för en T-shirt och på passet för ett batteri.
Går det att radera personuppgifter i efterhand utan att passet förlorar sitt giltighetsvärde?
Ja, och detta krav ställs faktiskt i EU-lagstiftningen. Den allmänna dataskyddsförordningen ger individer rätten att få personuppgifter raderade, och en datapost som signerats som en blockenhet kan inte uppfylla detta krav utan att förstöra sin egen signatur. Eftersom varje fält här är fastställt för sig kan ett enskilt fält tas bort, medan allt övrigt fortfarande kan verifieras - ingen omutfärdande, ingen söndersliten versionshistorik. De fält som lagen kräver att man ska behålla kvarstår.
Vem har signaturnyckeln?
Varje pass innehåller två intyg, och ett av dem kan vara ditt. Varje utfärdande kräver dessutom en kortlivad nyckel som signerar de fält som kan offentliggöras var för sig; denna genereras och kasseras av utfärdaren själv, eftersom om den låg hos oss skulle vi kunna hitta på enskilda fält i efterhand, och utfärdarens signaturs oberoende skulle då endast vara en påstående. Vi kontrollerar den återkommande verifikationen mot den lagrade offentliga nyckeln innan vi litar på den. Varje pass innehåller därmed två verifikationer från två oberoende myndigheter, både för ett enskilt offentliggjort fält och för hela datamängden.
Kommer ett pass fortfarande att vara giltigt om tio år?
Det är just där som arbetet ligger. Vid selektiv offentliggörande räknas utifrån dokumentets innehåll istället för dess byte, vilket innebär att samma standardiserade form måste återges tecken för tecken ett decennium senare. Tre saker bryter mot denna regel, och vi har åtgärdat alla tre vid källan - varje värde skrivs med sin typ och publiceringen avbryts vid ett typfritt tal, varje vokabulär finns lokalt och hämtas aldrig via nätet, och varje nod har en stabil identifierare så att den standardiserade formen förblir reproducerbar. Det oföränderliga tioåriga arkivet är upprättat och träder i kraft så snart passet har registrerats i EU-registret, som sedan den 20 juli 2026 är i drift enligt genomförandeförordningen (EU) 2026/1778. Mer om detta i vår analys av registerförordningen.



