Authenticatie is een groot probleem op internet. Het internetprotocol heeft geen authenticiteitslaag die onafhankelijk is van het platform waarop het wordt gebruikt, zoals telefoonnummers van provider kunnen wisselen. Het gemis van een authenticiteitslaag is al sinds het begin een probleem. Hoe bewijs je dat een gebruiker of bedrijf is wie hij of het zegt te zijn? Authenticatie is ook de basis voor de tegenwoordig in beleidsstukken populaire term self sovereign identity of ssi. Hoe kun je over je eigen online identiteit beschikken? En minstens zo belangrijk: hoe kun je ervoor zorgen dat anderen daar geen misbruik van maken?
Sinds een andere term, ‘blockchain’, populair werd, keken velen naar de mogelijkheden die deze min of meer decentrale systemen kunnen bieden. Het leek een ideaal onderdeel voor het decentraal orkestreren van een online identiteit. Toch kleven er nadelen aan, waarvan platformafhankelijkheid misschien wel het grootste is; de identifier is niet overdraagbaar en niet onafhankelijk of soeverein.
Dat moest anders, vond Sam Smith, bedenker van Key Event Receipt Infrastructure, ofwel KERI. Na te hebben meegedacht over een groot identiteitsproject gebaseerd op een blockchain, kwam hij erachter dat je helemaal geen blockchain of andere gedeelde database nodig hebt voor een online identiteit of online identifiers. Het enige wat je nodig hebt, is een geheime sleutel die aan de basis staat van je hele online identiteit. Of iets ingewikkelder: een publiek-geheime sleutelinfrastructuur, of pki, die resulteert in een zogeheten zelf-certificerende identifier, of scid.
'Internet heeft een authenticiteitsprobleem en KERI lost dat op'
Smith legt in een paar woorden uit welk probleem zijn systeem oplost. “Internet heeft een authenticiteitsprobleem en KERI lost dat op. Er zit geen authenticiteitslaag in het internetprotocol, waardoor er allemaal extra systemen nodig zijn, bijvoorbeeld bij het doen van betalingen, als je je ergens wilt inschrijven of voor het domeinnamensysteem DNS. Om bijvoorbeeld te weten of een internetdomein is wat het zegt dat het is, gebruiken we certificaten voor authenticatie, maar die hebben fundamentele gebreken. Wat je nodig hebt, is een vertrouwenslaag die alle toepassingen er bovenop kan vertrouwen. Dat vereist een protocol dat niet gebonden is aan een bepaalde vertrouwde entiteit, een vertrouwd platform of een vertrouwde infrastructuur. Het moet zero-trust zijn."
Voordat we dieper op KERI en de werking ervan ingaan, staan we kort stil bij de basis van KERI en veel andere zaken op internet: het gebruik van publieke en geheime sleutels, en het toepassen van zogenoemde hashingtechnieken.
Public key infrastructure
De basis van KERI bestaat uit het beheren van een geheime sleutel. Uit die sleutel kunnen allerlei andere sleutels gegenereerd worden. Dat leek altijd een onmogelijke opgave voor 'gewone' mensen, waardoor er allerlei systemen zijn bedacht om dat te omzeilen. Sinds de komst van de bitcoin en de hele cryptovalutahausse zijn mensen echter steeds meer gewend geraakt aan het omgaan met geheime sleutels. Ook zijn er steeds meer systemen bedacht om dat te vergemakkelijken. Dit betekent volgens Smith dat de meesten probleemloos zelf een geheime sleutel moeten kunnen beheren om zo hun key-eventlog of kel te beheren, de basis van KERI. Een kel houdt veranderingen van geheime en afgeleide sleutels bij en maakt dat je data kunt verifiëren. Key rotation voorkomt dat je geheime sleutel, door welke oorzaak dan ook, bekend wordt.
Dat klinkt allemaal ingewikkeld voor de buitenstaander, maar Smith weerlegt dat. “Het is zelfs relatief simpel”, zegt hij. “Simpel genoeg om helemaal naar de basis van het systeem te gaan en geen heel complexe materie in te hoeven duiken. Een beetje basiskennis van cryptografie, software, algoritmen en consensusmechanismen is al genoeg.” In essentie komt dat neer op betrekkelijk oude technologie: hashes en digitale handtekeningen of signatures.
Via Google Meet spreek ik Smith over zijn werk. Het is Hemelvaartsdag 2022 en hier negen uur ‘s avonds. Daar, in de Amerikaanse staat Utah, is het een uur 's middags. “Hoeveel tijd hebben we?”, vraagt hij. “Ergens tussen een half uur en drie kwartier”, zeg ik. Het werd ruim een uur. Het is boeiende materie en het spelletje van de hele tijd elkaars publieke sleutels ondertekenen en daarmee bewijzen dat je bent wie je bent, kun je eindeloos doorvoeren. Er zijn ook ontzettend veel interessante zijpaden te bespreken, zoals hoe het makkelijker te maken om in de toekomst geheime sleutels te beheren. Een ander zijpad betreft de vraag hoe je anderen in een bedrijf of instelling verantwoordelijkheid kunt geven voor specifieke zaken met slechts een digitale handtekening van iemand die dat mag beslissen. Of simpelweg hoe je kunt bewijzen dat je achttien jaar of ouder bent bij het kopen van alcohol, zonder andere informatie weg te geven.
Wat ging er vooraf aan het bedenken van KERI?
“Eind 2014 had ik een aantal collega’s die deel uitmaakten van een start-up die een reputatiesysteem wilde bouwen dat gebaseerd was op gedecentraliseerde technologie. The World Table heette het en ze geloofden dat het internet kapot was vanuit het oogpunt van sociale netwerken en mensen die commentaar gaven op websites. Trollen waren een groot probleem en ze zagen een mogelijkheid om gedecentraliseerde technologie te gebruiken om die problemen te repareren.”
“Mijn collega’s dachten dat ze kunstmatige intelligentie nodig hadden voor hun project. Van het een kwam het ander en ze vroegen mij om ernaar te kijken. Ik heb in de jaren 90, onder andere aan een universiteit in Florida, wat pionierswerk gedaan in reinforcement learning. Daarbij leert een kunstmatige intelligentie van zijn eigen ervaringen. Het leek heel interessant; ik verliet het bedrijf waarvoor ik werkte en sloot me aan bij de start-up.”
“Al snel kwam ik erachter dat je voor een online reputatiesysteem een gedecentraliseerd identiteitssysteem nodig hebt. Ik schreef een aantal whitepapers, maar voordat we van start konden gaan, was het geld op. In die whitepapers beschreef ik wel het idee van zelfcertificerende identifiers en dat idee bleef bestaan. Niet veel later kwam ik in contact met Evernym, een bedrijf dat zich bezighield met identity space. Ze hadden net de overstap gemaakt naar gedecentraliseerde identiteit. Ze kwamen mijn whitepaper tegen en huurden mij in. Ik schreef de whitepaper Identity Systems Essentials, het basisontwerp van wat later Sovrin werd. Evernym deed een initial coin offering en begon de opensourceorganisatie Sovrin.”
Smith ging op zoek naar een oplossing waarvoor geen blockchain nodig is
“Het idee van Sovrin is dat je een overal bruikbaar identiteitssysteem kunt bouwen met een publieke blockchain of public ledger. Alleen moet dan wel iedereen dezelfde ledger gebruiken en daar zit het grote struikelblok; je krijgt ledger wars.” Kort legt hij uit dat het zeker mogelijk is om verschillende blockchains en dergelijke aan elkaar te verbinden via bridges, roll-ups, atomic swaps en andere systemen, maar dat is in zijn ogen kunst-en-vliegwerk. Een blockchain is heel goed voor het volgen en uitvoeren van transacties en het wereldwijd ordenen daarvan in de tijd. Dat helpt tegengaan dat iets twee keer kan worden uitgeven, het bekende double spending problem, maar die ordening is niet nodig voor een identifier, die verwijst immers naar een identiteit. Smith ging op zoek naar een oplossing waarvoor geen blockchain of andere gedeelde database nodig is.
“In ons idee beheer je geheime sleutels die een identiteit, of preciezer, een identifier controleren. Dat bracht ons tot het ontwerpen van een protocol en geen platform. Dat protocol hebben we KERI genoemd. Een van de belangrijkste eisen voor het protocol was dat het overal op internet moet kunnen werken. Ook moet het onafhankelijk zijn van namespace en onafhankelijk van ledgers. Het geheel moet zorgen voor een verifieerbare datastructuur die ook nog eens overdraagbaar is. Met andere woorden: het maakt niet uit waar je het bestand host, iedereen kan de publieke sleutels en de key state verifiëren. Zo krijg je een echt gedecentraliseerd identifiersysteem, zonder gedeeld beheer. Deze essentiële eigenschap noemen we 'eindverifieerbaarheid'. Dit houdt in dat de toestand van de sleutel door iedereen, overal en op elk moment kan worden geverifieerd. Dit is de ultieme, basaalste vorm van zero-trust.”
Hoe KERI werkt
In essentie is KERI een type gedecentraliseerde pki. De eigenaar van een publieke sleutel of identifier kan bewijzen dat hij in het bezit is van de bijbehorende geheime sleutel waarbij de kel's de basis vormen van het systeem. Op deze manier kan iemand bewijzen eigenaar te zijn van een zelfcertificerend identificatiemiddel of scid. Een scid is een identifier waarvan met behulp van cryptografie bewezen kan worden dat dit de enige identifier is die gekoppeld is aan een specifieke publieke sleutel, zonder dat hiervoor een blockchain of andere databasestructuur nodig is.
Bij het aanpassen van sleutels kan iemand bewijzen de controle te hebben over de nieuwe publieke sleutels zonder op iemand anders te hoeven vertrouwen. Iedereen kan zijn eigen kel bewaren, maar anderen kunnen die ook bewaren en tekenen. Zo’n 'getuige' is een extra voorziening om sneller te bewijzen dat iemand valsspeelt als dat zich voordoet.
Om problemen rond blootstelling van geheime sleutels te voorkomen, zoals door diefstal, slordigheid, bruteforceaanvallen en dergelijke, wordt gebruikgemaakt van prerotation, ofwel een manier om de volgende geheime sleutel te beschermen. In de eigen wallet kunnen nieuwe sleutels voor toekomstig gebruik gegenereerd worden. Bij een KERI-identifier kunnen via de kel, verschillende typen events worden toegevoegd waarbij verschillende pki’s betrokken zijn. Toch is er op enig moment maar één geheime sleutel actief als beheerder van de kel. Dat actief zijn van maar een geheime sleutel, kan door prerotation. Zoiets zou niet op een blockchainsysteem kunnen; dat zou immers een transactie inhouden. Bij prerotation ondertekent een beheerder de volgende publieke sleutel digitaal en voegt dat bewijs van ondertekening toe aan de kel. Op die manier is het in de toekomst alleen mogelijk precies die aangekondigde sleutel te gebruiken en geen andere. Deze sleutel staat niet als publieke sleutel in de log, maar als hash, zodat de toekomstige publieke sleutels niet leesbaar zijn voordat ze gebruikt worden.
/i/2005205320.png?f=imagenormal)
Een voorbeeld: is de geheime sleutel van publieke sleutel A gecompromitteerd? Haal de volgende publieke sleutel B uit je wallet. Op die manier gebruik je de volgende geheime sleutel voor het ondertekenen van toekomstige documenten. Toekomstige geheime sleutels hoeven niet op dezelfde plek te staan als het actieve apparaat dat je op dat moment gebruikt, of zoals Smith zegt: je kunt dat allemaal opslaan in een kluis in een berg met een zooitje navy seals voor de deur.
Omdat KERI-identifiers en eventlogs zelfcertificerend zijn, kunnen ze elk systeem als getuige gebruiken, zolang het systeem in kwestie maar data kan opslaan en terugsturen. Dus andere kel's, maar ook blockchains, traditionele databases, bestandssystemen enzovoort. Op die manier vormen kel's ondertekende, gehashte datastructuren die een verifieerbare key state opleveren. Doordat alles op cryptografische koppelingen berust, kunnen KERI-identifiers op zo'n manier aan elkaar gekoppeld worden dat altijd bewijsbaar is wie of wat ooit een identifier heeft geverifieerd of wat voor toestemmingen aan een identifier zijn toegekend. Zo kan een overheid een betrouwbare bron zijn voor het verifiëren van een identiteit en een bedrijf een persoon identificeren als tekenbevoegd. Of juist die bevoegdheid weer intrekken. Zo is het mogelijk om een hele hiërarchie van identifiers te maken.
Dit werkt met de functies die KERI aan identifiers toevoegt: inception (de start), prerotation, rotation, delegation en revocation (het einde, intrekken). Daarnaast zijn er tal van afgeleide en nevenfuncties. Denk aan functies als ondertekenen, het verzenden van data die verifieerbaar blijft tot aan de bron van het vertrouwen: de publiek-geheime sleutelparen die de beheerder in zijn kluis in zijn berg heeft gegenereerd zonder tussenliggende partijen te moeten vertrouwen.
Hoe werkt dat dan met bijvoorbeeld iets als een persoonlijke identiteit? Hoe bewijs ik dat dan?
“Heel simpel, je maakt een verifieerbare koppeling tussen een natuurlijk persoon en een cryptoanonieme identifier.”
Wat is zo’n cryptonoumos identifier precies?
“Die is afgeleid van je publiek-geheime sleutelpaar in het begin, maar die identifier blijft bestaan. Dus, je kunt je sleutels roteren, maar je houdt dezelfde identifier. De kel zegt: 'Hier zijn de sleutels die de identifier controleren en die kan niemand anders maken.' Dan zegt een gerenommeerde instantie, de overheid bijvoorbeeld: 'Ik ga je uitdagen, natuurlijk persoon, om me te bewijzen dat jij de beheerder bent van deze identifier.' Dat kun je bewijzen door iets te tekenen met de geheime sleutel. Als ik je publieke sleutel heb, kan ik verifiëren dat je handtekening alleen van de geheime sleutel kan komen, wat bewijst dat jij daar de controle over hebt. Daarna zal ik, de overheidsinstantie, een certificaat uitgeven dat zegt: ‘Dit is ondertekend door de cryptoanonieme identifier van de overheid die universeel gepubliceerd wordt, zodat iedereen kan verifiëren dat het klopt.' Omdat de publieke identifier bewijst dat de natuurlijke persoon met deze naam en persoonlijk identificeerbare informatie de beheerder is van deze cryptoanonieme identifier, is deze persoon de beheerder van de geheime sleutels.”
'Veel mensen die veel verstand hebben van blockchains zeggen: Het kan niet!'
"We noemen het liever ‘autonome identifier’ dan cryptoanoniem, want dat is wat makkelijker uit te spreken en brengt het idee van zelfbestuur beter over: zelfbesturend omdat hij wordt bestuurd door de beheerder van de geheime sleutels, niet door een andere entiteit. Toch heeft de gerenommeerde entiteit voor het bepalen van jouw identiteit als natuurlijk persoon de verbinding gemaakt met je identifier. Hierdoor kunnen we zeggen: ‘Oké, officieel behoort deze identifier jou toe, natuurlijk persoon.’ Dus met dat certificaat kun je, als je bereid bent het te tonen, bewijzen wie je bent. Of je kunt het op een privacybeschermende manier toepassen. Zo kun je via cryptografische links bewijzen dat je bijvoorbeeld oud genoeg bent om drank te kopen, maar zonder dat je iets van jezelf hoeft op te geven. Gleif, de Global Legal Entity Identifier Foundation, doet dat niet voor natuurlijke personen, maar voor bedrijven en instellingen. Dat is vrij logisch; die tekenen heel wat de hele dag door.”
“Veel mensen die veel verstand hebben van blockchains zeggen: 'Het kan niet!' Nu is mijn uitdaging uit te leggen dat het wél kan. Inmiddels is dat doorgedrongen tot Gleif, een soort W3C voor identifiers.”
Hoe kan ik dat praktisch allemaal vormgeven als eindgebruiker? Wat heb ik nodig?
“Je hebt een apparaat nodig dat cryptografie kan doen, dus iets als een mobiele telefoon of een apparaat met vergelijkbare mogelijkheden. Daarin zit een secure enclave of iets dergelijks, dat is niet zo’n probleem.”
Wat als ik de boel kwijtraak?
“Je hebt een back-up van de geheime sleutels nodig, maar ook dat is geen probleem meer tegenwoordig. Een wachtwoordmanager, een hardcopyback-up, of mechanismen om geheimen te delen. Sinds de komst van de bitcoin en vele wallets zijn de mogelijkheden rond back-ups steeds beter geworden. Het belang van KERI is echter een goed protocol te zijn, niet om een goede userinterface te bouwen. Dat doen anderen.”
Hoe zit dat met mensen die dit soort systemen niet of niet meer kunnen bedienen?
“Dat is nou het mooie van delegeren. Als je daarvoor mogelijkheden inbouwt in identiteitssystemen, kun je bewijzen dat iemand gemachtigd is. De hele keten is verifieerbaar. Maar het is interessant, je hebt het nu over bruikbaarheid. Dat is iets dat wel opgelost wordt. Het probleem is: als je veiligheid opoffert voor bruikbaarheid, raak je het vertrouwen kwijt."
Dat laatste, vertrouwen, is volgens Smith een van de grootste problemen van internet; vertrouwen kun je niet over internet verplaatsen. "Web 3.0 heeft de bedoeling vertrouwen te vergroten, maar op dit moment is dat het laatste wat het doet. Iedereen denkt dat het op blockchains gebaseerd moet zijn, maar dat is niet waar. Het hoeft niet gebaseerd te zijn op een gedeelde ledger, het moet juist gebaseerd zijn op een verifieerbare datastructuur. Een type verifieerbare datastructuur is een blockchain, maar ik heb er ook een: een verifieerbare data tree, niet alleen een chain. Dus in mijn ogen is een verifieerbare data tree de oplossing, niet een gedeelde blockchain. Een blockchain is niet de oplossing omdat je te maken hebt met gedeeld bestuur en dat laatste is altijd een zwak punt. Het leidt tot hoge kosten en een lage doorvoersnelheid. Kijk naar ethereum. Op dit moment zijn de transactiekosten bizar. Nu proberen ze die omlaag te krijgen door middel van roll-ups. Daarbij worden allemaal ingewikkelde systemen doorgevoerd om de privacy te beschermen. Probeer maar eens zero knowledge proofs te managen…"
Dat laatste heeft ook veel te maken met juridische vraagstukken, zoals bij het kopen van producten en problemen daarmee. Smith legt uit dat dergelijke problemen om ontvangstbewijzen vragen, om een bonnetje. "Het heet niet voor niets Key Event Receipt Infrastructure", zegt hij. "Het basisidee is dat overeenkomsten gesloten worden met ontvangstbewijzen die verifieerbaar zijn. Zo hebben beide partijen een rechtsmiddel in handen."
Zo komt het allemaal vrij complex over…
"Toch is self sovereign identity relatief gezien vrij simpel. Het probleem is dat het inderdaad complex overkomt. Mensen horen het woord 'blockchain' en sluiten zich af, omdat ze denken dat het een grote zwarte doos is. Met KERI heb ik net alles uitgelegd tot aan de fundamenten. Die fundamenten vereisen een beetje kennis van cryptografie, een beetje van software en een beetje over consensusalgoritmen, maar het is in de verste verte niet zo complex als de meeste blockchainsystemen die voor ssi moeten zorgen."
Smith komt op dreef en haalt er nft's bij. Er zijn allemaal ingewikkelde gebruikersvoorwaarden voor de platforms waar je de nft's kunt halen, maar uiteindelijk kun je zo van een platform gegooid worden. "Je huurt in feite een nft van zo'n platform, je bezit niets. Je hebt simpelweg geen blockchain nodig voor een nft. Het is gewoon een chain of custody. Het is niet veel anders dan de key state. Als je een identifier hebt en die embed je in een hash van een self-certified identifier met een key state, dan kan ik de herkomst van de nft controleren. Een nft is immers niets anders dan een identifier. Als ik het eigenaarschap aan iemand anders wil overdragen, doe ik simpelweg een key rotation."
'Hoe dommer de technologie, hoe beter, mits nog voldoende om het probleem op te lossen'
En het privacyissue?
Authenticiteit staat bij Smith op één als belangrijkste onderdeel. Vertrouwelijkheid volgt daar direct op en privacy komt in zijn ogen pas na die twee. Hij noemt dit PAC: Privacy, Authenticity and Confidentiality. Je kunt twee van de drie op een hoog niveau hebben; volgens Smith is privacy altijd het zwakke punt. Het is altijd lastig om dat te blijven beschermen. Als je daarvoor door te veel hoepels wilt springen, maak je het onmogelijk. "Nu mijn privacy beschermen is niet zo moeilijk, maar die informatie over tien jaar ook beschermen, is heel lastig. Daarom kies ik structureel voor sterke authenticiteit en iets minder sterke privacybescherming. Als ik met mensen omga, verlies ik al een stukje privacy. Dus als ik dat voor altijd wil beschermen, moet ik op een eiland gaan zitten, alleen. Waar het om gaat, is dat ik niet misbruikt wil worden door derden. Als ik met een partij in zee ga, wil ik niet dat een derde mijn data kan misbruiken. Ik deel informatie met een partij om samen een activiteit te kunnen ondernemen. Daarvoor moet die partij bepaalde dingen van mij weten. Ik moet hen kunnen vertrouwen en zij mij, heel specifiek voor de transactie die we aangaan. Nu wordt die relatie structureel misbruikt door derden, partijen die niets van onze relatie hoeven te weten. Vertrouwelijkheid is goed genoeg om misbruik door derden te voorkomen."
"Het gaat er niet om de laatste, coolste techniek te gebruiken die ook nog eens heel moeilijk is om goed te implementeren. Het principe van KERI is dan ook: een probleem oplossen in de echte wereld met de minimaal benodigde technieken. Hoe dommer de technologie, hoe beter, mits nog voldoende om het probleem op te lossen. 'Domme techniek' is vrij beschikbaar, voor iedereen inzichtelijk en makkelijk te implementeren. In ons geval: slechts hashes en digitale handtekeningen. Het zullen hoogstwaarschijnlijk de blockchainloze oplossingen zijn die in de nabije toekomst leiden tot veilige identifiers voor authenticatie op het web."