Erstellen eines Webauthentifizierungsmechanismus in der Blockchain

Wir leben in einer Zeit der Bequemlichkeit und alles, was die Zeit für einfache Aufgaben verkürzen kann, wird mit offenen Armen aufgenommen.

Eines der relevantesten Beispiele in der Online-Welt stammt aus dem Bereich der Benutzerauthentifizierung. Früher mussten wir eine Sammlung unserer Benutzer-IDs und Passwörter aufbewahren, jetzt können wir uns schnell und einfach über Facebook, Google und eine ganze Reihe anderer Dienste anmelden.

Aber ist das klug und gibt es bessere Alternativen??

In diesem Beitrag werden wir uns den aktuellen Stand der Benutzerauthentifizierung sowie einige interessante Alternativen ansehen, die jetzt aufgrund der Blockchain-Technologie verfügbar sind.

Probleme mit dem Status Quo

Wenn Sie einen eingeschränkten Bereich für Benutzer auf Ihrer Website entwickeln möchten, müssen Sie entscheiden, ob Sie ein eigenes System zur Identifizierung, Authentifizierung und Autorisierung der Benutzer entwickeln oder eine vorgefertigte Lösung verwenden möchten.

Bei dieser vorgefertigten Lösung wird davon ausgegangen, dass der Benutzer bereits über ein Konto auf einer bestimmten Plattform verfügt (Facebook, Yahoo, Google, Outlook oder auch nur eine E-Mail). In diesem Fall verwenden Sie einfach den entsprechenden Mechanismus (meistens den OAuth 2.0-Protokoll), um zu überprüfen, ob jemand, der versucht, sich mit einer externen Benutzer-ID bei Ihrer Site anzumelden, derselbe Benutzer ist.

Soziale Anmeldeoptionen

Zahlreiche Anmeldeoptionen für soziale Konten. Quelle: NPM

Diese Option ist einfacher zu implementieren, birgt jedoch ein Risiko für den Benutzer. Wenn etwas mit seinem Hauptkonto passiert (z. B. Facebook sperrt das Konto ohne Grund), verliert er auch den Zugriff auf seine Informationen auf Ihrer Website.

Wenn ich mich als Benutzer bei einer Website anmelden möchte, der ich noch nicht vertraue, muss ich dieser Website außerdem Zugriff auf meine persönlichen Daten gewähren. Dies beinhaltet private Informationen wie meinen Namen, meine E-Mail-Adresse oder mein Alter. Wenn die Site nur das Anmelden mit einem externen Konto unterstützt, stehe ich in der Tat vor einer ziemlich schwierigen Wahl.

Entweder lehne ich die Nutzung der Website ab oder opfere meine Privatsphäre.

Die meisten Benutzer opfern normalerweise ihre Privatsphäre und Anonymität und denken: “Es kann nichts Schlimmes passieren, ich habe nichts zu verbergen.” Leider beginnt die Mehrzahl der Angriffe auf einen unvorbereiteten Benutzer, die zu Geldverlusten führen, mit Worten wie:

“Was kann passieren, wenn ich diesen SMS-Code an einen Bankangestellten sende?” oder “Ist es wirklich so schlimm, diese Anforderungsheader an einen Mitarbeiter des technischen Supports zu senden?”

Normalerweise lernt man die Antwort auf solche Fragen, wenn es zu spät ist.

Wie Ethereum helfen kann

Wir haben bereits verstanden, dass es drei Hauptprobleme gibt:

  • Der Benutzer ist nicht verpflichtet, der von ihm besuchten Website zu vertrauen und möchte den Verlust seiner persönlichen Daten vermeiden
  • Die Site möchte ein externes Authentifizierungssystem verwenden, um das Speichern von Benutzerdaten und die damit verbundenen Sicherheitsausgaben zu vermeiden
  • Die vorhandenen externen Systeme, mit denen Websites Benutzer authentifizieren können, bergen die Gefahr der Zensur. Jedes Konto kann jederzeit ohne Angabe von Gründen und häufig ohne die Möglichkeit einer Wiederherstellung gesperrt werden

Könnten wir jedoch ein sicheres und dezentrales Netzwerk wie das von Ethereum verwenden, um diese Art der Authentifizierung zu unterstützen?.

