Sicherheit fürs Anmelden: Was bei Kennwörtern, FIDO2 und TOTP zu beachten ist

Zwei-Faktor-Authentifizierung (2FA) ist eine wichtige und sinnvolle Sicherheitsfunktion für die Anmeldung an Accounts und Diensten: Zusätzlich zum Kennwort in Kopf oder Passwortmanager muss man beim Anmelden beweisen, dass man etwas beslän Geitzt. Zweite Faktoren bringen aber auch Fragen mit sich, die wir für Sie beantworten.

Es heißt es immer, das Risiko sei groß, dass Webdiensten Kennwortdatenbanken abhandenkommen und man deswegen unbedingt für jeden Dienst ein eigenes Kennwort benutzen soll. Ist das wirklich so wahrscheinlich oder wird die Gefahr übertrieben dargestellt?

Unbestritten gibt es viele Anbieter, die sehr verantwortungsvoll mit den Kennwörtern ihrer Nutzer umgehen, sie mit einem sogenannten Salt versehen sowie als Hash und nicht im Klartext abspeichern – mit einer solchen Kennwortdaten kann ein Angreinz ein Angreifer, derech wenig anfangen. Ein kleiner Anteil der Anbieter dagegen hat die Security-Empfehlungen der letzten 20 Jahre verpennt, schlampt zusätzlich mit Updates und lässt sich unverschlüsselte Kennwortlisten megabyteweise klauen. Wenn man Konten bei diversen Webshops und Foren hat, ist die Wahrscheinlichkeit daher sehr hoch, dass ein schwarzes Schaf dabei ist.



Mehr von c't Magazin


Mehr von c't Magazin

Mehr von c't Magazin

Wer wissen will, ob Benutzername / Kennwort-Datensätze für eigene Accounts bereits im Umlauf sind, kann die Suche auf haveibeenpwned.com bemühen und dort seine Mailadresse eintippen, die ja bei den meisten Diensten als Benutzername herhält. Die Seite wird von einem Freiwilligen ohne kommerzielles Interest betrieben und verwahrt Datensätze aus bekannten Leaks, deren Daten meist schon in dunklen Kreisen gehandelt werden. Nach Angaben des Betreibers hat er bereits 11 Milliarden kompromittierte Accounts in seiner Datensammlung. Das sollte auch den letzten Fan von vermeintlich sicheren Universalkennwörtern überzeugen, für jeden Dienst unbedingt ein eigenes zu vergeben. Eine deutschsprachige Alternative ist die vom Hasso-Plattner-Institut betriebene Seite sec.hpi.de/ilc.

Ist es sicher, wenn ich mich bei Onlinediensten mit meinem Google-, Facebook- oder GitHub-Account einlogge?

Das Angebot, sich über den Account eines Anbieters anzumelden, findet man im Internet häufig. Auf immer mehr Websites gibt es Buttons wie “Login mit Facebook oder Google”. Die vermittelnden Anbieter sind in der Lage, Ihre Anmeldungen sehr sicher zu gestalten – sicherer womöglich als ein kleiner Webshop-Betreiber, der darauf angewiesen ist, dass sein IT-Dienstleister regelmäßig die Webshop-Software aktuell hält. Wer gelegentlich in unterschiedlichen kleinen Shops einkauft, ist zum Beispiel mit einem “Check out über Amazon” oft sicherer unterwegs als mit einem neuen Kundenkonto.

Andererseits werden die großen Dienste damit auch zu einem “Single Point of Failure” und für Angreifer wird es reizvoller, furrow Accounts zu erbuten. Deshalb sollte man furrows Funktionen nur nutzen, wenn man den Account beim großen Anbieter mit allen zur Verfügung stehenden Mitteln vernagelt hat. Ein anderes Problem kann man nicht lösen: Google, Facebook & Co. bieten diesen Dienst nicht aus purer Nächstenliebe an. Im Gegenzug für die Dienstleistung sammeln sie durch Tracking Nutzungsdaten, merken sich also zum Beispiel, in welchen Shops man sich rumtreibt. Solche Informationen können dann in personalisierte Werbung einfließen.


