Att offentliggöra utan att förlora signaturen

Att offentliggöra utan att förlora signaturen

Den som får tillgång till skyddade fält måste oftast lita på plattformen. Vi signerar varje fält separat så att även de kan verifieras separat.

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ö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 notariens sigill. Så har vi byggt vår plattform. På de flesta plattformar är det ärliga svaret på frågan ovan: förtroende. Hos oss är svaret: bevis, för varje fält som läggs till först vid offentliggörandet. Den här artikeln förklarar varför denna skillnad är viktig och varför vi har valt den mer arbetskrävande vägen.

Alla uppfyller åtkomstregeln på samma sätt

EN 18239, den europeiska standarden för åtkomsträttigheter, säkerhet och konfidentialitet i DPP, kräver att åtkomsten styrs per fält: 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 i vårt inlägg om de harmoniserade standarderna.

Det vanligaste sättet att uppnå detta är med ett filter på servern. Servern vet vem som gör förfrågan, kontrollerar vad denna person får se och levererar exakt detta utdrag. Mer kräver inte standarden. Läsaren måste lita på att servern har valt ut informationen ärligt och inte har ändrat något under vägen. För ett offentligt informationsblad är detta tillräckligt. För ett värde som en återvinningsaktör använder som underlag för priset på ett begagnat batteri krävs det dock mycket tillit.

Det finns dock en hake som standarden inte tar hänsyn till: utdraget levereras utan signatur.

Den uppenbara lösningen är att signera uppgifterna. För de båda ytterligheterna fungerar en vanlig signatur bra: att signera den offentliga vyn och att signera den fullständiga datamängden. Hur detta går till i detalj beskrivs i avsnittet om signaturer och certifikat i DPP. I mitten bryter det samman. En signatur över hela dokumentet täcker exakt de fält som fanns där vid signeringen. Om man dessutom visar ett skyddat fält för en behörig läsare ligger detta fält utanför den signerade mängden och når honom utan skydd. Ingen signerar i förväg varje möjlig kombination av ”vem ser vad”, eftersom antalet kombinationer exploderar. Man faller tillbaka på filtret utan sigill, och den mellersta nivån bygger återigen på förtroende.

Signera varje fält separat

Det finns en bättre konstruktion, och det är på den vi bygger plattformen. Istället för att signera det färdiga dokumentet som en helhet fastställer tillverkaren varje fält enskilt i ett enda steg (för dem som är insatta i standarder: W3C-metoden ecdsa-sd-2023).

Varje vy börjar därmed med samma offentliga fält. Det som läsaren dessutom får se läggs till fält för fält, och vart och ett av dessa fält leder fortfarande till tillverkarens offentliga nyckel, offline, utan ny signering och utan förtroende för den instans som har sammanställt vyn. Fälten utan anspråk saknas helt enkelt. De är inte svärtade, utan finns inte alls där, och inget läcker ut om dem.

Ett genomlopp: reparationsverkstaden

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år gränssnitt med sin 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.

Innan verkstaden förlitar sig på detta fält verifierar dess programvara den medföljande signaturen mot tillverkarens offentliga nyckel. Om verifieringen går igenom, även för det extra fältet, vet verkstaden: Denna instruktion kommer tecken för tecken från tillverkaren, och ingen längs vägen har ändrat något i den. Om kontrollen inte går igenom lägger han undan hela dokumentet. Att han endast får de fält som han har rätt till är fortfarande vår åtkomstkontrolls uppgift. Det som är nytt är steget därefter: han kontrollerar själv om det som anländer är äkta, utan att fråga oss.

Varför ”obrott” är hela poängen

En intakt försegling säger inte att innehållet är sant. Det säger: Det här är exakt vad tillverkaren har skrivit, och sedan dess har ingen ändrat ett tecken i det. Därmed faller alla som bara har vidarebefordrat dokumentet bort från förtroendefrågan: mellanlagringen, nätverket, 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. Därför är det ingen gradvis skillnad om de extra fälten med sin försegling når fram till dig eller utan: Utan försegling är de inte något svagare ifyllda, de är inte ifyllda 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 ett passets versionshistorik och beräknar samtidigt varje signatur i betraktarens webbläsare utan att fråga någon av våra servrar. Passet för en T-shirt har en signatur som omfattar hela dokumentet, medan passet för ett batteri har fältvis godkännande.

Båda är öppna W3C-standarder som vem som helst kan implementera. Signaturen som täcker hela dokumentet är betydligt billigare att bygga och driva, och den som endast tillhandahåller offentliga data klarar sig med den. Att Time Machine behärskar båda metoderna är avsiktligt: Passet förblir ett vanligt standardformat som kan kontrolleras av vilket lämpligt verktyg som helst, inte bara vårt.

Vem har nytta av detta, och vad kräver standarden?

Vem får egentligen tillgång till något utöver de offentliga uppgifterna? Inte den tillfälliga köparen. 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. Läsare vars beslut hänger på pengar eller säkerhet. Och enligt det vanliga tillvägagångssättet just de läsare som inte får något märke för de fält som deras beslut bygger på. Vi anser att ett kontrollmärke bör betyda samma sak för alla: Varje fält som visas kommer från tillverkaren och har inte rörts sedan dess. Ett sigill som endast gäller för de offentliga fälten är ett halvt sigill.