Es handelt sich schließlich um ein kryptografisch sicheres Schlüsselpaar, bei dem der öffentliche Schlüssel die Brieftaschenadresse darstellt und der private Schlüssel niemals über das Netzwerk übertragen wird. Darüber hinaus ist es nur seinem Besitzer bekannt und es ist möglich, eine asymmetrische Verschlüsselung zur Authentifizierung von Benutzern zu verwenden.

Im einfachsten Fall können wir die Ethereum-Brieftaschenadresse als Benutzer-ID verwenden. Wenn der Benutzer jedoch den Zugriff auf seinen Schlüssel verliert, verliert er auch für immer den Zugriff auf das System.

Wenn Ihr Schlüssel irgendwie kompromittiert ist und ein Hacker in der Lage ist, darauf zuzugreifen, können Sie denselben Schlüssel nicht mehr verwenden, um den Besitz zu überprüfen. Der Hacker könnte sich lediglich auf allen Websites, für die Sie sich anmelden, als Sie selbst tarnen.

EtherAuth-Implementierung

Es gab einen interessanten Vorschlag, der von der MixBytes Team bei einem der neuesten Ethereum-Hackathons. Das war ihre EtherAuth Smart Vertrag Motor.

EtherAuth ist ein Versuch, ein dezentrales Anmelde- und Authentifizierungsprotokoll für Websites zu erstellen. Dies entspricht der Schaltfläche “Mit Facebook anmelden”, an die Sie sich wahrscheinlich gewöhnt haben. Es handelt sich um einen intelligenten Vertrag, in dem Benutzer-IDs und die zugehörigen Brieftaschenadressen gespeichert werden

Moskau Hackathon Mixbytes

Mitglieder des Mixbytes-Teams beim Moscow Hackathon. Bildquelle: Bankex

Die Benutzer-ID ist einfach eine UTF-8-Zeichenfolge mit einer Größe zwischen 2 und 32 Byte. Der Benutzer selbst erstellt es zu Beginn der Brieftasche und verwendet es später, um eine Site aufzurufen, die EtherAuth unterstützt.

Es wäre auch möglich, eine Einschränkung für die möglichen Zeichen in der Zeichenfolge hinzuzufügen. Man könnte es auf lateinische Zeichen und arabische Ziffern (Teilmengen der 7-Bit-ASCII-Codierung) beschränken, um die Möglichkeit der Erstellung visuell ähnlicher IDs einzuschränken.

Beim Erstellen eines Kontos bei EtherAuth wird ein Schlüsselpaar erstellt. Sie erstellen einen Autorisierungsschlüssel (authAddr) und einen Schlüssel zum Wiederherstellen des Zugriffs (recoveryKey). Der Name “recoveryKey” ist möglicherweise nicht der beste, da diese Adresse zur Verwaltung des Kontos und nicht nur zur Wiederherstellung verwendet wird.

Beim Erstellen stimmen beide Adressen mit der Adresse der Brieftasche überein, die die Transaktion zuerst durchgeführt hat. Benutzer, denen ihre Sicherheit am Herzen liegt, sollten einen separaten Hauptschlüssel erstellen und an einem Ort speichern, auf den online nicht zugegriffen werden kann.

Es ist vielleicht am sichersten, dies auf einem Stück Papier in einem Kühlraum aufzubewahren. Die Lagerung von Papier beruht auf einem sogenannten Wiederherstellungssaatgut. Wiederherstellungssamen sind ein Satz von 12 mnemonischen Wörtern, mit deren Hilfe die Schlüsselpaare für Ihre Brieftasche neu erstellt werden können.

Wenn Sie eine Brieftasche zur Authentifizierung verwenden möchten, wird außerdem empfohlen, eine andere Adresse als die zu verwenden, in der sich der gesamte Ether befindet. Auf diese Weise können Sie verhindern, dass Hacker Ihren Authkey mit Ihrem Vermögen auf die Brieftasche zurückführen. Derzeit können Sie beim Erstellen eines Kontos keinen separaten AuthKey und RecoveryKey erstellen. Dies könnte in späteren Iterationen des Smart-Vertrags aktualisiert werden. Wenn Sie sich weiter schützen wollen, dann überlegen Sie VPN-Dienste.