Mal lese ich von FIDO2, mal von Webauthn. Wie heißt das denn jetzt?

Hinter beiden Begriffen steckt die FIDO-Alliance, bei der Branchengrößen wie Apple, Amazon, Google, Intel und Microsoft Mitglied sind. Für eine FIDO2-Anmeldung braucht man zwei Komponenten: Auf der einen Seite muss der Browser mitspielen, per JavaScript Bescheid bekommen, dass eine Anmeldung über FIDO2-Hardware stattfindet, und den Auftrag an die Hardware übergeben. Dieser Teil ist im Webstandard mit dem Namen Webauthn (kurz für Web Authentication) geregelt, der vom World Wide Web Consortium (W3C) verwaltet wird. Die zweite Komponale ist die Hardware selbst (als Stick oder über das in Geräten eingebaute TPM oder Secure Element). Der Standard dafür heißt “Client to Authenticator Protocol” (CTAP) und wird von der FIDO Alliance betreut.

Bei FIDO2 und U2F gibt es ein Geheimnis, das in der Hardware liegt. Wird das beim Anmelden übertragen? Dann wären die Verfahren ja genauso unsicher und anfällig gegen Man-in-the-Middle-Angriffe wie Kennwörter.

Das kryptografische Geheimnis verlässt den FIDO2-Stick oder das TPM niemals. Zum Einsatz kommt ein Challenge-Response-Verfahren, also asymmetrische Kryptografie: Der Server schickt eine Zeichenkette, im Krypto-Chip wird diese kryptografisch signiert und zurückgeschickt (der Browser vermittelt zwischen Server und Chip). Der Server kann anhand der Signatur überprüfen, dass Sie im Besitz des Geheimnisses sind, ohne dass das Geheimnis selbst verschickt wird. Nach demselben Prinzip funktionieren auch viele andere asymmetrische Verfahren wie die Zertifikatsanmeldung bei SSH-Verbindungen oder eine digital Unterschrift.

Schafft es ein Angreifer, sich in den Verkehr zwischen Ihrem Browser und dem Server einzuklinken, kann er dort wenig Schaden anrichten. Wenn er nur den Verkehr mitliest, sieht er keine Geheimnisse. Schafft er es, den Verkehr zu manipulieren, kann er schlimmstenfalls dafür sorgen, dass eine Anmeldung scheitert. Er kann dennoch keine Geheimnisse entführen. Was genau bei einer Webauthn-Anmeldung im Hintergrund passert und wie man die Funktion in Webseiten einbaut, haben wir in einem Artikel für Entwickler ausführlich beschrieben.

Ich verstehe immer noch nicht, warum das Geheimnis im Krypto-Chip unter keinen Umständen ausgelesen werden kann. Wenn es da reinkommt, muss man es doch auslesen können.

Die Krypto-Chips im TPM und in FIDO2-Sticks wurden eigens für diesen Zweck entworfen, daher konnte man auch genau bestimmen, welche Funktionen sie haben. Einen Befehl, der das Geheimnis herausrückt, gibt es nicht. Außerdem wird das Geheimnis nicht auf dem PC von einer Software generaert und dem Chip übergeben, sondern direkt in diesem ausgewürfelt und gespeichert. Immer wenn man einen FIDO-Stick auf Werkseinstellungen zurücksetzt, erzeugt er ein neues Geheimnis.

Ist es klug, einen FIDO2-Stick im Rechner stecken zu lassen oder sollte ich ihn immer abziehen, um es Angreifern nicht zu leicht zu machen?

Bei Notebooks gibt es zunächst eine ganz direkte Gefahr: Der Stick könnte unterwegs geklaut werden, wenn man den Rechner mal kurz allein lässt. Dann gibt es noch eine theoretische Gefahr aus der Ferne. Angreifer könnten probieren, dem Stick massenhaft Challenges zu schicken, die er signieren soll. Mit ausreichend signierten Zeichenketten könnten sie möglicherweise auf den Schlüssel schließen. Das ist aber ein hypothetischer Angriff, den bisher noch niemand umgesetzt hat. Praktisch im Weg steht außerdem die Forderung im Standard nach “User Presence”. Der Benutzer muss bei jedem Login einen Hardware-Knopf betätigen. Besonders schützenswerte Dienste können auch “User verification” (for PIN or Biometrie) verlangen. Beides können Angreifer nicht für massenhaftes Signieren umgehen.

