I den fysiska världen visar du oftast vem du är genom ett ID-kort, körkort eller pass, utfärdat antingen av en bank eller en statlig myndighet, och säkerheten baserar sig på att personen på bilden liknar ditt verkliga jag i kombination med att det är relativt svårt att tillverka ett eget, falskt ID-kort. Du kan också ibland behöva visa att en signatur du ritar på ett papper påminner om den som finns på kortet.
I den digitala världen visar du oftast vem du är med ett användarnamn och ett lösenord, ibland i kombination med en ytterligare faktor som en app på din telefon eller ett SMS. Eller så använder du kanske ett BankID som din bank utfärdat. Har du ett Facebook- eller Google-konto så kanske du använder det för att logga in på massor av sajter, för att slippa komma ihåg ett separat lösenord till varje sajt.
Gemensamt för alla ovanstående fall är att det är någon annan som “äger" din identitet. I fallen där du loggar in med Facebook eller Google blir det extra tydligt - skulle de få för sig att stänga ditt konto så har du på samma gång tappat din inloggning till mängder av andra tjänster som du kanske är beroende av på olika sätt. Ett annat problem är att du ger Facebook och Google väldigt mycket information om vilka andra tjänster du använder och när och hur. Valet står alltså mellan att komma ihåg mängder av olika användarnamn och lösenord eller att bara komma ihåg ett men lägga all makt i händerna på en enskild aktör. Vore det inte bättre med en enda inloggning som bara du själv och ingen annan äger?
Med Bitcoin fick vi för första gången en verkligt global, öppen och decentraliserad databas. Den kan inte användas för att lagra några större mängder data eftersom priset man betalar för total decentralisering är högt men det går ändå att använda den till en del andra saker än monerära transaktioner. Ett sådant användningsområde är att “tidsstämpla” information och på så sätt i efterhand kunna fastställa en kronologisk ordning, helt utan att bero på en central auktoritet, något som implementerats t.ex. i standarden Open Timestamps. En enda transaktion på Bitcoinnätverket kan innehålla en tidsstämpling av tusentals dokument.
Identitet och blockkedjan
Redan i februari 2018 presenterade Microsoft sina tankar kring att använda blockkedjeteknik för att åstadkomma det som kallas decentraliserade identiteter och för knappt en månad sedan blev Microsoft mer konkreta när de presenterade sitt projekt ION (Identity Overlay Network) som implementeras som ett lager ovanpå Bitcoins blockkedja. Men vad är då egentligen en decentraliserad identitet? Man kan säga att det handlar om att överföra samma egenskaper som Bitcoin har för pengar (öppet, censurresistent etc.) till din egen, personliga data. I botten finns något som kallas för en DID, vilket är en identifierare som är kopplad till det mest centrala kring din identitet, såsom publika nycklar och olika typer av pekare till tjänster där mer information kan hämtas (ett s.k. DID-dokument). En DID “förankras” i en publik blockkedja som Bitcoin, vilket bara betyder att någon kan kontrollera dess giltighet med hjälp av blockkedjan, inte att själva datan ligger där.
Så vad kan man göra med en decentraliserad identitet? Till att börja med så skulle alternativet “Logga in med Facebook” kunna ersättas med “Logga in med DID”. Rent tekniskt så skickar du din DID till tjänsten som sedan använder en s.k. universal resolver för att hämta informationen, d.v.s. DID-dokumentet, som är kopplat till din DID. Tjänsten kontrollerar därefter att du kan bevisa att du äger den privata nyckeln som motsvarar den publika nyckel som specificeras i DID-dokumentet och lyckas du med detta så betraktar tjänsten dig som inloggad. Var DID-dokumentet faktiskt finns lagrat kan variera men i Microsofts projekt ION så används det decentraliserade filsystemet IPFS för att lagra själva datan medan dess integritet säkras med hjälp av Bitcoins blockkedja.
ION använder ett protokoll som kallas Sidetrees för att “förankra” operationer rörande DID:s i blockkedjan. Vi kommer inte att gå in på detaljerna kring Sidetrees men principen med förankring bygger på samma idé som med Open Timestamps, nämligen att det är möjligt att ta en stor mängd data (i det här fallet skapandet och uppdaterandet av DID:s) och tidsstämpla i blockkedjan. På så sätt går det att bekräfta att rätt information rörande en DID hämtats även om inte informationen i sig finns på blockkedjan.
Attestering
OK, så nu finns en identitet, men vad betyder det egentligen när vem som helst kan skapa hur många identiteter som helst? Det löser ju problemet med att varje person måste hantera massor av olika inloggningar och att tjänster som Facebook vet onödigt mycket om dina förehavanden, men det säger ingenting om personen bakom identiteten. I vissa fall är detta helt OK, och ibland till och med just precis vad man vill, men i andra fall kan tjänsteleverantörer eller andra du interagerar med behöva veta mer om identiteten. Här kommer attestering in i bilden. Låt oss säga att du studerar på Lunds universitet. Universitetet skulle då med sin egen DID kunna signera en attestering som säger att din DID motsvarar en person som heter Adam Adamsson och är student på universitetet samt kanske t.o.m. att bilden (som du själv kopplat till din DID) stämmer överens med Adam Adamsson. En tjänst som t.ex. erbjuder studentrabatter kan nu se till att endast personer med en attestering från ett känt universitet kan logga in.
Motsvarande attesteringar skulle kunna utfärdas av t.ex. stater ("den här identiteten är svensk medborgare") men även för mycket mer informella påståenden som när någon idag på LinkedIn bekräftar att du är kompetent inom projektledning. På det här sättet byggs ett nätverk av tillit, s.k. web of trust, upp utan att någon central utfärdare existerar. Varje tjänst behöver bara få tillgång till den information som är relevant för just dem och din känsliga information ägs av dig själv.
Tanken är också att du ska kunna koppla godtycklig data till din identitet och själv avgöra vem som ska få tillgång till den samt eventuella begränsningar kring detta. Datan i sig kan finnas lagrad var som helst, krypterat hos en eller flera leverantörer som du valt ut eller t.o.m. på en server som du själv äger. Det här skulle t.ex. kunna vara din medicinska data som du sedan kan dela med just de läkare, sjukhus eller försäkringsbolag du själv väljer.
Baksidor
Det största praktiska problemet med den här typen av lösningar är detsamma som för Bitcoin, nämligen hur man löser säkerheten när individen själv ansvarar för sin känsliga information. Hur du ser till att du inte tappar bort eller blir bestulen på de privata nycklar som skyddar din Bitcoinförmögenhet är precis samma problem som för de privata nycklar som skyddar din identitet. Identitetsstöld är redan idag ett verkligt problem som kan få förödande konsekvenser. Microsoft noterar problemet och säger att de arbetar på idéer till lösningar.
Microsoft has a hypothesis describing how to empower users to recover their keys on their own. In the coming months, we will share details of our work and code with the community. We look forward to collaborating with you on this important challenge.
En möjlig lösning kan vara s.k. social recovery som vi sett HTC implementera i sin "krypto-mobil" Exodus, alltså där kontakter du litar på tillsammans kan återställa dina nycklar i ett läge när du förlorat dem. Det återstår dock att se hur väl sådana lösningar fungerar i praktiken.
Läs mer på microsoft.com/ownyouridentity.