Vi säger det rakt ut: Inget av detta är föreskrivet. EN 18239 kräver att åtkomsten styrs, och ett filter på servern sköter det felfritt. Att göra de offentliggjorda fälten verifierbara gör vi dessutom, eftersom hela poängen med ett signerat pass är att ingen ska behöva lita på plattformen. Att undanta den mellersta nivån återställer just det förtroende som signaturen var tänkt att undanröja.

Samma princip gör att ett fält kan utelämnas

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 datapost 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 är giltigt. 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 lagen kräver att man behåller finns kvar; det som kan raderas kan raderas på begäran, även flera år senare.

Varför det är svårt, och hur vi har löst det

Vi har inte uppfunnit metoden, det är en offentlig W3C-standard. Det svåra är inte att komma på idén. Det svåra är att bygga den så att ett pass fortfarande fungerar om tio år. En vanlig signatur beräknas utifrån dokumentets byte. Den fältvisa signaturen beräknas utifrån dess enskilda uppgifter, och för detta omformas passet före signeringen till en fast skrivform där varje uppgift står som en egen mening. Denna form måste återges tecken för tecken om tio år, annars passar ingen signatur längre. Tre obetydliga saker står i vägen för detta, och vi har löst alla tre vid källan.

Siffror förlorar sin typ. Ett värde som 2,0 återkommer som 2 efter att ha passerat genom ett vanligt dataformat. För en människa är det samma sak, men för den fasta skrivformen är det en annan sats. Hos oss lagras varje värde med sin typ, och publiceringen avbryts så snart även bara en siffra utan typ dyker upp.

Beteckningar är ännu inte någon betydelse. Varje fältnamn måste kunna spåras till en entydig betydelse i en ordlista, annars försvinner fältet tyst vid konverteringen och sigillet täcker inte över det. Hos oss finns varje ordlista lokalt och hämtas aldrig via nätet; ett okänt fältnamn stoppar signeringen istället för att tyst leverera ett tomt resultat.

Poster behöver fasta namn. Varje post i dokumentet har hos oss en fast identifierare, så att skrivsättet förblir detsamma vid varje genomgång, istället för att tilldela nya hjälpnamn varje gång.

Den mest känsliga delen ligger i tillverkarens egen nyckel. 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 tillverkaren själv. Om den fanns hos oss skulle vi kunna hitta på enskilda fält i efterhand. Varje pass bär två sådana sigill, ett från tillverkaren och ett från Transpareo, även för ett enskilt offentliggjort fält.

För oss är denna insats väl motiverad. Varje pass signeras vid publiceringen och länkas till den föregående versionen, och det oföränderliga tioåriga arkivet träder i kraft så snart passen har registrerats i EU-DPP-registret. Att signera varje fält istället för hela blocket är en utvidgning av denna kärnfunktion, inte ett tillägg.

Var vi står

Vi har valt att visa detta för varje läsare, eftersom en signatur bör betyda samma sak oavsett vem som tittar på den. För den som vill se hur det fungerar: De två exempelpass 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, den europeiska standarden för åtkomsträttigheter i DPP, kräver att åtkomsten styrs per fält, och ett filter på servern 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. Vilken status dessa standarder egentligen har framgår av vårt inlägg om de harmoniserade standarderna.

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 omfattar ett pass där alla fält är offentliga, och den är betydligt billigare att skapa och driva. Fältvis godkännande lönar sig så snart en andra målgrupp tillkommer, till exempel ett reparationsnätverk, en återvinningsaktör eller en myndighet, som du annars skulle överlämna utdrag utan sigill till. Båda metoderna är öppna W3C-standarder (ecdsa-sd-2023 för fältvis signatur), varje verktyg som stöder standarden kan verifiera dem, och båda körs idag i Transpareo 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 människor rätten att få personuppgifter raderade, och en datapost som signerats som en enhet 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 annat fortsätter att fungera utan att behöva utfärdas på nytt och utan att versionshistoriken bryts. De fält som lagen kräver att man ska behålla finns kvar.

Vem har signaturnyckeln?

Varje pass har två sigill, 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 tillverkaren själv, eftersom vi annars skulle kunna hitta på enskilda fält i efterhand om nyckeln fanns hos oss. Vi kontrollerar det returnerade sigillet mot den lagrade offentliga nyckeln innan vi litar på det. Varje pass har därmed två sigill från två oberoende instanser, både för ett enskilt fält som offentliggörs och för hela datamängden.

Kommer ett pass fortfarande att vara giltigt om tio år?

Det är just där som arbetet ligger. Den fältbaserade signaturen beräknas utifrån dokumentets enskilda uppgifter istället för dess byte, vilket innebär att samma fasta skrivsätt måste återges tecken för tecken ett decennium senare. Tre saker stör detta, och vi har åtgärdat alla tre vid källan. Varje värde lagras tillsammans med sin typ, alla ordlistor finns hos oss och hämtas aldrig via nätet, och varje post har en fast identifierare. Det oföränderliga tioåriga arkivet är upprättat och träder i kraft så snart passet har registrerats i EU-registret. Mer om detta i vår analys av registerförordningen.

Uppdateringar om åtkomstnivåer och intyg

Selektiv offentliggörande, signaturer och utvecklingen av DPP-standarderna - en månatlig sammanfattning direkt i din inkorg.