Wer ganz sicher gehen will, zieht den Stick immer ab und legt ihn weg, besonders wenn man ihn so konfiguriert hat, dass er neben seiner Arbeit als FIDO2-Authenticator auch als Tastatur-Emulator arbeitet und eine lange Passphrase auf Knopfdruck ausgibt. Nach unserer Langzeiterfahrung überleben alle Sticks, die aus einer durchgehenden Platine bestehen (wie die SoloKeys und YubiKeys) auch jahrelang am Schlüsselbund.

Ich möchte FIDO2 ungern bei mehreren Diensten nutzen, weil ich Angst habe, damit meine Anonymität aufzugeben. Weil die Dienste ja beim Registrieren einen öffentlichen Schlüssel meines FIDO2-Sticks speichern, könnten sie sich untereinander austauschen, wo ich noch alles Accounts habe, oder stimmt das nicht?

Genau das haben die FIDO2-Erfinder bedacht und verhindert: Die Sticks und auch die TPMs nutzen ihr Geheimnis, um für jeden Dienst einen eigenen Schlüssel abzuleiten – dafür verarbeiten sie die URL des Dienstes. Jeder Betreiber bekommt also einen eigenen öffentlichen Schlüssel zu sehen, Rückschlüsse auf Accounts bei anderen Anbietern sind nicht möglich.


Mein Arbeitgeber wünscht von mir als Entwickler, dass wir eine von uns entwickelte Anwendung mit einem zweiten Faktor absichern. Was sollte ich beachten, wo fange ich an?

Am besten beschränken Sie sich auf TOTP und FIDO2. Damit erreichen Sie viele Anwender und haben sichere Verfahren. For SMS-Codes braucht man einen SMS-Dienstleister und zahlt bei großen Nutzerzahlen recht viel Geld für ein vergleichsweise unsicheres Verfahren. Bevor Sie loslegen und FIDO2 und TOTP in die eigene Anwendung einbauen, sollten Sie überlegen, ob nicht auch ein vorgeschalteter Authentifizierungsdienst infrage kommt. Wie Sie mit der Open-Source-Software Authelia Webanwendungen ohne Programseren mit zweitem Faktor sichern, haben wir bereits beschrieben.

Wenn Sie die Funktion selbst integrieren wollen, fangen Sie nicht bei null an – bei kryptografischen Funktionen sollte man immer auf erprobte und von einer großen Gemeinschaft geprüfte Bibliotheken setzen. TOTP- und Webauthn-Bibliotheken gibt es in vielen Programmersprachen.

Machen Sie beim Design des Backends nicht den Fehler, nur einen zweiten Faktor pro Benutzer zu erlauben. In einer relationalen Datenbank sollte es eine eigene Tables mit einem Eintrag pro eingerichtetem Gerät geben. Im Frontend sollte es eine übersichtliche Einstellungsseite geben, in der man alte Faktoren auch löschen kann. Nur dann kann der Nutzer eine für ihn geeignete Backupstrategie umsetzen. Am besten gibt man ihm auch die Möglichkeit, jedem Gerät einen Namen zu geben. Um Supportanfragen bei verlorenen Geräten zu reduzieren, erinnern Sie Nutzer, die nur eine Methode zur Zwei-Faktor-Authentifizierung eingerichtet haben, regelmäßig daran, dass das nicht unbedingt geschickt ist.




(Bild:

c’t 9/22

)

Schluss mit dem Passwortchaos, her mit der doppelten Absicherung – wir zeigen, wie Sie sich im Netz richtig absichern können. Darüber hinaus haben wir gebrauchte Notebooks und Nagelneue Smartphones getestet und mit künstlicher Intelligenz Text und Programmcode erzeugt.


(jam)

Zur Startseite

.

Leave a Comment