Verifiable Credentials

Verifiable Credentials

Bèr berkes Kessels

Over deze presentatie

Over mij

  • Bèr berkes Kessels
  • @berkes - LinkedIn, Twitter, Fediverse
  • Werkt bij SURF aan verifiable credentials
  • Blog berk.es

Doel

  • Wat zijn Verifiable Credentials?
  • Zelf proberen vervalt 😥
  • Q&A

Wat zijn Verifiable Credentials?

  • Digitale identiteitsbewijzen
  • Cryptografisch geverifieerd
  • Zelfstandig en fraudebestendig
  • Open Standaarden

Europese initiatieven

Voordelen

  • Veilig, Privacy, Transparant, Autonoom
  • Geen centrale databases
  • Gebruiker heeft controle
  • Standaarden, dus uitwisselbaar

Concept: Selective Disclosure

  • Deel alleen attributen die nodig zijn
  • Attributen zijn ook cryptografisch ondertekend (RFC 9901)

Concept: Verifiable

  • Credential bestaat uit drie delen:
  • data - bijv naam, geboortedatum
  • header -

Demo: Linux User Group Nijmegen

  • Toegang tot members-only gebied
  • Digitale lidmaatschapscredential

Stappen voor de demo

  • Wallet app installeren
  • Credential in de wallet zetten
  • Inloggen met credential en wallet

Wallet app installeren

  • Kies een wallet app (apple, google, web)
  • Installeer en initialiseer (bij problemen, tijdens de pauze kijken we er verder naar)
  • Stel app in (Pin, biometrie, naam etc)
  • Kijk mee bij buren bij problemen

Credential aanvragen

  • Scan de offer QR-code
  • App onderhandelt details
  • Bevestig verzoek
  • Wacht op credential

Credential ontvangen

  • Waarschuwing voor onbekende issuer
  • Klik door waarschuwing
  • Ontvang “Linux User Nijmegen” card
  • Bekijk credential in wallet

Verificatie doorlopen

  • Scan verificatie QR-code
  • Deel credential
  • Wacht op bevestiging
  • Toegang verkregen

Overzicht

overview

Rollen

  • Issuer: Linux User Group Nijmegen - software op een server
  • Holder: Lid van de groep - wallet op telefoon
  • Verifier: Toegangssysteem - software op een server

Proces: Verkrijg een credential

  • Issuer creëert (Offer voor) credential - presenteert dit
  • Holder ontvangt offer - QR code, nfc, link etc.
  • Wallet onderhandelt met issuer - OID4VCI (Authlete guide)
  • (Wallet stuurt holder door naar authorizatieservice) - OpenID connect

Proces: Gebruik een credential

  • Website creeërt Verification (aka presentation) Request
  • Holder ontvangt dit - QR code, NFC, link, etc.
  • Wallet zoekt naar credentials die voldoen en toont aan gebruiker
  • Wallet stuurt de (delen van) credentials naar de verifier
  • Verifier controleert geldigheid
  • Verifier evalueert waarden uit credential (OIDC4VP)

Geldigheid

  • Geldige signatures?
  • Vertrouwen we de issuer?
  • Niet verlopen?
  • Niet ingetrokken?
  • Bevat het de attributen die we verwachten?

Huidige toepassingen

  • Leeftijdsverificatie bij automaten
  • Authenticatie op website met selective disclosure
  • Bedrijfsverificatie
  • Digitale diploma’s en certificeringen
  • YIVI (Voorheen IRMA)

Toekomstige toepassingen

  • Professionele certificeringen
  • Cross-border identiteit in EU
  • Evenemententickets met authenticatie
  • Bibliotheekpas, Sportschooltoegang, vuilstort
  • Trein-, bus, vliegtickets
  • Digitale sleutels voor hotel, vakantiehuis, deelfiets, deelauto

Selective disclosure

  • Alleen noodzakelijke informatie tonen: Attributen
  • Voorbeeld: Alleen leeftijdsbevestiging

Uitdagingen

  • Gebruiksvriendelijke interfaces
  • Aluhoedjes
  • Vrije keuze in client (wallet)
  • Betrouwbaarheid issuers
  • Digitale uitsluiting
  • Privacy en dataopslag

Toekomst

  • Standarisatie tussen wallets, issuers en verifiers
  • Wet- en regelgeving
  • Adoptie drivers
  • Nieuwe innovaties, nieuwe mogelijkheden
  • Integratie met bestaande systemen

Misschien toch nog demo?

Issuance

  1. Podman compose up
  2. Met Bruno credential config, credential en offer maken
  3. met qrcode een QR code hiervan maken
  4. scrcpy om mijn telefoon op scherm te tonen
  5. scan QR

Verification

  1. Met bruno verification request maken
  2. met qrcode QR code hiervan maken
  3. met bruno request uitlezen. Zie status.
  4. scrcopy om mijn telefoon op scherm te tonen
  5. met bruno request uitlezen. Zie status.

Q&A

  • Vragen en discussie

VC voorbeeld

  • demo: cat credential-example
  • demo: jwt decode $(cat credential-example) (JWT spec, jwt.io)

DID

DID spec. - manier om resolvable decentralized ids te gebruiken (tool to explore dids) - bijv did:web:berk.es -> https://berk.es/.well-known/did.json - of did:key:z6MkiieyoLMSVsJAZv7Jje5wWSkDEymUgkyF8kbcrjZpX3qd - of did:jwk:eyJhbGciOiJFZERTQSIsImNydiI6IkVkMjU1MTkiLCJraWQiOiJiUUtRUnphb3A3Q2dFdnFWcThVbGdMR3NkRi1SLWhuTEZrS0ZacVcyVk4wIiwia3R5IjoiT0tQIiwieCI6Ikdsbks5ZVBzODAyWHhBZ2xST1F6b0d1cm05UXB2MElGUEViZE1DSUxOX1UifQ - demo: didkit