WebAuthn (Web Authentication API) ist ein Web-Standard des W3C, der es Websites ermöglicht, Nutzerinnen und Nutzer mit Public-Key-Kryptografie statt mit Passwörtern anzumelden. Statt eines Geheimnisses, das der Server kennt, wird ein Schlüsselpaar genutzt: Der private Schlüssel verlässt das Gerät nie, der öffentliche Schlüssel wird beim Dienst registriert.

So funktioniert WebAuthn

Beim Registrieren erzeugt der Browser über die JavaScript-API navigator.credentials.create() ein neues Schlüsselpaar. Ein Authenticator (Trusted Platform Module, Sicherheits-Schlüssel oder Passwortmanager) hält den privaten Schlüssel und signiert Herausforderungen. Beim Anmelden fordert die Website per navigator.credentials.get() eine Signatur über eine Zufalls-Herausforderung an. Der Server prüft die Signatur mit dem öffentlichen Schlüssel.

Eigenschaften

  • Passwortlos: Der Dienst speichert keine Passwörter und keine Klartext-Geheimnisse.
  • Phishing-resistent: Die Signatur ist an die Domain gebunden; eine gefälschte Seite kann die Anfrage nicht auslösen.
  • Resident Keys (auffindbare Zugangsdaten): Der Schlüssel kann auf dem Authenticator gespeichert werden, sodass der Server keine Credential-ID vorhalten muss.
  • Attestation: Bei der Registrierung kann der Authenticator die Herkunft des Schlüssels nachweisen.

Levels und Einsatz

Die Spezifikation wurde im März 2019 als W3C-Empfehlung veröffentlicht; WebAuthn Level 2 folgte im April 2021 und erweiterte die API für weitere Anwendungsfälle. WebAuthn bildet zusammen mit dem CTAP2-Protokoll die Grundlage des FIDO2-Standards und damit von Passkeys. Unterstützt wird die API von allen modernen Browsern sowie von Apple, Google und Microsoft.

Verwandte Grundlagen: FIDO2, Passkey, Public Key, Zwei-Faktor-Authentifizierung, Digitale Signatur.