Oprettelse af en webgodkendelsesmekanisme på Blockchain

Vi lever i en æra med bekvemmelighed, og alt, der kan reducere den tid det tager at udføre enkle opgaver, omfavnes med åbne arme.

Et af de mest relevante eksempler i onlineverdenen kommer fra brugerautentificeringsområdet. Tidligere var vi nødt til at opbevare en samling af vores bruger-id’er og adgangskoder, nu kan vi hurtigt og nemt logge ind via Facebook, Google og en hel række andre tjenester.

Men er det klogt, og er der bedre alternativer?

I dette indlæg vil vi se på den aktuelle tilstand af brugergodkendelse samt nogle interessante alternativer, der nu er tilgængelige på grund af blockchain-teknologi.

Problemer med Status Quo

Hvis du vil udvikle et begrænset område for brugere på dit websted, skal du vælge, om du vil udvikle dit eget unikke system med brugernes identifikation, godkendelse og autorisation eller bruge en færdiglavet løsning.

Den færdige løsning antager, at brugeren allerede har en konto på en eller anden platform (Facebook, Yahoo, Google, Outlook eller endda bare en e-mail). I dette tilfælde bruger du simpelthen den passende mekanisme (oftest OAuth 2.0-protokol) for at kontrollere, at en person, der prøver at logge ind på dit websted ved hjælp af et eksternt bruger-ID, er den samme bruger.

Indstillinger for social login

Talrige muligheder for social login. Kilde: NPM

Denne mulighed er lettere at implementere, men der er en risiko for brugeren. Hvis der sker noget med hans hovedkonto (for eksempel blokerer Facebook kontoen uden grund), mister han også adgangen til sine oplysninger på dit websted.

Desuden, hvis jeg som bruger ønsker at logge ind på et websted, som jeg ikke har tillid til endnu, står jeg over for behovet for at give dette websted adgang til mine personlige oplysninger. Dette inkluderer private oplysninger såsom mit navn, e-mail eller alder. Hvis webstedet kun understøtter login med en ekstern konto, står jeg virkelig over for et hårdt valg.

Enten nægter jeg at bruge webstedet eller ofre mit privatliv.

De fleste brugere ender normalt med at ofre deres privatliv og anonymitet ved at tænke “Intet dårligt kan ske, jeg har intet at skjule.” Desværre begynder de fleste angreb rettet mod en uforberedt bruger, der ender med monetære tab, med ord som:

“Hvad kan der ske, hvis jeg sender denne SMS-kode til en bankmedarbejder?” eller “Er det virkelig så slemt at sende disse anmodningsoverskrifter til en teknisk supportmedarbejder?”

Normalt lærer man svaret på sådanne spørgsmål, når det er for sent.

Hvordan Ethereum kan hjælpe

Vi har allerede forstået, at der er tre hovedproblemer:

  • Brugeren er ikke forpligtet til at stole på det websted, han besøger, og ønsker at undgå lækage af hans personlige oplysninger
  • Webstedet ønsker at bruge et eksternt godkendelsessystem for at undgå lagring af brugerdata og de tilknyttede sikkerhedsudgifter
  • De eksisterende eksterne systemer, der giver websteder mulighed for at godkende brugere, bærer risikoen for censur. Enhver konto kan til enhver tid blokeres uden at forklare årsagerne til det og ofte uden mulighed for gendannelse

Dog kunne vi bruge et sikkert og decentraliseret netværk som Ethereum for at hjælpe denne type godkendelse.

Det er trods alt et kryptografisk sikkert nøglepar, hvor den offentlige nøgle repræsenterer tegnebogens adresse, og den private nøgle overføres aldrig over netværket. Desuden er det kun kendt af ejeren, og det er muligt at bruge asymmetrisk kryptering til at godkende brugere.

I det enkleste tilfælde kan vi bruge Ethereum-tegnebogadressen som bruger-id. Men hvis brugeren mister adgang til deres nøgle, mister de også adgang til systemet for evigt.

Tilsvarende, hvis din nøgle på en eller anden måde er kompromitteret, og en hacker er i stand til at få fat i den, så kan du ikke bruge den samme nøgle til at bekræfte ejerskab længere. Hacker kunne bare maskerere som dig selv på alle de websteder, du tilmelder dig.

EtherAuth-implementering

Der var et interessant forslag, som blev præsenteret af MixBytes hold på en af ​​de seneste Ethereum hackathons. Dette var deres EtherAuth smart kontrakt motor.

EtherAuth er et forsøg på at lave en decentraliseret login og godkendelsesprotokol. Det er analogt med knappen “Log ind med Facebook”, som du sandsynligvis er vant til. Det er en smart kontrakt, der gemmer bruger-id’er og deres tilknyttede tegnebogadresser

Moskva Hackathon Mixbytes

Medlemmer af Mixbytes-holdet ved Moskva Hackathon. Billedkilde: Bankex

Bruger-id’et er simpelthen en UTF-8-streng med en størrelse på mellem 2 og 32 byte. Brugeren selv opretter den ved starten af ​​tegnebogen og vil senere bruge den til at komme ind på ethvert websted, der understøtter EtherAuth.

