Ga naar inhoud

Vertrouwen en bewijs

In de dataspace praten connectors rechtstreeks met elkaar. Er is geen centrale server die elk verzoek doorgeeft en controleert. Elke connector moet dus zelf vaststellen wie er belt en wat die partij mag, en elke partij moet achteraf kunnen aantonen wat er is gebeurd. Deze pagina volgt de keten die dat mogelijk maakt: van de aanmelding tot het bewijspakket.

De vertrouwensketen. De tekenbevoegde ondertekent het mandaat bij een QTSP, en EU DSS valideert die handtekening voor de Trust Authority. De Trust Authority geeft de connectors een lidmaatschapsbewijs en ontvangt vingerafdrukken van hun bewijslogs. Een tijdstempeldienst stempelt de ankers van de notaris. Bij elk verzoek controleert de rechthebbende het bewijs en de rol van de dataontvanger. Tekenbevoegdevan de organisatie,machtigt de connectorQTSPgekwalificeerdehandtekeningEU DSScontroleert dehandtekeningondertekenthet mandaatTRUST AUTHORITYRegisteraanmelding, KvK-controleLidmaatschapbewijs met rollenNotarisziet alleen hashesvia de CSC APIvaliderenDATAONTVANGEROptimaformaeigen DID en sleutelslidmaatschapsbewijseigen bewijslogtekent elk berichtRECHTHEBBENDEGebouwbeheer Noordeigen DID en sleutelslidmaatschapsbewijseigen bewijslogtekent elk berichtlidmaatschaplidmaatschapvingerafdrukbevestigingvingerafdrukbevestigingTijdstempeldienstgekwalificeerdelk uurondertekend verzoek met een tokende rechthebbende haalt het lidmaatschapsbewijs op en controleert de rol
De tekenbevoegde machtigt de connector bij de aanmelding. Daarna krijgt de connector een lidmaatschapsbewijs, en legt hij regelmatig een vingerafdruk van zijn bewijslog vast bij de notaris. De dikke lijn is een verzoek tussen twee connectors: de Trust Authority zit daar niet tussen. Klik op een connector of op de Trust Authority om die in de kijkdemo te openen.

Vier partijen dragen de keten:

  • De Trust Authority beheert het rulebook en het register van deelnemers, en geeft lidmaatschapsbewijzen uit en trekt ze in. Hij is ook de notaris die vingerafdrukken van de bewijslogs vastlegt.
  • De tekenbevoegde van een organisatie machtigt de connector om namens die organisatie te handelen.
  • Een QTSP, een gekwalificeerde verlener van vertrouwensdiensten volgens de Europese eIDAS-verordening, levert de gekwalificeerde handtekening bij de aanmelding en de gekwalificeerde tijdstempels op het bewijs.
  • De connector van elke deelnemer heeft een eigen identiteit en eigen sleutels, bewaart zijn lidmaatschapsbewijs en houdt een eigen bewijslog bij.

Elke connector heeft een eigen identiteit, een DID van het type did:web. Zo’n DID is een webadres. Op dat adres publiceert de connector een document met zijn publieke sleutels en de adressen van zijn diensten. Wie een handtekening van de connector wil controleren, haalt dat document op en gebruikt de sleutel die erin staat. De geheime sleutel verlaat de connector niet.

Wat de connector met zijn sleutel ondertekent, geldt volgens het rulebook als handeling van de organisatie. Daarom is de aanmelding zo zwaar: die legt vast dat deze DID echt namens deze organisatie spreekt.

TechnischSleutels en historie van het DID-document
  • De identiteitssleutel key-1 tekent protocolberichten, DCP-tokens en de vastleggingen in het bewijslog. De data plane heeft een eigen sleutel dataplane-1, alleen voor authenticatie: daarmee tekent hij verzoeken om data en de antwoorden, maar geen DCP-tokens of protocolberichten. Handtekeningen zijn ES256 (P-256).
  • De Trust Authority heeft key-1 voor authenticatie, issuer-1 voor lidmaatschapsbewijzen en statuslijsten, notary-1 voor ontvangstbewijzen en witness-1 voor het meetekenen van de historie van deelnemers.
  • Naast het did:web-document houdt elke connector een did:webvh-log bij: elke versie van het DID-document, getekend met een aparte updatesleutel (Ed25519, met een volgende sleutel vooraf vastgelegd). De Trust Authority tekent wijzigingen mee als getuige. Een bewijspakket bevat die logs, zodat een controleur ziet welke sleutel gold toen een handtekening werd gezet.

