WebAuthn
Abkürzung | Webauthn |
---|---|
Status | W3C -Empfehlung (REC) |
Jahr begann | 31. Mai 2016 |
Erstmals veröffentlicht | 31. Mai 2016 |
Letzte Version | Stufe 2 Empfehlung 21. April 2021 |
Vorschau -Version | Stufe 3 (Fpwd) 15. Dezember 2021 |
Organisation | FIDO2 -Projekt (Fido Alliance und W3c) |
Komitee | Webauthentifizierung Arbeitsgruppe |
Redakteure | Aktuelle Redakteure
Frühere Herausgeber
|
Grundstandards |
|
Domain | Authentifizierung |
Webauthentifizierung (Webauthn) ist ein Webstandard veröffentlicht von der World Wide Web Konsortium (W3C).[1][2][3] WebAuthn ist eine Kernkomponente der FIDO2 -Projekt unter der Anleitung der Fido Alliance.[4] Das Ziel des Projekts ist es, eine Schnittstelle zur Authentifizierung von Benutzern zu webbasierten Anwendungen und Diensten zu standardisieren Kryptographie der Öffentlichkeit.
Auf der Kundenseite kann die Unterstützung für WebAuthn auf verschiedene Weise implementiert werden. Die zugrunde liegenden kryptografischen Operationen werden von einem durchgeführt Authentikator, was ein abstraktes Funktionsmodell ist, das in Bezug auf die Verwaltung des Schlüsselmaterials meist agnostisch ist. Dies ermöglicht die Implementierung der Unterstützung für WebAuthns nur in der Software und nutzt die eines Prozessors vertrauenswürdige Ausführungsumgebung oder ein Vertrauenswürdiges Plattformmodul (TPM). Sensitive Cryptographic Operations kann auch in einen Roaming -Hardware -Authentikator ausgeladen werden USB, Bluetooth niedrige Energie, oder Near Field Communications (NFC). Ein Roaming -Hardware -Authentikator entspricht dem FIDO Client zu Authentikatorprotokoll (CTAP),[5] Webauthne effektiv rückwärtskompatibel mit dem FIDO Universeller 2. Faktor (U2F) Standard.[6]
Ähnlich wie bei Legacy U2F ist die Webauthentifizierung widerstandsfähig gegenüber der Verifiererwechselin, dh sie ist resistent gegen das aktive Man-in-the-Middle-Angriffe.[7] Im Gegensatz zu U2F benötigt WebAuthn jedoch kein herkömmliches Passwort. Darüber hinaus ist ein Roaming -Hardware -Authentikator gegen Malware resistent, da das private Schlüsselmaterial zu keinem Zeitpunkt für Software zugänglich ist, die auf dem Host -Computer ausgeführt wird.
Der WebAuthn Level 1 -Standard wurde am 4. März 2019 als W3C -Empfehlung veröffentlicht.[8][9] Eine Spezifikation der Stufe 2 befindet sich in der Entwicklung.[10] Eine Spezifikation der Stufe 3 ist derzeit eine erste Öffentlicher Arbeitsentwurf (FPWD). [11]
Hintergrund
FIDO2 ist der Nachfolger des Legacy -Protokolls von FIDO Universal 2. Faktor (U2F). Die FIDO2-Authentifizierung hat alle Vorteile von U2F-der Hauptunterschied besteht darin, dass ein FIDO2-Authentikator auch ein Einzelfaktor-Authentikator sein kann. Das U2F-Protokoll ist als zweiter Faktor für die Stärkung der vorhandenen Benutzernamen-/kennwortbasierten Anmeldeflüsse konzipiert.
Ein FIDO2-Authentikator kann entweder im Single-Factor-Modus oder im Multi-Faktor-Modus verwendet werden. Im Einzel-Faktor-Modus wird der Authentikator durch einen Test der Benutzerpräsenz aktiviert, der normalerweise aus einem einfachen Tastendruck besteht. Im Multi-Faktor-Modus der Authentikator (Etwas, das du hast) führt die Benutzerüberprüfung durch. Abhängig von den Authenticator -Funktionen kann dies sein:[12]
- Etwas, das Sie wissen: ein Geheimnis wie a STIFT, Passcode oder wischen Muster
- Etwas, das du bist: a Biometrisch wie Fingerabdruck, Iris oder Stimme
In jedem Fall führt der Authenticator die Benutzerüberprüfung lokal auf dem Gerät durch. Ein geheimer oder biometrischer auf dem Authentikator gespeicherter auf der Website wird nicht geteilt.[13] Darüber hinaus arbeitet eine einzelne geheime oder biometrische mit allen Websites zusammen, wie der Authentikator die richtige auswählt Kryptografisches Schlüsselmaterial Um die Authentifizierung nach der Benutzerüberprüfung zu verwenden, wurde er erfolgreich abgeschlossen.
Ein Geheimnis und ein biometrischer Authentikator kann zusammen verwendet werden, ähnlich wie sie auf a verwendet werden würden Smartphone. Beispielsweise wird ein Fingerabdruck verwendet, um Ihren Smartphone bequemen Zugriff zu gewährleisten, aber gelegentlich Fingerabdruckzugriff fehlschlägt. In diesem Fall kann ein Pin verwendet werden.
Überblick
Wie sein Vorgänger FIDO U2F beinhaltet W3C Web Authentication (WebAuthn) a Webseite, a Webbrowserund ein Authentikator:[1]
- Die Website ist eine konforme WebAuthn -Renn -Party
- Der Browser ist ein konformer WebAuthn -Client
- Der Authentikator ist ein FIDO2 -Authentikator, dh angenommen wird angenommen, dass er mit dem WebAuthn -Client kompatibel ist
WebAuthn gibt an, wie ein Antragsteller den Besitz und die Kontrolle eines FIDO2 -Authentikators zu einem Verifier namens WebAuthn Ringing Party demonstriert. Der Authentifizierungsprozess wird durch eine Entität namens WebAuthn -Client vermittelt, die kaum mehr als ein konformer Webbrowser ist.
Authentifizierung
Für die Illustrationszwecke gehen wir davon aus, dass der Authentikator ein Roaming -Hardware -Authentikator ist (siehe unten für andere Optionen). In jedem Fall ist der Authentikator ein Multi-Faktor kryptografisch Authentikator, der verwendet Kryptographie der Öffentlichkeit Unterzeichnung einer Authentifizierungsbehörde, die auf die WebAuthn -Renn -Partei abzielt. Angenommen, der Authentikator verwendet a STIFT Für die Benutzerüberprüfung ist der Authentikator selbst Etwas, das du hast Während der Stift ist Etwas, das du weißt.
Soitieren Sie den WebAuthn -Authentifizierungsfluss,[14] Die WebAuthn -Relying -Partei gibt ihre Absichten an den WebAuthn -Client (d. H. Der Browser) über JavaScript. Der WebAuthn -Client kommuniziert mit dem Authentikator mit einem JavaScript API im Browser implementiert. Ein Roaming -Authentikator entspricht dem Fido Client zu Authentikatorprotokoll.
WebAuthn benötigt keinen Roaming -Hardware -Authentikator ausschließlich. Alternativ kann ein Softwareauthentikator (implementiert auf einem Smartphone, z. B.) oder einem Plattformauthentikator (d. H. Ein Authentikator, der direkt auf dem WebAuthn -Client -Gerät implementiert ist) verwendet werden. Zu den relevanten Beispielen für Plattformauthentikatoren gehören Windows Hallo[15] und die Android -Betriebssystem.[16]
Der illustrierte Fluss basiert auf PIN-basierter Benutzerüberprüfung, was in Bezug auf die Benutzerfreundlichkeit nur eine bescheidene Verbesserung gegenüber der normalen Kennwortauthentifizierung darstellt. In der Praxis der Gebrauch von Biometrie Für die Benutzerüberprüfung kann die Verwendbarkeit von WebAuthn verbessert werden. Die Logistik hinter der Biometrie ist jedoch immer noch schlecht verstanden. Es gibt ein anhaltendes Missverständnis unter den Benutzern, dass biometrische Daten auf das Netzwerk auf die gleiche Weise wie Passwörter übertragen werden, was nicht der Fall ist.[17][18]
Anmeldung
Wenn die WebAuthn -Relying -Partei die unterschriebene Authentifizierungsbehandlung vom Browser erhält, wird die digitale Signatur der Behauptung mithilfe eines vertrauenswürdigen öffentlichen Schlüssels für den Benutzer überprüft. Wie erhält die Webauthn -Vergewaltigungspartei diesen vertrauenswürdigen öffentlichen Schlüssel überhaupt?
Um einen öffentlichen Schlüssel für den Benutzer zu erhalten, initiiert die WebAuthn Ringing Party einen WebAuthn -Registrierungsfluss[19] Das ist dem oben dargestellten Authentifizierungsfluss sehr ähnlich. Der Hauptunterschied besteht darin, dass der Authentikator jetzt eine Bescheinigung mit seinem privaten Schlüssel bescheinigt. Die unterschriebene Erklärung zur Bescheinigung enthält eine Kopie des öffentlichen Schlüssels, mit dem die WebAuthn -Partei letztendlich eine unterschriebene Authentifizierungsbehandlung überprüfen. Die Bescheinigungserklärung enthält auch Metadaten, die den Authentikator selbst beschreiben.
Die digitale Signatur der Bescheinigungserklärung wird mit dem vertrauenswürdigen öffentlichen Schlüssel für dieses bestimmte Authentikatormodell verifiziert. Wie die WebAuthn -Relying Party ihren Geschäft mit vertrauenswürdigen Bescheinigungen öffentliche Schlüssel erhält, ist nicht spezifiziert. Eine Möglichkeit besteht darin, den FIDO -Metadatendienst zu verwenden.[20]
Der im JavaScript angegebene Bescheinigungsstationstyp bestimmt das Vertrauensmodell. Zum Beispiel kann ein Bescheinigungstyp bezeichnet werden, der als Selbstzubehör gewünscht werden kann, für das das Vertrauensmodell im Wesentlichen ist Vertrauen auf den ersten Gebrauch.
Die Unterstützung
Der Standard -Standard -Standard -Standard wurde als W3C -Empfehlung von der veröffentlicht Webauthentifizierung Arbeitsgruppe am 4. März 2019.[8][9][21] WebAuthn wird unterstützt von Google Chrome, Mozilla Firefox, Microsoft Edge, Apfelsafari[9] und Oper.[22]
Die Desktop -Version von Google Chrome hat WebAuthn seit Version 67 unterstützt.[23] Firefox, das den vorherigen FIDO U2F -Standard nicht vollständig unterstützt hatte, enthielt und aktivierte WebAuthn in Firefox Version 60, das am 9. Mai 2018 veröffentlicht wurde.[24] Ein frühes Windows Insider Die Veröffentlichung von Microsoft Edge (Build 17682) implementierte eine Version von WebAuthn, die mit beiden funktioniert Windows Hallo sowie externe Sicherheitsschlüssel.[25]
Vorhandene FIDO U2F-Sicherheitsschlüssel sind weitgehend mit dem WebAuthn-Standard kompatibel, obwohl WebAuthn die Möglichkeit hinzugefügt hat, auf eine eindeutige Erkennung pro Konto "Benutzerhandle" zu verweisen, die ältere Authentikatoren nicht speichern können.[1] Einer der ersten FIDO2-kompatiblen Authentikatoren war die zweite Generation Sicherheitsschlüssel Von Yubico, bekannt gegeben am 10. April 2018.[26]
Der erste zertifizierte FIDO2 -Schlüssel der Sicherheitsstufe 2 mit dem Titel "Goldengate" wurde am 8. April 2019 von EWBM bekannt gegeben.[27] und[28]
Dropbox Kündigungsunterstützung für WebAuthn -Logins (als 2. Faktor) am 8. Mai 2018.[29]
Apfel kündigte das an Gesichtsausweis oder Berührungsidentifikation könnte als WebAuthn -Plattform -Authentikator mit verwendet werden Safari am 24. Juni 2020.[30]
API
WebAuthn implementiert eine Erweiterung des allgemeineren W3C Zeugnisverwaltung API, was ein Versuch ist, die Wechselwirkung zwischen zu formalisieren Websites und Internetbrowser Beim Austausch von Benutzeranmeldeinformationen. Die Webauthentifizierungs -API[31][32] erweitert das Anmeldeinformationsmanagement navigator.credentials.create ()
und navigator.credentials.get ()
JavaScript Methoden, damit sie a akzeptieren Öffentlicher Schlüssel
Parameter. Das schaffen()
Methode wird zur Registrierung des öffentlichen Schlüssels verwendet Authentikatoren Im Rahmen der Zusammenarbeit mit Benutzerkonten (möglicherweise zur Erstellung der Erstellung von Kontos, jedoch wahrscheinlicher, wenn Sie ein neues Sicherheitsgerät zu einem vorhandenen Konto hinzufügen), während die erhalten()
Die Methode wird zur Authentifizierung verwendet (z. B. beim Anmelden).
Um zu überprüfen, ob ein Browser WebAuthn unterstützt, sollten Skripte überprüfen, ob die window.publizeycredential
Die Schnittstelle ist definiert. Zusätzlich zu PublicKeycredential
, der Standard definiert auch die AuthenticatorResponse
, AuthenticatorAtestationResponse
, und AuthenticatorassertionResponse
Schnittstellen zusätzlich zu einer Vielzahl von Wörterbüchern und anderen Datentypen.
Die API ermöglicht keinen direkten Zugang oder Manipulation privater Schlüssel, außer dass sie ihre anfängliche Schöpfung anfordern.
Rezeption
Im August 2018 führten die Unternehmen der Paragon Initiative eine Sicherheitsprüfung des WebAuthn -Standards durch. Obwohl sie keine spezifischen Heldentaten finden konnten, zeigten sie einige schwerwiegende Schwächen in der Art und Weise, wie die zugrunde liegende Kryptographie vom Standard verwendet und vorgeschrieben wird.[33]
Die Hauptpunkte der Kritik drehen sich um zwei potenzielle Probleme, die in anderen kryptografischen Systemen in der Vergangenheit problematisch waren und daher vermieden werden sollten, um nicht derselben Klasse von Angriffen zum Opfer zu werden:
- Durch die vorgeschriebene Verwendung von Cose (RFC 8152) unterstützt auch WebAuthn RSA mit PKCS1V1.5 Polsterung. Dieses spezielle Polsterschema ist bekanntermaßen anfällig für Spezifische Angriffe Seit mindestens zwanzig Jahren und erfolgreich in anderen Protokollen und Implementierungen des RSA -Kryptosystems in der Vergangenheit angegriffen. Es ist schwierig, unter den angegebenen Bedingungen im Kontext von WebAuthn auszunutzen, aber da es sicherere kryptografische Primitive und Polsterprogramme gibt, ist dies immer noch eine schlechte Wahl und wird unter den Kryptographen nicht mehr als bester Praxis angesehen.
- Die FIDO -Allianz standardisiert auf dem Asymmetrische kryptografische Schema ECDAA.[34] Dies ist eine Version von direkte anonyme Bedenken bezogen auf Elliptische Kurven und im Fall von WebAuthn soll die Integrität von Authentikatoren überprüfen und gleichzeitig die Privatsphäre der Benutzer erhalten, da dies keine globale Korrelation von Handles ermöglicht. Die ECDAA enthält jedoch nicht einige der Lehren, die in den letzten Jahrzehnten der Forschung im Bereich von gelernt wurden Kryptographie der elliptischen Kurve, wie die gewählte Kurve einige Sicherheitsdefizite hat, die dieser Art von Kurve innewohnt, wodurch die Sicherheitsgarantien erheblich reduziert werden. Darüber hinaus beinhaltet der ECDAA-Standard zufällige, nicht deterministische Signaturen, die in der Vergangenheit bereits ein Problem waren.
Die Unternehmen der Paragon Initiative kritisierten auch, wie der Standard ursprünglich entwickelt wurde, da der Vorschlag nicht im Voraus veröffentlicht wurde und erfahrene Kryptographen nicht nach Vorschlägen und Feedback gebeten wurden. Daher unterlag der Standard nicht einer breiten kryptografischen Forschung aus der akademischen Welt.
Trotz dieser Mängel ermutigen die Unternehmen der Paragon Initiative weiterhin die Benutzer, weiterhin WebAuthn zu verwenden, aber einige Empfehlungen für potenzielle Implementierer und Entwickler des Standards erhalten haben, von denen sie hoffen, dass sie vor dem Ende des Standards implementiert werden können. Das Vermeiden solcher Fehler so früh wie möglich würde die Branche von allen Herausforderungen verhindern, die durch gebrochene Standards und die Notwendigkeit von Bedarf angelegt werden Rückwärtskompatibilität.
Die ECDAA wurde nur so konzipiert, dass sie in Kombination mit der Bescheinigung von Geräten verwendet werden. Diese besondere Funktion von WebAuthn ist nicht unbedingt erforderlich, damit die Authentifizierung funktioniert. Aktuelle Implementierungen ermöglichen es dem Benutzer, zu entscheiden, ob während der Registrierungszeremonie eine Bescheinigungserklärung gesendet wird. Unabhängig voneinander kann die Verweigerung von Parteien entscheiden, Bescheinigung zu erfordern oder nicht. Die ECDAA wurde aus WebAuthn Level 2 entfernt, da sie weder von Browsern noch Verweigerung von Parteien implementiert wurde.[35]
Verweise
- ^ a b c Balfanz, Dirk; Czeskis, Alexei; Hodges, Jeff; Jones, J.C.; Jones, Michael B.; Kumar, Akshay; Liao, Angelo; Lindemann, Rolf; Lundberg, Emil, Hrsg. (4. März 2019). "Webauthentifizierung: Eine API für den Zugriff auf öffentliche Schlüsselanmeldeinformationen Level 1" (Empfehlung ed.). World Wide Web Konsortium (W3C). Abgerufen 4. März 2019.
- ^ "Webauthentifizierung Arbeitsgruppe". World Wide Web Konsortium (W3C). Abgerufen 2018-05-11.
- ^ Strickland, Jonathan (18. März 2019). "Was ist WebAuthn". TechStuff. iheartmedia. 20:35 Minuten in. Abgerufen 20. März 2019.
- ^ "FIDO2 -Projekt". Fido Alliance. Abgerufen 2018-05-11.
- ^ Marke, Christiaan; Czeskis, Alexei; Ehrensvärd, Jakob; Jones, Michael B.; Kumar, Akshay; Lindemann, Rolf; Kräfte, Adam; Verrept, Johan, Hrsg. (30. Januar 2019). "Client to Authenticator Protocol (CTAP)". Fido Alliance. Abgerufen 7. März 2019.
- ^ "WebAuthn / CTAP: Moderne Authentifizierung" (PDF). World Wide Web Konsortium (W3C). 10. Dezember 2018. Abgerufen 11. März 2019.
- ^ Kan, Michael (7. März 2019). "Google: Phishing-Angriffe, die Zwei-Faktor schlagen können, sind auf dem Vormarsch". PC Magazine. Abgerufen 8. März 2019.
- ^ a b Balfanz, Dirk; Czeskis, Alexei; Hodges, Jeff; Jones, J.C.; Jones, Michael B.; Kumar, Akshay; Liao, Angelo; Lindemann, Rolf; Lundberg, Emil (Hrsg.). "Webauthentifizierung: Eine API für den Zugriff auf öffentliche Schlüsselanmeldeinformationen Level 1 (letztes)". World Wide Web Konsortium (W3C). Abgerufen 4. März 2019.
- ^ a b c "W3C und FIDO Alliance schließen den Webstandard für sichere, passwortlose Anmeldungen ab". World Wide Web Konsortium (W3C). 4. März 2019. Abgerufen 4. März 2019.
- ^ Balfanz, Dirk; Czeskis, Alexei; Hodges, Jeff; Jones, J.C.; Jones, Michael B.; Kumar, Akshay; Lindemann, Rolf; Lundberg, Emil, Hrsg. (4. Juni 2019). "Webauthentifizierung: Eine API für den Zugriff auf öffentliche Schlüsselanmeldeinformationen Level 2" (Erster öffentlicher Arbeitsentwurf Ed.). World Wide Web Konsortium (W3C). Abgerufen 6. Juni 2019.
- ^ Balfanz, Dirk; Czeskis, Alexei; Hodges, Jeff; Jones, J.C.; Jones, Michael B.; Kumar, Akshay; Lindemann, Rolf; Lundberg, Emil, Hrsg. (4. April 2021). "Webauthentifizierung: Eine API für den Zugriff auf öffentliche Schlüsselanmeldeinformationen Level 3" (Erster öffentlicher Arbeitsentwurf Ed.). World Wide Web Konsortium (W3C). Abgerufen 24. Dezember, 2021.
- ^ Bagdasaryan, Davit; Hill, Brad (2. Juli 2018). "FIDO -Register der vordefinierten Werte". fidoalliance.org. Fido Alliance. Abgerufen 2019-06-16.
- ^ "Webauthentifizierung: Eine API zum Zugriff auf öffentliche Schlüsselanmeldeinformationen Stufe 1 § Terminologie: Benutzerüberprüfung". www.w3.org. W3c. 4. März 2019. Abgerufen 2019-06-16.
- ^ "Webauthentifizierung API". Mozilla. AbschnittAuthentifizierung. Abgerufen 18. März 2019.
- ^ Simons, Alex (20. November 2018). "Sicher für Ihr Microsoft-Konto mit einem Sicherheitsschlüssel oder Windows Hello für Ihr Microsoft-Konto anmelden.". Microsoft. Abgerufen 6. März 2019.
- ^ "Android Now FIDO2 zertifiziert und beschleunigt die globale Migration über Passwörter hinaus". BARCELONA: Fido Alliance. 25. Februar 2019. Abgerufen 6. März 2019.
- ^ "Touch ID und darüber hinaus: Duos Pläne für WebAuthn". Duo -Sicherheit. 5. März 2019. Abgerufen 8. März 2019.
- ^ Steele, Nick (27. Februar 2019). "Wie WebAuthn das Passwortproblem lösen will". Hilfe bei der Nettosicherheit. Abgerufen 8. März 2019.
- ^ "Webauthentifizierung API". Mozilla. AbschnittAnmeldung. Abgerufen 18. März 2019.
- ^ "Metadatenservice". Fido Alliance. Abgerufen 18. März 2019.
- ^ Protalinski, Emil (4. März 2019). "W3C genehmigt WebAuthn als Webstandard für kennwortfreie Anmeldungen".
- ^ "Kann ich Web -Authentifizierungs -API verwenden?". Abgerufen 7. März 2019.
- ^ Brand, Christiaan (2018-06-03). "Ermöglichen Sie eine starke Authentifizierung mit WebAuthn". Google -Entwickler. Abgerufen 2018-06-25.
- ^ Shankland, Stephen (2018-05-09). "Firefox bewegt Browser mit WebAuthn Tech in Post-Password-Zukunft.". CNET. Abgerufen 2018-05-11.
- ^ Sarkar; et al. (2018-05-23). "Ankündigung von Windows 10 Insider Preview Build 17682". Microsoft. Abgerufen 2018-06-25.
- ^ "Yubico startet das neue Entwicklerprogramm und den Sicherheitsschlüssel für FIDO2- und WebAuthn W3C -Spezifikationen" (Pressemitteilung). 2018-04-10. Abgerufen 2018-05-11.
- ^ "EWBM: Der Goldengate -Fingerabdruck -Leser von EWBM erhält der erste, der FIDO L2 -Zertifizierung erhält" (Pressemitteilung). 2019-04-08. Abgerufen 2019-06-15.
- ^ "Mobile ID World, Alex Perala: Der Goldengate -Fingerabdruck -Leser von EWBM erhält der erste, der die FIDO L2 -Zertifizierung erhält" (Pressemitteilung). 2019-04-09. Abgerufen 2019-06-15.
- ^ Girardeau, Brad (2018-05-08). "Einführung von WebAuthn -Unterstützung für das Secure Dropbox -Anmelden in". Dropbox Tech Blog. Dropbox. Abgerufen 2018-05-11.
- ^ Girardeau, Brad (2020-06-24). "Safari 14 Beta -Versionsnotizen". Apple Developer -Dokumentation. Apfel. Abgerufen 2020-06-24.
- ^ "Webauthentifizierung API". Mozilla. Abgerufen 16. März 2019.
- ^ Ackermann, Yuriy (15. Januar 2019). "Einführung in die Webauthn -API". Mittel. Abgerufen 8. März 2019.
- ^ "Sicherheitsbedenken hinsichtlich WebAuthn: Implementieren Sie die ECDAA (noch) nicht" ". Paragon Initiative Enterprises Blog. 2018-08-23. Abgerufen 2018-10-09.
- ^ "Fido ECDAA -Algorithmus". Fido Alliance. 2018-02-27. Abgerufen 2018-10-09.
- ^ "ECDAA entfernen? · Ausgabe #1410 · W3C/WebAuthn". GitHub. 2020-04-28. Abgerufen 2020-06-03.