Projekt Idee: Blockchain-basierter Login-Service ohne Passwörter

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Andy.

    Projekt Idee: Blockchain-basierter Login-Service ohne Passwörter

    Neu

    Hallo zusammen,

    ich möchte euch eine Projekt idee vorstellen, an der ich in letzter Zeit gearbeitet habe. Es handelt sich um einen Secure Login, ein Authentifizierungssystem, das Blockchain-Technologie nutzt, um sichere Logins zu ermöglichen – und das ohne klassische Passwörter.

    Grundidee ist es, eine sichere und gleichzeitig datenschutzfreundliche Alternative zu bestehenden Login-Verfahren zu bieten. Statt Benutzernamen und Passwörter zu speichern, basiert die Authentifizierung auf einem Blockchain-Eintrag, der einen Hash der E-Mail-Adresse des Nutzers enthält.

    Wichtig: Es werden keine persönlichen Daten wie die eigentliche E-Mail-Adresse oder Passwörter in der Blockchain gespeichert. Nur ein verschlüsselter Hash, der durch ein persönliches Zertifikat (eine Art privater Schlüssel) entschlüsselt werden kann.

    So funktioniert es:
    • Der Nutzer gibt seine E-Mail-Adresse ein und erhält einen Verifizierungslink.
    • Nach der Bestätigung des Links wird ein Block in der Blockchain erstellt, der den Hash der E-Mail sowie ein Zeitstempel-Feld enthält.
    • Gleichzeitig wird ein persönliches Zertifikat generiert, das der Nutzer herunterladen kann. Dieses Zertifikat enthält den Schlüssel, der für spätere Logins benötigt wird.
    • Beim Login entschlüsselt der Nutzer mit seinem Zertifikat den Blockchain-Eintrag und weist so seine Identität nach.
    Wichtige Eigenschaften:
    • Kein Speichern von Passwörtern: Nutzer müssen keine Passwörter erstellen oder merken.
    • Dezentral und manipulationssicher: Die Blockchain macht den Prozess transparent und resistent gegen Manipulationen.
    • Privatsphäre: Da nur der Hash der E-Mail gespeichert wird, bleiben persönliche Daten geschützt.
    • Flexibilität bei Zertifikaten: Geht ein Zertifikat verloren, kann ein neuer Block für dieselbe E-Mail-Adresse erstellt werden, da der Hash immer identisch bleibt.
    Aktuell befindet sich das ganze noch in der frühen Alpha-Phase. Nutzer können Blöcke erstellen und mit ihren Zertifikaten arbeiten, um die Grundfunktionen zu testen. Da die Sicherheit des Systems oberste Priorität hat, empfehle ich aktuell die Nutzung von Wegwerf-E-Mail-Adressen, da der Dienst noch nicht für produktive Umgebungen bereit ist.

    Da das ganze noch so früh in der Alpha Phase ist und ich nicht sicher bin ob dieses Konzept überhaupt funktioniert, würde ich gerne hier meine idee preisgeben und eure Meinungen dazu hören, eventuell auch die ein oder anderen finden die mit an dem projekt arbeiten möchten.

    Testen kann man das ganze hier: https://sml.smartli.me/ und auf meinem kleinen social network habe ich dafür eine Login Funktion erstellt vibx.social/index.php und hier gibt es gute wegwerf mails https://muellmail.com/

    Ich finde die Idee hat potential wenn sie gut umgesetzt wird.

    Viele Grüße
    Andy
    Meine Projekte Genesis Game Engine | GFX | smartli.me - Der smarte URL shortener

    Neu

    Ich nutze schon länger nur noch Passkeys wo es geht.
    Da muss ich mich in keiner zentralen Blockchain registrieren.
    Mein Privater Schlüssel bleibt bei mir.
    Nur bei Login wird mit dem Public Key eine Challenge erstellt die ich nur mit meinem private key entschlüsseln kann.
    Ist hier genauso Manipulationssicher.
    Und ich habe nicht irgendeine verschlüsselte Email irgendwo stehen.
    Grüße , xChRoNiKx

    Nützliche Links:
    Visual Studio Empfohlene Einstellungen | Try-Catch heißes Eisen

    Neu

    Und wieso jetzt eine Blockchain und nicht direkt einfach Anmeldung mittels Zertifikat? Im Grunde hast du doch nichts anderes als ein Standard Login -und Register, nur aber andere Art der Persistenz der Nutzerdaten. Welchen Vorteil erhoffst du dir damit?

    Andy schrieb:

    Flexibilität bei Zertifikaten: Geht ein Zertifikat verloren, kann ein neuer Block für dieselbe E-Mail-Adresse erstellt werden, da der Hash immer identisch bleibt.


    Achso, also kann ich die Mehrheit der Blöcke in der Blockchain einfach so beanspruchen.
    Und Gott alleine weiß alles am allerbesten und besser.

    Neu

    Was für Zertifikate werden denn aus gestellt?
    Wer hat den Privaten Schlüssel des Zertifikates?
    Wie verhinderst Du, dass jemand ein Zertifikat neu ausstellt, der die E-Mail-Adresse kennt?
    Was stellst Du Dir das Zertifikat-Handling vor?
    - Revoken von Zertifikate?
    - Laufzeit von Zertifikaten?
    - Blockieren von korrumpierten Zertifikaten?
    NB. Es ist doch schön, wenn man lesbare Namen vergibt. Siehe auch [VB.NET] Beispiele für guten und schlechten Code (Stil).

    Neu

    Hallo :) erstmal vielen dank für eure antworten. Wie gesagt das ganze Thema soll erstmal nur eine Diskussion bieten für ein mögliches Projekt, als eine alternative zu Passkey etc. Es geht primär darum das Webseiten Betreiber eine unique value bekommen mit der man sich identifizieren kann. Anstatt das man seine mail im plain text hinterlegt, wird dafür ein Sha256 hash davon genutzt. Das heißt das im falle eines "Datenlecks" oder warum auch immer niemand direkt was mit der mail anfangen kann.

    φConst schrieb:

    Achso, also kann ich die Mehrheit der Blöcke in der Blockchain einfach so beanspruchen.


    Das wäre tatsächlich möglich, dies müsste man natürlich irgendwie limitieren.

    INOPIAE schrieb:


    Was für Zertifikate werden denn ausgestellt?

    Im Prinzip handelt es sich um eine JSON-Datei, die den Hash sowie den 64 Zeichen langen Secret Key zum Entschlüsseln enthält. Hier liegt allerdings mein Bedenken: Sollte jemand Zugriff auf diese Datei erhalten, könnte sie selbstverständlich missbraucht werden.

    INOPIAE schrieb:


    Wer hat den privaten Schlüssel des Zertifikats?

    Es gibt keinen privaten Schlüssel, da die Verschlüsselung mit AES-256 erfolgt. Der Schlüssel bzw. Secret Key, den du zusammen mit dem "Zertifikat" erhältst, wird nicht gespeichert.

    INOPIAE schrieb:


    Wie verhinderst du, dass jemand ein Zertifikat neu ausstellt, der die E-Mail-Adresse kennt?

    Das ist grundsätzlich möglich, jedoch wird ein neuer Block erst erstellt, nachdem die E-Mail-Adresse bestätigt wurde. Das bedeutet, dass das bloße Eingeben einer fremden E-Mail-Adresse nicht ausreicht, um sie in die Blockchain einzufügen. Der Hash der E-Mail-Adresse wird zunächst temporär gespeichert, zusammen mit einem Identifier und einem Verifier-Token. Dieses Token wird per E-Mail an den Nutzer geschickt und muss entweder auf der Website eingegeben oder über einen automatisierten Link bestätigt werden.

    INOPIAE schrieb:


    **Wie stellst du dir das Zertifikats-Handling vor?

    Revoken von Zertifikaten?
    Laufzeit von Zertifikaten?
    Blockieren von kompromittierten Zertifikaten?**

    Das sind sehr gute Fragen, die ich mir ebenfalls gestellt habe. Aktuell werden die Blöcke in einer MySQL-Datenbank gespeichert. Der eigentliche Block basiert auf folgenden Feldern:
    Datenfeld,
    Timestamp,
    Previous Hash.
    Aus diesen drei Feldern wird der neue Hash erstellt, der dann im nächsten Block verwendet wird, usw. Dadurch sind diese drei Felder nicht änderbar.

    Man könnte jedoch ein zusätzliches Feld einführen, das zwar nicht direkt mit dem Block verbunden ist, aber angibt, ob der Block obsolet ist. Zusätzlich könnte man eine Option hinzufügen, die die Gültigkeitsdauer eines Zertifikats bestimmt. Diese Information würde dann zusammen mit dem Mail-Hash in den Datenblock gespeichert.

    Beim Verifizieren könnte geprüft werden, ob der darin enthaltene Timestamp plus die festgelegte Gültigkeitsdauer in der Vergangenheit liegt. Ist dies der Fall, ist das Token ungültig, und eine Anmeldung wäre nicht möglich. Dies würde die Sicherheit erhöhen, da jemand, der sich Zugriff auf die JSON-Datei verschafft, nur innerhalb der kurzen Gültigkeitsdauer Schaden anrichten könnte.

    Zum Beispiel könnte man ein "Zertifikat" ausstellen, das nur 90 Sekunden gültig ist. Allerdings würde diese Lösung die Blockchain erheblich vergrößern.
    Meine Projekte Genesis Game Engine | GFX | smartli.me - Der smarte URL shortener