Aanmelden: de organisatie machtigt haar connector

Section titled “Aanmelden: de organisatie machtigt haar connector”

Een nieuwe deelnemer installeert een connector en vult onder Aanmelden de aanmelding in. Daarna gaat het zo:

  1. De connector stuurt de aanvraag naar de Trust Authority: de organisatie, het KvK-nummer, de gevraagde rollen, en de naam en het e-mailadres van de tekenbevoegde. De connector meldt ook zelf waar zijn identiteitssleutel staat. Het verzoek is ondertekend met de sleutel van de DID, zodat de connector bewijst dat hij die DID beheert.
  2. De Trust Authority maakt twee PDF’s: een verklaring waarin de organisatie het rulebook aanvaardt, en een mandaat voor de connector, met zijn DID, de rollen en een looptijd. De tekenbevoegde krijgt een persoonlijke link per e-mail.
  3. De tekenbevoegde ondertekent beide documenten bij een QTSP met een gekwalificeerde elektronische handtekening. De QTSP krijgt de documenten niet te zien, alleen een vingerafdruk ervan.
  4. De Trust Authority laat de handtekeningen controleren door EU DSS, de validatiedienst van de Europese Commissie. Alleen een gekwalificeerde handtekening telt.
  5. Een medewerker van de Trust Authority controleert in het Handelsregister van de KvK of de ondertekenaar bevoegd is de organisatie te vertegenwoordigen. Hij kan alleen rollen goedkeuren die in het ondertekende mandaat staan.
  6. Na de goedkeuring zet de Trust Authority de deelnemer in het register en biedt hij de connector een lidmaatschapsbewijs aan.

Waar staat de sleutel? Bij de aanvraag meldt de connector waar zijn identiteitssleutel staat: in een HSM, in Vault of OpenBao, in een bestand of in een omgevingsvariabele (buiten productie en acceptatie mag ook de database). In productie en acceptatie keurt de Trust Authority de rollen Gebouwbeheer, Klimaatoptimalisatie en Energieflexibiliteit, waarbij de connector data levert of installaties aanstuurt, alleen goed als de sleutel niet te exporteren is: in een HSM, of in Vault of OpenBao.

TechnischOndertekenen op afstand met de CSC API en EU DSS

De Trust Authority spreekt met de QTSP de API van het Cloud Signature Consortium (CSC, versie 1).

  1. De ondertekenaar logt in bij de QTSP, en de Trust Authority haalt zijn certificaat op.
  2. De Trust Authority vraagt EU DSS per PDF om de te ondertekenen bytes van een PAdES-handtekening en berekent daarvan de SHA-256.
  3. De ondertekenaar geeft toestemming voor precies die hashes, en de QTSP tekent ze (signatures/signHash).
  4. EU DSS zet de handtekeningen in de PDF’s (PAdES-BASELINE-B) en valideert ze. De Trust Authority eist de uitkomst TOTAL_PASSED en het niveau van een gekwalificeerde handtekening.

De link in de e-mail is standaard 14 dagen geldig, het mandaat standaard 730 dagen. Het mandaat bevat ook de hash van het rulebook, zodat vastligt welke versie de organisatie aanvaardde. Een aanmelding wordt pas goedgekeurd als de Trust Authority de did:webvh-historie van de connector heeft meegetekend.

In de kijkdemo zie je bij de Trust Authority het register van deelnemers, en bij Optimaforma de identiteit en het lidmaatschap. De aanmelding zelf doorloop je in de simulatie op je eigen computer, met een nieuwe connector die nog geen lid is.

Het lidmaatschapsbewijs is een digitaal bewijs (een verifiable credential) dat de Trust Authority ondertekent. Het noemt de dataspace, de organisatie, haar rollen en de datum van toetreding. Het verwijst ook naar het ondertekende mandaat, met de hash van het document, de versie van het rulebook en de einddatum. De documenten zelf blijven bij de Trust Authority.

