... zu Tokens!
Quelle: Yubico
Über mich
Open Source Enthusiast
Security Engineer @ SUSE
❤ Kryptografie, IT-Sicherheit & Authentifizierung
YubiKey Maintainer (& Contributor)
Aktuelle Relevanz
Quelle: heise.de
An diesen Standards wird schon lange gearbeitet, aber ...
... bisher viel Arbeit „im Verborgenen“
... WebAuthn wurde erst vor wenigen Wochen finalisiert
Support bereits in (allen) bekannten Browsern
Dienste unterstützen es bereits, z.B. Dropbox [1] [2]
Agenda
Grundlagen der Authentifizierung
Passwörter & Multi-Faktor Authentifizierung
Asymmetrische Kryptografie
U2F / FIDO2 / WebAuthn
Demonstration
Fragen & Antworten
Ressourcen
Dieser Vortrag vermittelt nur Konzepte
High-Level Betrachtung
Richtet sich in erster Linie an Einsteiger und Interessierte
Details (z.B. für Implementierung) → Ressourcen
Grundlagen der Authentifizierung
Authentifizierung [...] ist der Nachweis
[...] einer behaupteten Eigenschaft einer Entität,
die beispielsweise ein Mensch, ein Gerät, ein
Dokument oder eine Information sein kann, und die
dabei durch ihren Beitrag ihre Authentisierung
durchführt.
Quelle: Wikipedia
Kontext: Benutzer-Authentifizierung
Mit wem kommuniziere ich?
Für uns relevanter Kontext: Benutzer-Authentifizierung
Daneben gibt es auch andere Kontexte
Machine-to-Machine (M2M)
Echtheit von Dokumenten
Echtheit von Gütern
Echtheit von historischen Artefakten
Quelle: Wikipedia
Besonderheit der deutschen Sprache
Authentisieren vs. Authentifizieren
Meistens als Synonym verwendet
Authentifizierung
Authentication, AuthN , A1, Au
→ Wer bin ich?
Autorisierung
Authorization, AuthZ , AuthR , A2, Az
→ Was darf ich?
In der Praxis oft eng miteinander verzahnt
Vergleiche Online-Banking (Beispiel)
Login → Authentication
Überweisung → Authorization
Konto-Deckung
Richtiger Empfänger → chipTan, SMSTan, etc.
AuthZ setzt (immer?) AuthN voraus
Hier vorgestellte Standards sind AuthN
Körperliches Merkmal (etwas, das man ist)
Biometrie, z.B. Fingerabdruck, Iris, Gesichtserkennung, Stimme, etc.
Wissen (etwas, das man weiß)
Geheimnisse, z.B. Passwörter, PINs, Antwort auf Fragen, etc.
Besitz (etwas, das man hat)
(Physikalische) Schlüssel
(Hardware) Tokens (Smartcard, Zertifikat, YubiKey, etc.)
Unabhängig vom verwendeten Algorithmus, etc.
Kein besser vs. schlechter ...
Verschiedene Optionen gehen jeweils mit Vor- bzw. Nachteilen einher, z.B.:
Kann verloren/vergessen werden
Kann (nicht) geändert werden
Kann (nicht) weitergegeben werden
Kann (nicht) kopiert / geklont werden
Beliebige Kombinationen möglich
→ Zweifaktor-Authentifizierung (2FA )
→ Multifaktor-Authentifizierung (MFA )
Beliebige Kombinationen denkbar
Je nach Domäne / Verfügbarkeit / Technologie
In der Praxis (im Web) oft 2FA:
Passwort → Wissen
OTP / Code / Token (Google Authenticator, SMS, Mail, etc.) → Besitz
Passwort nach wie vor allgegenwärtig
Viele Vorschläge und Ideen, alle sicherer als Passwörter, aber ...
Merkmale zum Vergleichen
Widerstandsfähigkeit Brute-Force
Widerstandsfähigkeit Phishing
Widerstandsfähigkeit Diebstahl
Vertrauenswürdige Partei
Explizite Benutzer Einwilligung
Observierbarkeit (intern, extern)
Zustimmung des Benutzers
Gedächtnis
Skalierbarkeit (für Benutzer)
Physisischer Transport
Disaster-Recovery
Kosten (pro Benutzer)
Server-Kompatibilität
Browser-Kompatibilität
Ausgereiftheit
Proprietarität
Neue Standards?
Viele Standars für viele Domänen und Einsatzzwecke
Zum Teil weit verbreitet und oft benutzt
Zum Teil esoterisch und kaum benutzt
Kein Standard, welcher Passwörter im Web ablöst
Quelle: xkcd
Optionen und Alternativen:
Benutzer-Zertifikate
Smartcards
Kerberos
SAML, OAuth 2.0, OpenID Connect
...
Bisher kein Standard im Web bzw. Internet, welcher Passwörter ersetzen kann, einfach zu bedienen und sicher ist.
Passwörter ...
... sind toll
Einfach zu verwenden
Einfach zu implementieren
Universell und überall verwendbar
Empfehlungen & Best-Practices (NIST, etc.)
... sind problematisch
„Ahnlungslose“ Benutzer
Schwache Passwörter
Passwort-Wiederverwendung
Phishing
„Inkompetente“ Anbieter
„Einbrüche“ bei Anbietern
Falsche Praktiken (Hashing, Salting, etc.)
... schwierig zu handhaben
Zufällige Passwörter: oN9ee8gaihieWuho
Gedächtnis
Passwort-Manager
Eingabe
... schützen nicht vor
Replay
Phishing
Man-in-the-Middle
... in der Realität
Fast täglich „Einbrüche“
Milliarden Passwörter im Umlauf
Falsches Verständnis (selbst von Experten)
Keine Besserung absehbar
Problem seit ~ 40 Jahren bekannt
123456 & password beliebteste Passwörter (2017)
Multifaktor ...
... erhöht die Sicherheit und
fühlt sich „cool“ an,
aber ...
löst viele Probleme nicht!
... Probleme
Unhandlich
Unsichere Recovery und Fallback Prozesse
Aktive Angriffe (MitM, Phishing, etc.)
Skaliert schlecht
Im Nachgang „aufgesetzte“ Sicherheit
→ Fehlerhafte Implementierungen
Zumeist auf Basis geteilter Geheimnisse
Fehlerhafte Implementierungen bei großen Anbieten wie z.B. Google
Im Nachgang dazu implementiert, Fehlverhalten bei zeitgleichem Passwort-Reset, usw.
Lächerliche Implementierung bei PayPal
Asymmetrische Kryptografie
auch bekannt als Public-Key Kryptografie
Kein gemeinsamer Schlüssel
vgl. klassische Verschlüsselung
Stattdessen Schlüsselpaar
Öffentlicher Schlüssel
Privater Schlüssel (geheim)
Ursprünge in den 1970er Jahren (Diffie-Hellman, RSA, etc.)
Geheimdienste haben dies schon vorher entdeckt
Ursprünge in den 1970er Jahren (Diffie-Hellman, RSA, etc.)
Geheimdienste haben dies schon vorher entdeckt
Erste (kommerzielle) Nutzung in den 1980er / 1990er
PGP / SSL → 1990er
Crypto-Wars, Schlüssellängen, etc.
Neue und interessante Möglichkeiten
Verschlüsselung
Authentifzierung
Schlüsselvereinbarung
Digitale Signaturen
Mathematische Details sind komplex
Abstrakte Betrachtungsweise ausreichend
Basis: Sog. mathematische Einweg-Funktionen, z.B.
Einfach zu berechnen in eine Richtung
Schwierig zu berechnen, in andere Richtung
Faktorisierung (RSA)
Diskreter Logarithmus (DH)
Elliptische Kurven
Quelle: Wikipedia
Quelle: Wikipedia
Quelle: Wikipedia
Beispielanwendungen und -protokolle
SSL/TLS
SSH
PGP / OpenPGP / GnuPG
Bitcoin
Elektronischer Personalausweis (nPA)
u.v.a.m.
In vielen Domänen bereits etabliert
SSL/TLS kann auch Client Authentication
Unbequem zu verwenden
Erlauben Tracking
Mathematik funktioniert, aber ...
... Authentizität der Schlüssel ist die eigentliche Herausforderung !
Mathematik ist (im Wesentlichen) alt/bewährt/sicher ...
Verschiedene Ideen und Ansätze
Zertifikate & CAs (dritte Partei)
Web of Trust → Keysigning ...
U2F / FIDO2 / WebAuthn
Standards für Public-Key Kryptografie
Benutzer-Authentifizierung im Web-Umfeld
Ablösung von Passwörtern
Getrieben von FIDO Alliance & W3C
Ziele
Einfache Bedienung
Mehr Sicherheit
(Hardware-basierter) Authenticator
Hardware-basierte Tokens
Quelle: youtube.com/watch?v=vv11XMG5UJg
Intuitive Verwendung (Touch)
Vgl. physikalischer Schlüssel
Verwendung setzt Besitz voraus
Schnittstellen
USB (HID)
NFC
Bluetooth Low Energy (BLE)
Kryptografie in sicherer Umgebung
Kein Zugriff auf Schlüsselmaterial
Kein Allzweck-Computer
Nur „kleiner“ Funktionsumfang
Schwierig zu „hacken“
Schwierig zu klonen
Schutz vor Keylogging
Universal 2nd Factor (U2F)
Übersicht
Entwickelt von Google, Yubico & NXP (2012)
An FIDO Alliance „gespendet“ → FIDO U2F (2013)
Erste finale Version U2F 1.0 (2014)
Zusätzlich zu Benutzername & Passwort
„Zweiter Faktor“
Erfordert Unterstützung im Browser
Innovatives Konzept
Eigener Public-Key für jeden Dienst
Kryptografie auf Basis von elliptischen Kurven
Beliebige Bitmuster als Schlüssel möglich
Schlüssel werden on-the-fly berechnet
Deterministische Berechnung in Abhängigkeit von
URL der Zielseite
gerätespezifischem Geheimnis
Quelle: Yubico
Vorteile
Skalierbarkeit für viele Dienste
Inhärenter Schutz vor Phishing
Keine Speicherung von Schlüsselmaterial
Keine Rückverfolgung zwischen Diensten
Anbieter speichert unkritische Informationen
Abläufe / Zeremonien
Registrierung
Authentifizierung
(Account Wiederherstellung)
Registrierung
Hinterlegen von Informationen beim Anbieter
Public-Key
Key-Handle
Optional: Geräte-Beglaubigung
Benutzererfahrung: „Knopf“ drücken
Authentifizierung
Signieren einer Challenge
Benutzererfahrung: „Knopf“ drücken
Protokoll-Merkmale
Challenge-Response Protokoll
Eingebauter Phishing-Schutz → „Origin Binding“
Man-in-the-Middle Schutz → TLS Channel ID
Anwendungsspezifische Schlüssel
Schutz vor Klonen
Geräte-Beglaubigung (device attestation)
Challenge-Response
Quelle: Yubico
Phishing & MitM Schutz
Quelle: Yubico
Schutz vor Klonen
Quelle: Yubico
Geräte-Beglaubigung
Optional
Kann vom Anbieter angefordert werden
Einschränkung auf bestimmte Hersteller & Geräte
U2F Gerät liefert ein X.509 Zertifikat aus
Signiert vom Hersteller des Tokens
Ermöglicht Tracking, da „konstant“
Kann ggf. vom Benutzer unterdrückt werden
Weiterentwicklung
Quelle: FIDO Alliance
Weiterentwicklung
„Modularisierung“
Server-Client-Kommunikation → WebAuthn
Client-Authenticator-Kommunikation → CTAP
→ FIDO2
FIDO Alliance
Entstanden im Februar 2013
F ast ID entity O nline
~ 250 Mitglieder, unter anderem
Amazon
Google
MasterCard
PayPal
Yubico
u.v.a.m.
Ziel: Starke Authentifzierungs-Standards
Kompatibilität zwischen Software & Hardware
Zertifizierung von Hardware
Universal 2nd Factor (U2F)
Universal Authentication Framework (UAF)
Client to Authenticator Protocol (CTAP)
(Web Authentication (WebAuthn) → W3C)
FIDO2
Von besserer Authentifizierung profitieren alle
Weniger Spam
Weniger Betrug
Weniger Kosten
Mehr Vertrauen
usw.
Web Authentication
W3C Recommendation, 4. März 2019
Level 1 „final“
Erweiterung der Credential Management API
JavaScript-basierte Web API
Gute Browserunterstützung
Basiert auf vorheriger Arbeit der FIDO Alliance
Rückwärtskompatibel mit U2F
„Browser-zu-Server“ Teil von U2F
Server → Relying Party (RP)
Generiert und liefert JavaScript aus
Browser → Client
Führt JavaScript aus
Proxy zwischen Authenticator und Relying Party
Authenticator
Abstraktes Modell
Hardware token
USB
Bluetooth Low Energy (BLE)
NFC
Software bzw. Betriebssystem
Abläufe / Zeremonien
Registrierung
Authentifizierung
Quelle: Mozilla
Quelle: Mozilla
Browser Unterstützung
Google Chrome 67
Mozilla Firefox 60
Microsoft Edge (build 17723)
Apple Safari (preview)
Opera
Kommunikation mit Authenticator erfolgt mittels Client to Authenticator Protocol (CTAP)
Client to Authenticator Protocol (CTAP)
Kommunikation Client ↔ Authenticator
Zwei Versionen: CTAP1 & CTAP2
CTAP1
„Umbenanntes“ U2F
Zweiter Faktor
„Knopf“ drücken → Physikalische Präsenz
CTAP2
„Neue“ Version für FIDO2
Ermöglicht mehr Anwendungsfälle
Passwortlose Authentifizierung
Einzelner Faktor, Zweiter-Faktor, Multi-Faktor
Verifizierung via PIN & Biometrie
FIDO2
FIDO2 = WebAuthn + CTAP
FIDO2 ermöglicht passwortlose Authentifizierung
Rückwärtskompatibel mit FIDO U2F (CTAP1)
Neue Betriebsmodi
Einzel-Faktor (ohne Passwort)
Zweiter-Faktor (2FA)
Mehr-Faktor (MFA)
Quelle: Yubico
Quelle: Microsoft
Benutzer-Verifizierung
Mit CTAP1 nur Überprüfung der Präsenz
Mit CTAP2 PIN & Biometrie möglich
Findet lokal am Authenticator statt
PIN vs. Passwort
Kein Transfer von biometrischen Daten
Quelle: Wikipedia
Passwortlose Authentifizierung
Einer (von mehreren) Betriebsmodi, optional
Wird durch „resident keys“ ermöglicht
Werden auf dem Authenticator gespeichert ...
... anstatt auf dem Server (Relying Party)
→ Kein Lookup (Key-Handle) notwendig
→ Keine Angabe von Benutzername notwendig
Account Recovery
Im Fall von Verlust bzw. Defekt von Token
Keine verbindlichen Vorgaben
Idealerweise mehrere Tokens im Vorfeld
Ansonsten Fallback auf andere Mechanismen
Verlust von Token unkritisch (?)
Keine Zuordnung zu Benutzer (?)
Hilft nur bedingt bei Diebstahl
Verwendbarkeit ...
... für Benutzer
Google, GitHub, Facebook, Dropbox, ...
Nextcloud, privacyIDEA, Wordpress, ...
„Login mit ...“ (OAuth, etc.)
www.dongleauth.com
Quelle: dongleauth.com
... für Anbieter, Entwickler & Administratoren
Module bzw. Plugins für Wordpress, Django, etc.
Selbst implementieren → developers.yubico.com
Authentifzierung an Dienstleister auslagern
Zusammenfassung
Passwörter sind nicht zeitgemäß
Hardware-Tokens erwerben
Benutzen & experimentieren
Erhöhte Sicherheit trotz einfacher Bedienung
Viele Anwendungsfälle, Optionen & Details
WebAuthn, U2F & FIDO2 sind verwandt
U2F „obsoleter“ Vorgänger
FIDO2 = WebAuthn + CTAP
FIDO2 ist rückwärtskompatibel mit U2F (CTAP1)
CTAP2 ermöglicht neue Anwendungsfälle, z.B.
passwortlose Authentifizierung