Verifierbara intyg

En introduktion

Johan Ekblad
Bengt Hellström

Hur verifierar man intyg och bevis idag?

  • Manuellt - visa upp originalintyg eller skicka kopior
    • Kan förfalskas/förvandskas, kräver manuellt arbete
  • Utfärdaren visar upp intyget efter att man angett personnummer + en kod
    • Någon måste jämföra intyget man fått med det som visas upp
  • Utfärdaren verifierar en digital signatur i beviset
    • Dokumentet laddas upp till utfärdaren och verifieras där
Smartare
Smartare
Parter, verifierbara intyg

Separerar utfärdandet från presentation

Privathet
Individ
Individ
vc vp

En standard för detta heter SD-JWT.

  • Utfärdaren bestämmer vilka fält som skall kunna döljas
  • Skapa ett salt, fältnamn och värde samt checksumma (för alla valbara fält)
  • Utfärdaren skapar SD-JWT som innehåller alla checksummor och en signatur
  • Innehavaren skapar en presentation och väljer vissa av dessa fält
  • Alla valbara fält (inkl salt) + SD-JWT skickas alltid till verifieraren
  • Verifieraren kan verifiera att signaturen stämmer

Exempel på hur selektivt utlämnande i SD-JWT fungerar

Utfärdaren skapar:

{
  "name": "Marit Berg",
  "birthDate": "1950-08-21"
}

För alla fält som kan utelämnas skapar utfärdaren:

h1 = hash(["salt1", "name", "Marit Berg"])
h2 = hash(["salt2", "birthDate", "1950-08-21"])

Utfärdaren skapar också en JSON (SD-JWT) som signeras
och innehåller hash:arna h1,h2

{
  "iss": "did:gov:transportstyrelsen",
  "type": "DriversLicense",
  "iat": 1700000000,
  "_sd_alg": "sha-256",
  "_sd": [
    "h1",
    "h2"
  ]
}

Följande information lagras i plånboken tillsammans med den signerade SD-JWT:

["salt1","name","Marit Berg"]
["salt2","birthDate","1950-08-21"]

Om verifieraren bara ber om namnet, inte födelsedatum, så skickas bara denna info i presentationen + den signerade SD-JWT

["salt1","name","Marit Berg"]

Hur kontrollerar verifieraren informationen?

  • Först verifieras signaturen på SD-JWT
  • hash:en räknas ut för de fält som skickats med i presentationen
    h1=hash(["salt1","name","Marit Berg"])
    
  • kontrollera att hashsumman h1 återfinns i SD-JWT
Individ

OID4VCI

  • Plånboken får ett erbjudande om ett intyg från en utfärdare
  • Plånboken autenticerar användaren emot utfärdaren
  • Plånboken begär ett intyg av utfärdaren
  • Utfärdaren skapar intyget
  • Utfärdaren skickar intyget till plånboken

OID4VP

  • Verifieraren skapar en presentation request
  • Den skickas till plånboken (QR-kod, deep link)
  • Rätt intyg och samtycke ges i plånboken
  • Plånboken skapar en verifierbar presentation
  • Presentationen skickas till verifieraren
  • Verifieraren verifierar denna

Pilotprojekt inom EU för implementation av digital plånbok och olika typer av utfärdare som kan utfärda verifierbara intyg, exempelvis:

  • EU hälsokort
  • Utbildningsinformation (Kurser, Moduler, Bevis)

Standarder

  • EMREX (ELMO )
  • DC4EU (ELM)

Implementation (ELMO->ELM->digital plånbok)

  • Hämta ELMO från EMREX-nätverket
  • Konvertera till ELM
  • Skickade utfärdare
  • Ta emot och visa QR-kod
  • Importera till plånbok

Frågor?

Notes: Presentera er

Notes: Bengt presenterar: Hur visas intyg och bevis idag?

Notes: Vi vill kunna: - Visa meriter snabbt (scanna en QR-kod) - Vara säkra på att de är äkta - Slippa manuell hantering - Inte lämna ut mer information än mottagaren behöver

Notes: Här kommer verifierbara intyg in, det är ett digitalt intyg som nästan kan innehålla vad som helst: - Utfärdaren kan vara en myndighet eller egentligen vem som helst - Ägs av dig. Du väljer när och hur mycket information du lämnar ut - Kan verifieras automatiskt (utan utfärdarens vetskap)

Notes: Utfärdaren: skapar intyget, kan även hålla ett utfärdarregister som kan användas vid revokering Innehavaren: tar emot intyget från utfärdaren, sparar det normalt i en elektronisk plånbok Verifieraren: Verifierar att intyget som innehavaren visar upp är äkta Modellen är decentraliserad och placerar innehavaren av ett intyg i centrum. Den är innehavaren som bestämmer vilken information som skall lämnas ut och till vem. Modellen gör att utfärdaren inte behöver veta när ett intyg verifierats för en innehavare