Het bewijs is standaard 30 dagen geldig. Na twee derde van die tijd biedt de Trust Authority een nieuw bewijs aan. Komt dat aanbod niet, dan vraagt de connector er na driekwart van de looptijd zelf een aan. Een nieuw bewijs trekt het vorige in.

TechnischUitgifte en inhoud van het bewijs
  • De uitgifte volgt het Decentralized Claims Protocol (DCP) 1.0 van Eclipse, met het profiel vc11-sl2021/jwt: een W3C Verifiable Credential 1.1 als JWT, van het type MembershipCredential, met een verwijzing naar een statuslijst.
  • De inhoud: memberOf (buildinglinks, of buildinglinks-<omgeving> buiten productie), participant, roles, since, mandate (versie en hash van het rulebook, hash van het mandaat, einddatum) en de bevestigde didWebvh.

Bij elk protocolverzoek: bewijs en rol controleren

Section titled “Bij elk protocolverzoek: bewijs en rol controleren”

Stel dat Optimaforma bij Gebouwbeheer Noord een product voor klimaatregeling wil aanvragen. De connector van Optimaforma stuurt zijn verzoek met een token dat hij zelf ondertekent. De connector van Gebouwbeheer Noord doet dan het volgende:

  1. Hij controleert het token tegen het DID-document van Optimaforma.
  2. Hij haalt het lidmaatschapsbewijs op bij de connector van Optimaforma.
  3. Hij controleert dat de Trust Authority het heeft ondertekend, dat het niet is verlopen, dat het niet is ingetrokken en dat het voor deze dataspace geldt.
  4. Hij vergelijkt de rollen in het bewijs met de voorwaarde van het product. Vraagt de voorwaarde de rol Klimaatoptimalisatie en heeft Optimaforma die niet, dan weigert Gebouwbeheer Noord.

Dat gebeurt bij elk protocolverzoek: de catalogus opvragen, een aanvraag, het starten van een levering. Verzoeken om data zelf gaan met het toegangstoken van de levering (zie Van aanvraag tot levering).

Daarnaast ondertekent de afzender elk protocolbericht. De ontvanger bewaart het bericht met die handtekening in zijn bewijslog. Zo heeft elke partij de handtekening van de ander op precies het bericht dat binnenkwam, ook op de overeenkomst.

TechnischToken, presentatie en berichthandtekening
  • Het token is een Self-Issued ID Token: uitgever en onderwerp zijn de DID van de vrager, de ontvanger is de DID van de connector die gevraagd wordt. Elk token wordt één keer geaccepteerd.
  • De ontvanger zoekt de credential service op in het DID-document van de vrager, vraagt een presentatie op en controleert die tegen de vertrouwde uitgever.
  • Intrekken gaat met een W3C Bitstring Status List, ondertekend door de Trust Authority. Een connector bewaart die lijst hooguit 60 seconden.
  • De berichthandtekening staat in de header BL-Evidence: een JWS over de hash van het bericht, de methode, het pad, het proces, de afzender, de ontvanger en het tijdstip. Het Dataspace Protocol tekent berichten zelf niet; een connector van een andere leverancier negeert de header.

Houdt een deelnemer zich niet aan het rulebook, dan kan de Trust Authority hem schorsen. Een medewerker opent de deelnemer onder Deelnemers en kiest Schorsen. Het register zet de deelnemer op geschorst, en de Trust Authority markeert zijn lidmaatschapsbewijs op de statuslijst als ingetrokken.

Daarna stoppen twee dingen. Nieuwe protocolverzoeken van de geschorste deelnemer mislukken binnen een minuut, omdat elke connector de statuslijst controleert en die hooguit een minuut bewaart. En lopende leveringen stoppen: de connector van elke rechthebbende kijkt elke minuut in het register en beëindigt leveringen aan wie geen actief lid meer is. Ook erkenningen en aanwijzingen met de geschorste deelnemer staan stil. Heractiveren zet het register en de statuslijst terug.

De korte looptijd van het lidmaatschapsbewijs is een tweede vangnet. Een connector die de statuslijst niet controleert, weigert het bewijs toch zodra de looptijd voorbij is.

