Fragen? Antworten! Siehe auch: Alternativlos
Ja und nein. Auf der einen Seite ist das kein reiner Schlangenöl-Placebo. An der Spec haben sich Experten aus mehreren Fachgebieten die Hände wund-masturbiert. Da ist einmal alles drin. Von Challenge-Response über Public-Key bis hin zu USB und NFC. Die Spec erwähnt als Inspiration auch Smartcards, damit wirklich jeder an Bord ist.
Das hat technisch schon Hand und Fuß, was die da machen. Ich rede trotzdem von Masturbation, weil dem ein paar Annahmen zugrundeliegen, über die man, zurückhaltend formuliert, nochmal diskutieren sollte.
FIDO2 kombiniert zwei Trends, die wir gerade gehäuft sehen in der IT-Security. Erstens: Unsere Software ist so unfassbar komplex geworden, dass wir Security nicht mehr herbeiführen können, daher bauen wir jetzt einen kleinen Mini-Rechner, und der ist dann so klein, dass man ihm noch vertrauen kann. Das Muster kennt ihr wahrscheinlich aus dem Supermarkt oder von Banken, die euch dann da so ein kleines Mini-Terminal für Kartenzahlung hinhalten. Da ist auch der Gedanke, dass das klein und verplombt ist und man dem daher vertrauen kann, weil die Bank oder der Supermarkt daran gar nicht mehr herumpfriemeln könnte, selbst wenn sie wollten.
Der zweite Trend ist, dass wir von sich gegenseitig vertrauenden Komponenten und der Unterscheidung "Internet vs. Intranet" zusehends wegkommen und stattdessen überall Krypto ausrollen. Selbst innerhalb von Chips haben wir inzwischen Krypto, und innerhalb von Modulen einer Software. Selbst so ein SOC, wie er in Mobiltelefonen verbaut wird, besteht inzwischen aus sich gegenseitig nicht mehr vertrauenden Modulen, die Krypto einsetzen.
Welche Annahmen meine ich jetzt, über die man nochmal reden sollte? Na die erste ist offensichtlich, dass diese Hardware "tamper proof" ist. Einer meiner Lieblingssprüche zu tamper-proof hardware ist von Peter Gutmann, der sagte: It is said that the only tamper-proof hardware is Voyager 2. Und zwar nicht, weil die Hardware sicher ist, sondern weil man da so schlecht rankommt, weil das Ding so weit weg ist. Die Annahme, dass man so einen Stick überhaupt tamper-proof machen kann, würde ich schonmal direkt bestreiten wollen. Klar, billig ist so ein Angriff auf so eine Hardware dann nicht. Aber wer weiß, wie viel wert die Geheimnisse sind, die ihr mit so einem Gerät absichern wolltet?
Die andere, wichtigere Annahme ist, dass es mit 2FA nicht so schlimm ist, wenn der Rechner oder der Browser gehackt wird. Und das stimmt halt auch nur partiell.
Ohne 2FA ist es so, dass ein Eindringling alle eure gespeicherten Passwörter direkt auslesen und ausleiten kann. Das ist im Normalfall ein Totalschaden.
Mit 2FA ist es so, dass die Passwörter nicht reichen, weil man den 2. Faktor braucht. Allerdings kann ein Angreifer im Browser ja einfach warten, bis ich mich das nächste Mal mit 2FA anmelde, und dann mit meiner angemeldeten Session Unfug machen. Das ist von der Auswirkung her fast genau so schlimm.
Dann gibt es da auch wieder eine Convenience-Abwägung. Nimmt man ein Token, was man bloß einstecken muss? Oder eines, wo man zusätzlich einen Knopf drücken muss? Oder eines, wo man den Fingerabdruck geben muss, damit der freischaltet? Die meisten Leute werden fürchte ich ein Token nehmen, das man einfach einsteckt und dann stecken lassen kann, und dann hat man halt nicht viel gewonnen in dem Szenario, dass ein Hacker den Browser übernimmt.
Und so ist es wie so häufig in der Security. Ist eigentlich keine doofe Idee, aber bringt eben auch nicht so viel, wie einem das Marketing aufzuschwatzen versuchen wird.
Ich persönlich verkünde ja seit ein paar Jahren, dass Komplexität der Feind ist. Unter der Metrik sieht so ein Token recht komplex aus. Zwischen PC und dem Token gibt es ein Binärprotokoll, über das man möglicherweise die Software auf dem Token angreifen kann. Weiß ich nicht, ob das eine reelle Bedrohung ist, aber die Angriffsoberfläche gibt es jedenfalls schonmal, und vorher gab es die nicht. Mir persönlich stößt es sauer auf, dass die erstmal NOCH ein neues Binär-Serialisierungs-Verfahren "erfunden" haben dafür. Dabei kommt dieser Scheiß von Google, und die haben uns vorher schon völlig ohne Not ihre Protocol Buffers reingedrückt. Der Typ von Protocol Buffers ist inzwischen nicht mehr bei Google. Was hat er als erstes getan? Ihr werdet es geraten haben: Ein neues Binär-Serialisierungs-Verfahren gemacht ("Cap'n Proto").
Das sind die Leute, die uns vorher gesagt haben, ASN.1 sei gefährlich und wir sollen unsere Krypto lieber als JSON in Base64 machen (googelt man JWT, wenn euch das neu ist).
Also, zusammengefasst. Ist das Schuldabwälzung? Ja. Ganz klar. Wenn euer Account jetzt gehackt wird, dann habt ihr euer Token verbummelt und es ist eure Schuld.
Ist es nur Schuldabwälzung? Ich glaube nicht. Aber ob euch das tatsächlich was nützt, hängt davon ab, ob es wahrscheinlicher ist, dass ihr (im Vorher-Szenario) den Laptop verliert, oder (im Nachher-Szenario) das Token. Dass die Krypto von den Tokens ranzig ist, da müsst ihr euch glaube ich wenig Sorgen machen. Es kommt so gut wie nie vor, dass Krypto-Krams über die Krypto angegriffen wird. Ich würde mir eher Sorgen machen, dass mir ein Taschendieb das Token klaut, und weil das nichts wiegt, merke ich es nicht sofort. Und dann ist da am besten auf dem Fingerabdrucksensor noch ein rekonstruierbarer Fingerabdruck von mir drauf.
Im Übrigen: Wenn ihr euch für FIDO2 entscheidet, dann gilt natürlich dasselbe wie auch für andere Security-Produkte. Kann ich dem Hersteller trauen? Ist das Open Source? Kann ich das zur Not selbst patchen, wenn der Hersteller stirbt oder sich weigert? Wie sind die Recovery-Pfade, falls das Token verlorengeht? Fange ich mir damit eine Beweislastumkehr ein?
Update: Dies ist vielleicht die richtige Gelegenheit für den Hinweis, dass es auch außerhalb von 2FA Wege gibt, die Arbeitsumgebung sicherer zu machen. Es hat sich z.B. eingebürgert, sich bei Webseiten einzuloggen, und dann einfach eingeloggt zu bleiben. Während ihr bei einer Site eingeloggt seid, kann auch eine andere, böse Webseite auf allen anderen Webseiten, auf denen ihr noch eingeloggt seid, Daten abgreifen und eventuell sogar Transaktionen auslösen. Das ist ein häufiger Bug in Webseiten, gegen den es seit einer Weile ordentliche Browser-Gegenwehr gibt, die über "wir passen halt überall auf" hinausgeht. Aber das ist ein Risiko, das man sich gar nicht erst ans Bein binden muss. Ich jedenfalls halte mich auf Webseiten wenn möglich unangemeldet auf und logge mich nur kurz ein, wenn ich einen Kommentar abgeben will oder so. Und dann ist da noch die Frage, was man mit den Passwörtern macht. Hier gibt es ein weites Spektrum an Ratschlägen. Ein Master-Passwort im Browser vergeben hilft, falls einem der ausgeschaltete Rechner wegkommt. Hilft nicht, wenn man sich einen Trojaner einfängt oder einen Angreifer im Browser hat oder wenn der Rechner nur im Sleep-Modus war und nicht ganz ausgeschaltet, und da am Besten noch ein Browser offen war. Und für "der ausgeschaltete Laptop wird geklaut" habt ihr hoffentlich eh schon Full Disk Encryption aktiviert.
Meine Einschätzung ist im Moment, dass die Browser die Achillesferse der IT sind, und man immer sofort alle Security-Updates einspielen muss. Ich bin sogar soweit gegangen, meine Browser vom Beta-Channel zu beziehen, damit ich nicht nur einmal im Monat Bugfixes kriege.
Dass man nicht überall dasselbe Passwort nehmen soll, hat sich glaube ich schon herumgesprochen. Ich halte es so, dass ich Passwörter von einer Software zufällig generieren lasse. Dann weiß ich, dass die Passwörter ausreichend Entropie haben. Nachteil: Die Passwörter merkt man sich dann nicht mehr. Dafür gibt es Passwortmanager, oder man verlässt sich auf den Browser. Allerdings: Wer den Browser übernehmen kann, kommt auch an eure Passwörter, solange es da einen Automatismus gibt und ihr die nicht immer manuell rüberkopiert.