Verwenden von EtherAuth

Es gibt eine spezielle Webseite für die Interaktion des Benutzers mit dem Smart-Vertrag. Dort können Sie ein Konto erstellen, die Schlüssel ändern oder löschen. Um damit arbeiten zu können, muss der Benutzer das bekannte Browser-Plugin namens MetaMask installieren.

Wenn Sie bereits ein begeisterter Benutzer des Ethereum-Netzwerks sind, haben Sie MetaMask bereits verwendet und haben wahrscheinlich eine Vorstellung davon, wie es mit dem Netzwerk interagiert.

Der gesamte Benutzerauthentifizierungsprozess mit EtherAuth sieht folgendermaßen aus:

  • Die Site (Backend) kontaktiert den Smart-Vertrag und erhält die Ethereum-Adresse des Benutzers
  • Die Site (Backend) generiert und zeichnet eine Nachricht auf und fordert den Benutzer auf, diese Nachricht mithilfe der authKey-Adresse zu signieren
  • Der Benutzer auf der Site (Frontend) signiert die Nachricht mit dem MetaMask-Plugin und sendet sie an das Backend
  • Die Site (Backend) überprüft die Signatur. Wenn alles in Ordnung ist, wird die Sitzung des Benutzers aktiviert

Es ist wichtig, dass Authentifizierungsprüfungen in einer vom Benutzer nicht kontrollierten Umgebung stattfinden. Mit anderen Worten, alle Überprüfungen sollten auf einem Server statt im Browser eines Benutzers durchgeführt werden.

Unter den Problemen, die auftreten können, ist die Signaturüberprüfung im Frontend-Teil. Nicht alle Browser unterstützen elliptische Kurven. Es kann gelöst werden, indem dem Smart-Vertrag eine Funktion hinzugefügt wird, die das zurückgibt “Ecrecover” Ergebnis aus der Nachricht.

Einzigartige Online-Identität

Bild über Fotolia

Als Ergebnis verfügen Sie über einen praktikablen Proof-of-Concept eines dezentralen Authentifizierungssystems, das auf Ethereum basiert und im MetaMask-Plugin verwendet wird. Dieses System benötigt noch einige Änderungen, um die Anonymität des Benutzers zu gewährleisten. Der Benutzer hat die Möglichkeit, den Zugriff im Falle eines Verlusts seines Primärschlüssels wiederherzustellen (jedoch nicht im Falle eines Verlusts des Wiederherstellungsschlüssels)..

Das dezentrale System unterliegt keiner Zensur der großen Unternehmen wie Google oder Facebook. Wenn es notwendig ist, etwas zu zensieren, sollte jede Website es unabhängig implementieren. Dies würde sich jedoch nur auf die Interaktion des Benutzers mit dieser Website und nicht auf andere auswirken.

Das Ethereum-Netzwerk hat derzeit ziemlich langsame Transaktionsgeschwindigkeiten (beim Erstellen eines Kontos muss der Benutzer möglicherweise einige Minuten warten), aber Websites können die Daten abrufen und Benutzer recht schnell überprüfen.

Diese Lösung lässt sich gut skalieren, da viele Datenknoten vorhanden sind und jeder jederzeit einen weiteren hinzufügen kann. Die Komplexität der Implementierung einer solchen Lösung für Websitebesitzer ist nicht höher als die Komplexität der Implementierung von OAuth 2.0.

Fazit

Es ist wichtig anzumerken, dass dies noch die frühen Phasen des Projekts sind und es erst kürzlich beim Hackathon vorgeschlagen wurde.

Darüber hinaus sind die Adoptionsraten für Ethereum und Kryptowährungen im Allgemeinen immer noch nur ein Bruchteil derjenigen, die Facebook und Google verwenden. Es wird einige Zeit dauern, bis sich die Benutzer mit einer Ether-Adresse wohler fühlen als mit ihrem Facebook-Konto.

Die Krypto-Adoptionsraten steigen jedoch tatsächlich und die jüngsten Datenskandale bei Facebook haben dazu beigetragen, eine große Anzahl von Menschen zu entfremden. Es wird interessant sein zu sehen, ob eine dezentrale Authentifizierung eine praktikable Alternative sein kann.

Ausgewähltes Bild über Fotolia

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