De Trust Authority staat niet in de route van de data. Lopende leveringen gaan dus door. Wel mislukken nieuwe protocolverzoeken zodra een connector de statuslijst niet meer kan ophalen, lukt goedkeuren van een aanvraag pas weer als het register bereikbaar is, en wacht het vastleggen van vingerafdrukken bij de notaris tot hij weer bereikbaar is. Het lidmaatschapsbewijs wordt ruim op tijd vernieuwd, zodat een korte storing daar geen gevolgen voor heeft.

Elke connector houdt een eigen bewijslog bij, met per vastlegging het proces waar het bij hoort: een aanvraag, een levering, een erkenning en aanwijzing. Elke vastlegging bevat de hash van de vorige. Zo ontstaat een keten: wie achteraf één vastlegging verandert, breekt de keten vanaf dat punt. De connector ondertekent elke vastlegging. Berichten van de andere partij bewaart hij met de handtekening van die partij. Het log van Gebouwbeheer Noord bevat dus handtekeningen van beide partijen, en Optimaforma heeft een eigen log met dezelfde berichten.

Ook verzoeken om data komen in het bewijs. De gateway van de dataontvanger ondertekent elk verzoek, en de connector die levert ondertekent elk antwoord. Die verzoeken worden per tien seconden samengevat tot één vastlegging. Inhoud komt niet in het log, alleen vingerafdrukken.

Elke minuut stuurt de connector, als er iets nieuws is, de laatste hash van zijn keten naar de notaris van de Trust Authority. De notaris ziet alleen die hash en geeft een ondertekend ontvangstbewijs met het tijdstip terug: een anker. Een anker dat de keten niet voortzet, of een oudere stand meldt, weigert de notaris.

De bewijsketen. De vastleggingen in het log van een connector zijn met hashes aan elkaar gekoppeld. De laatste hash gaat naar de notaris, die een ontvangstbewijs tekent. De ontvangstbewijzen van een uur komen in een merkle-boom, waarvan een tijdstempeldienst de top stempelt, later gevolgd door een archieftijdstempel. Het bewijspakket bundelt alles. BEWIJSLOG VAN GEBOUWBEHEER NOORDAanvraag ontvangenmet handtekeningOvereenkomsthandtekeningen van beideVerzoeken om datasamengevat per 10 secondenhash van de vorigehash van de vorigeOptimaformahoudt een eigen log bijondertekend berichtNotarisontvangstbewijs met tijdMerkle-boomalle ankers van een uurde hashTijdstempelgekwalificeerdArchieftijdstempelvernieuwt op tijdBewijspakketberichten, handtekeningenverzoeken om dataketen en DID-documentenankers en tijdstempelste controleren door iedereenper anker
Het bewijslog van één connector, en de weg van de laatste hash naar een gekwalificeerde tijdstempel. De onderbroken lijn is het bewijs dat de connector per anker bij de notaris ophaalt voor het bewijspakket.

Een bewijspakket downloaden en controleren

Section titled “Een bewijspakket downloaden en controleren”

Onder Bewijs in de connector kies je een proces. Met Bewijspakket downloaden krijg je een bestand met alles wat een ander nodig heeft om het proces te controleren: de vastleggingen met hun handtekeningen, de verzoeken om data, het stuk van de keten, de DID-documenten en hun historie, de ontvangstbewijzen van de notaris en de tijdstempels. Met Verifiëren controleer je het meteen in de beheeromgeving, en met Bewijspakket verifiëren controleer je een pakket dat je van een ander kreeg.

Controleren kan ook zonder connector, met de command line tool bl (bl evidence verify). Daarbij kun je zelf de identiteit van de Trust Authority vastleggen, zodat je niet alleen steunt op wat de maker van het pakket meelevert. Een handtekening telt met de sleutel die gold toen haar vastlegging bij de notaris werd verankerd, niet op het tijdstip dat de ondertekenaar zelf opgeeft.

In de kijkdemo zie je het bewijslog van Gebouwbeheer Noord onder Bewijs, en bij de Trust Authority de ankers van alle deelnemers.

De Trust Authority ziet standaard geen inhoud. Wel ziet hij de ankers, en, tenzij de deelnemer dat lager instelt, welk soort gebeurtenis er was, met wie en wanneer, zonder inhoud en met onherkenbaar gemaakte procesverwijzingen.