Notes: Separerar den information som utfärdaren lämnar om innehavaren från den presentation som innehavaren ger ut till verifieraren. Det kan alltså vara olika saker. Exempelvis om du har ditt körkort som transportstyrel- sen utfärdat i din plånbok och om polisen vill kontrollera det kanske det räcker med att besvara frågan om du har ett giltigt körkort eller ej (du behöver inte presentera ditt namn eller personnummer om inte polisen ber om det)

Notes: Ägarskapet flyttas från utfärdaren till individen. Tidigare har utfärdaren "ägt" informationen och man har varit tvungen att vända sig till utfärdaren för att få ut den information man behöver. Eller få den verifierad Förbättrad mobilitet för individen

Notes: Gäller både utfärdare och verifierare Digitala signaturer gör att informationen inte kan förändras efter att utfärdaren signerat den. Inga manuella steg

Notes: Johan presenterar Till vänster är ett exempel på verifierbart intyg, i detta fall ett körkort. De innehåller alltid lite metadata, olika anspråk och bevis. Till höger är en verifierbar presentation. En verifierbar presentation är en transformation av ett verifierbart intyg. Detta är ett exempel på nollkunskapsbevis. Det finns andra exempel när man istället utlämnar information från det verifierbara intyget. "selective disclusures" eller "selektivt utlämnande". För att verifieraren skall kunna verifiera detta krävs att fälten som selektivt skall kunna utelämnas behandlas på ett visst sätt av utfärdaren

Notes: Utfärdaren bestämmer vilka fält som skall kunna döljas För varje fält som skall kunna döljas skapas ett salt, fältnamn och värde. värdena för dessa konkateneras, Base64-kodas, hash:as När innehavaren skapar en presentation till en verifierare väljs kanske endast vissa av dessa valbara fält (+ fältnamn och salt) att skickas med. förutom dessa skickas även signaturen SD-JWD med vilket gör att verifieraren kan verifiera att hash- summan finns i den signerade SD-JWT:n och att signaturen för denna stämmer (den har ju den publika nyckeln för utfärdaren)

Notes: Selektivt utlämnande (som vi pratat om) Presentationerna kan göras så att de är olika varje gång en verifierare skall verifiera informationen. Vilket gör att verifieraren inte kan veta om två olika presentationer kommer från samma person eller ej Nollkunskapsbevis. Själva värdet skickas inte till verifieraren men ett bevis på att en viss egenskap är uppfylld, exempelvis att man är över 18 år gammal Med SD-JWT-signaturer är det svårt att uppnå de två sista men det finns ett nytt signeringsschema som heter BBS+ som klarar de två sista

Notes: OpenID for Verifiable Credential Issuance Beskriver hur en utfärdare rent tekniskt ger ut verifierbara intyg. Plånboken får ett erbjudande om ett intyg från en utfärdare (erbjudandet innehåller vilka typer av verifierbara intyg som utfärdaren kan skapa, (SD-JWT, JSON-LD, ISO mdoc) och autenticerar sig emot denna mha OAuth/OpenID.

Notes: OpenID for Verifiable Presentation Verlfieraren kontrollerar utfärdarens signatur Att intyget giltighetstid stämmer Att presentationen motsvarar utsprungliga anropet

Notes: Bengt presenterar: Projektet är finansierat av eu kommissionen 11 nationer iblandad i utveckling av olika delar av infrastrukturen. Vi deltog i ett av delprojekt om kunna överföra utbildningsinformation till plånboken. Vi bildade ett utvecklingsteam bestående av Johan och jag tillsammans med 2 utvecklare från Norska motsvarigehten till Ladok. Projektledda av en Tysk.

Notes: Vad är Emrex: Är ett samarbete mellan 9 nationer för att digitalt utbyta information om studenters meriter. Det är studenten själv aktivt gör överföringen EU-kommissionen har i rapport nämnt Emrex som ett väl fungerande exempel inom EU. Det är den standard som Ladok har bäst stöd för idag. Formatet som EMREX idag använder sig av är XML-baserat och kallas ELMO. Det finns ett antal försökt till att standardisera överföringar av utbildningdata I DC4EU-projektet användes ett annat format som heter ELM (European Learning Model). Det är ett format i JSON-LD som består av två typer (VerifiableCredential och EuropeanDigitalCredential) som beskriver vilka fält som kan förekomma

Notes: Vårt tillvägagångssätt för att implementera verifierbara intyg blev att använda det befintliga infrastrukturen runt EMREX Vi byggde en konverterare för att konvertera från ELMO till ELM för att skapa ett verifierbart intyg och likaså åt andra hållet när man importerade meriter från sin digitala plånbok Utfärdaren har Sunet skrivit (De var inblandad i ett annat delprojekt), men skulle kunna host:as av ex-vis Ladok QR-koden används sedan för att importera meriterna i en plånbok