Det ville også være muligt at tilføje en begrænsning på de mulige tegn, der er inkluderet i strengen. Man kunne begrænse det til latinske tegn og arabiske tal (undersæt af 7-bit ASCII-kodning) for at begrænse muligheden for at oprette visuelt lignende ID’er.

Når du opretter en konto hos EtherAuth, oprettes et par nøgler. Du opretter en autorisationsnøgle (authAddr) og en nøgle til at gendanne adgangen (recoveryKey). Navnet “recoveryKey” er måske ikke det bedste, da denne adresse bruges til at administrere kontoen og ikke kun til gendannelse.

Når de oprettes, er begge adresser de samme som adressen på den tegnebog, der først foretog transaktionen. Brugere, der holder af deres sikkerhed, skal oprette en separat hovednøgle og opbevare den på et sted, der er utilgængeligt fra online.

Det er måske sikreste at opbevare dette på et stykke papir i et kølerum. Papiropbevaring er afhængig af, hvad der kaldes et nyttiggørelsesfrø. Gendannelsesfrø er et sæt på 12 mnemoniske ord, der når de bruges kan genskabe nøgleparene til din tegnebog.

Hvis du skal bruge en tegnebog til godkendelse, anbefales det også, at du bruger en separat adresse fra den, der gemmer al din Ether. Hvis du gør dette, kan du undgå, at hackere sporer din Authkey til tegnebogen med dine aktiver. For øjeblikket kan du ikke oprette en separat authKey og recoveryKey, når du opretter en konto. Dette er noget, der kan opdateres i senere gentagelser af den smarte kontrakt. Hvis du vil beskytte dig selv yderligere, overvejer du det VPN-tjenester.

Brug af EtherAuth

Der er en dedikeret webside beregnet til brugerens interaktion med den smarte kontrakt. Du kan oprette en konto der, ændre nøglerne eller slette den. For at arbejde med det skal brugeren installere det kendte browser plugin kaldet MetaMask.

Selvfølgelig, hvis du allerede er en meget ivrig bruger af Ethereum-netværket, har du allerede brugt MetaMask og vil sandsynligvis have en idé om, hvordan det interagerer med netværket.

Den samlede brugergodkendelsesproces ved hjælp af EtherAuth ser sådan ud:

  • Webstedet (backend) kontakter den smarte kontrakt og modtager brugerens Ethereum-adresse
  • Webstedet (backend) genererer og registrerer en besked og beder brugeren om at underskrive denne besked ved hjælp af authKey-adressen
  • Brugeren, der er på webstedet (frontend) underskriver meddelelsen ved hjælp af MetaMask-pluginet og sender den til backend
  • Webstedet (backend) bekræfter signaturen, og hvis alt er i orden, aktiverer det brugerens session

Det er vigtigt, at godkendelseskontrol skal finde sted i et brugerkontrolleret miljø. Så med andre ord skal alle kontroller udføres på en server i stedet for i en brugers browser.

Blandt de problemer, du kan støde på, er signaturbekræftelsen i frontend-delen. Ikke alle browsere understøtter elliptiske kurver. Det kan løses ved at tilføje en funktion til den smarte kontrakt, der returnerer “Ecrecover” resultatet af meddelelsen.

Unik online identitet

Billede via Fotolia

Som et resultat har du et levedygtigt proof-of-concept af et decentralt godkendelsessystem baseret på Ethereum og brugt på MetaMask-pluginet. Dette system har stadig brug for flere ændringer for at kunne give brugeranonymitet. Brugeren har mulighed for at gendanne adgang i tilfælde af sit primære nøgletab (men ikke i tilfælde af tab af gendannelsesnøgle).

Det decentrale system er ikke underlagt censur fra de store enheder, såsom Google eller Facebook. Hvis det er nødvendigt at censurere noget, skal hvert websted implementere det uafhængigt. Alligevel vil dette kun påvirke brugerens interaktion med dette websted og ikke nogen andre.

Ethereum-netværket har i øjeblikket ret lave transaktionshastigheder (når brugeren opretter en konto, kan det være nødvendigt at brugeren venter et par minutter), men websteder kan få dataene og bekræfte brugerne ret hurtigt.

Denne løsning skalerer godt, fordi der er mange datanoder, og enhver kan til enhver tid tilføje en anden. Kompleksiteten ved at implementere en sådan løsning for webstedsejere er ikke højere end kompleksiteten ved implementering af OAuth 2.0.

Konklusion

Det er vigtigt at bemærke, at dette stadig er de tidlige stadier af projektet, og det blev først for nylig foreslået ved hackathon.

Desuden er adoptionsraterne for Ethereum og kryptokurver generelt generelt kun en brøkdel af dem, der bruger lignende Facebook og Google. Det vil tage noget tid, før folk vil føle sig mere komfortable med at bruge en Ether-adresse end deres Facebook-konto.

Imidlertid vokser antallet af kryptooptagelser faktisk, og de nylige dataskandaler på Facebook har bidraget til at fremmedgøre et stort antal mennesker. Det vil være interessant at se, om decentral godkendelse kan være et levedygtigt alternativ.

Fremhævet billede via Fotolia

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me