De inhoud van een proces krijgt hij alleen als een deelnemer die deelt, bijvoorbeeld bij een klacht of geschil. Een beheerder van de connector kiest dan bij het proces Delen met de Trust Authority, geeft een reden en geeft uitdrukkelijk toestemming namens de organisatie. De connector verankert eerst zijn laatste hash, maakt dan het pakket en zet de toestemming erin. Bij de Trust Authority staat het pakket daarna onder Gedeeld bewijs, waar een medewerker het kan verifiëren.

TechnischWat is een merkle-boom?

Een merkle-boom vat veel gegevens samen in één hash, de top. Elk gegeven wordt een blad: de hash van dat gegeven. Twee bladen samen geven een knoop, de hash van hun twee hashes. Zo gaat het verder naar boven, tot er één hash overblijft. Verander je één verzoek, dan veranderen zijn blad, elke knoop erboven en de top.

In de dataspace gebruiken twee onderdelen zo’n boom. De connector die levert zet de verzoeken van tien seconden in een boom, en alleen de top gaat als één vastlegging de keten in. De notaris zet de ankers van een uur in een boom en laat alleen de top stempelen. Die ene tijdstempel geldt dan voor elk anker in de boom.

Een merkle-boom met vier bladen. De hashes van verzoek A tot en met D zijn de bladen. H(AB) is de hash van H(A) en H(B), H(CD) die van H(C) en H(D), en de top is de hash van H(AB) en H(CD). Om verzoek C te bewijzen lever je H(D) en H(AB) mee. Daarmee rekent de controleur H(CD) en de top uit. Tophash van H(AB) en H(CD)één vastlegging in de keten,of één tijdstempelH(AB)van H(A) en H(B)H(CD)van H(C) en H(D)H(A)hash van verzoek AH(B)hash van verzoek BH(C)hash van verzoek CH(D)hash van verzoek Dhet blad dat je bewijstinclusiebewijs: de meegeleverde hashesrekent de controleur zelf uit

Om te bewijzen dat verzoek C in de boom zit, heb je de andere verzoeken niet nodig. Je levert C mee met de hashes naast zijn pad naar de top, hier H(D) en H(AB). Dat is het inclusiebewijs. De controleur rekent H(C) uit, dan H(CD) en dan de top, en vergelijkt die met de top in de keten. Is die gelijk, dan zat C in de boom en is het verzoek niet veranderd. Het inclusiebewijs heeft één hash per laag: bij duizend verzoeken zijn dat er tien, bij een miljoen twintig. Van A, B en D ziet de controleur alleen hashes, niet de inhoud. De boom volgt RFC 9162.

Een QTSP werkt onder toezicht van een nationale toezichthouder en staat op de vertrouwenslijst van de EU. Of een handtekening of tijdstempel gekwalificeerd is, volgt uit die lijst. In de dataspace levert een QTSP twee diensten.

Gekwalificeerde handtekeningen op afstand, bij de aanmelding. De tekenbevoegde heeft een gekwalificeerd certificaat bij de QTSP. De sleutel blijft bij de QTSP en tekent alleen na toestemming van de tekenbevoegde. Een gekwalificeerde elektronische handtekening heeft volgens eIDAS dezelfde rechtsgevolgen als een handgeschreven handtekening.

Gekwalificeerde tijdstempels, op het bewijs. De notaris is de Trust Authority zelf. Een ontvangstbewijs bewijst een tijdstip dus alleen voor wie de Trust Authority vertrouwt. Daarom zet de Trust Authority elk uur de nieuwe ankers in één merkle-boom en laat hij de top stempelen door een gekwalificeerde tijdstempeldienst. Via de boom geldt die stempel voor elk anker erin, en daarmee voor het bewijs van alle deelnemers. Een gekwalificeerde tijdstempel geeft het wettelijke vermoeden dat datum en tijd kloppen.

Een tijdstempel is zo sterk als het certificaat van de tijdstempeldienst. Voordat dat certificaat verloopt, zet de Trust Authority er een archieftijdstempel overheen. Zo blijft het bewijs ook na jaren te controleren. Welke QTSP de tijdstempels in productie levert, ligt nog niet vast.