Passwörter in der IT-Sicherheit

Gespeichert von Matthias Heinz am Di, 25.02.2020 - 10:24

Die Geschichte des Passworts ist tausende von Jahre alt. Der heutige Name "Passwort" stammt aus dem Englischen von "to pass", also durchlassen, ab. Es bezeichnet ein Wort, welches Zugang zu einem bestimmten Bereich einer Person oder Gruppe gewährt. Bereits in der Antike dürften die Probleme bekannt gewesen sein, die daraus entstanden, wenn ein Passwort in die falschen Hände gelangte.

Heute brauchen wir viele Passwörter für viele unterschiedliche Bereiche. Wir benutzen sie für alle möglichen Websites, für Online- oder Telefonbanking, um unsere Identität zu bestätigen. In letzter Zeit gibt es verstärkt Bemühungen Passwörter durch andere Techniken zu ersetzen, was zu einem wahren Wildwuchs geführt hat. Aber fangen wir von vorne. Was ist ein Passwort? Wo liegen die Probleme und wie werden diese bisher gelöst oder versucht zu lösen?

Ein Passwort ist ein Wort, ein Satz oder eine zufällige Zeichenkette. Wenn zwei Seiten das Passwort kennen, dann können sie sich gegenseitig authentifizieren. Meistens wird aber nur die einfache Variante genommen, man tippt sein Passwort irgendwo ein und bekommt dann Zugriff auf bestimmte Dienste oder Daten. Zu einem Problem wird das, wenn eine dritte Partei das Passwort mitlesen oder beim Dienst auf unser dort gespeichertes Passwort Zugriff erlangt. Um das zu erschweren wurden verschiedene Techniken entwickelt, die zusammen die Authentifizierung mit einem Passwort sicher gestalten sollen.

Ein großes Problem ist der Übertragungsweg des Passworts. Üblicherweise wird dieses über eine Tastatur eingegeben, gelangt so in einen Computer und wird von dort über ein Netzwerk an den Empfangscomputer, Server genannt, gesendet. Und für jeden Teil dieser Kette gibt es Angriffsszenarien, die je nach Bedrohungslage bedacht werden müssen. Um nicht zu weit ins Detail zu gehen, lassen wir die Angriff auf die Tastatur und den Computer erst einmal außen vor. Am unauffälligsten ist es für einen Angreifer, wenn die Verbindung zwischen Computer und Server abgehört wird. Das ist zusätzlich noch ertragreicher, weil sehr viel mehr Informationen dort abgegriffen werden können und keine Seite es direkt mitbekommt. Um dem vorzubeugen werden deshalb heute die Verbindungen zwischen Computer und Server verschlüsselt. Natürlich sind Angriffe auf diese Verschlüsselung möglich, sie sind aber dermaßen viel schwerer, dass sich die Mühe nicht lohnt, zumal die Erfolgsaussichten in der Regel gering sind.

Hashing

Ein weiteres Problem ist, dass beide Seiten das Passwort kennen müssen. Stellen wir uns einmal vor, der Serverbetreiber speichert alle Passwörter im Klartext (d.h. exakt so, wie sie eingegeben werden müssen) in einer Datenbank. Immer wieder kommt es vor, dass solche Datenbanken von Angreifern kopiert werden. Oftmals wird es ihnen dabei auch noch leicht gemacht. Aber auch die Angreifer von Innen, zum Beispiel ein missmutiger Administrator, ist hier eine Gefahr. Da viele ihre Passwörter an mehreren Stellen benutzen, bedeutet das Wissen über Benutzername und Passwort und vielleicht noch die Mailadresse, dass ein Angreifer sich bei vielen verschiedenen Diensten anmelden und dort unter ihrem Namen relativ ungestört agieren kann.

Um das zu verhindern werden Passwörter heutzutage als deren Hash abgelegt. Ein Hash ist das Ergebnis einer Funktion, die wie eine Art Einbahnstraße funktioniert. Auf der einen Seite steckt man ein Passwort hinein und erhält dafür eine lange Zeichenkette. Aus dieser Zeichenkette aber kann das Passwort selber nicht oder nur schwer zurückgerechnet werden. Wer also nur den Hash des Passworts kennt, kann diese Information nicht direkt benutzen.

Rainbowtables

Aber auch auf den Hash gibt es Angriffe: Man rechnet für alle möglichen Kombinationen an Zeichen den Hash aus und vergleicht diesen dann mit den in der Datenbank gespeicherten Hashs. Und weil man das nicht jedes Mal neu machen will, speichert man die Ergebnisse ab. In der Fachsprache wird dieses Tabelle zwischen Passwörtern und Hashs als Rainbowtable bezeichnet.

Für kurze Passwörter lassen sich solche Rainbowtables innerhalb weniger Minuten berechnen. Aber mit jedem Zeichen mehr steigt die Komplexität an. Eine kleine Beispielrechnung. Es sind nur die Zeichen von A-Z erlaubt und keine Umlaute, also 26 Stück insgesamt. Bei einem vierstelligem Passwort ergibt das 456976 Kombinationen (also 26*26*26*26). Das geht auf einem modernen System in unter einer Sekunde. Verlängern wir es auf acht Stellen, sind es schon 208.827.064.576 Kombinationen. Das klingt nach viel, aber für einen modernen Computer ist das weniger als eine Minute. Mit jeder weiteren Stelle steigt aber die Komplexität an. Verdoppeln wir noch einmal auf 16 Stellen. Und schon dauert es für einen einfachen Angreifer über 100 Jahre, um eine Rainbowtable zu erstellen. (Wer selber einmal spielen will klickt hier. Und auch wenn es reizt, gebt da keine echten Passwörter ein.)

Wörterbuchattacken

Das klingt schon mal gut für längere Passwörter. Aber es gibt noch einen weiteren Angriff und das hat etwas mit unserer Menschlichkeit zu tun. Wir mögen Passwörter, die wir uns gut merken können. Also nehmen wir Wörter aus dem Wörterbuch und setzen diese entweder zusammen oder hängen an ein Wort einfach noch ein Sonderzeichen an. Und dafür gibt es Wörterbuchattacken. Hierbei wird eine Rainbowtable für Kombinationen aus beliebten Wörtern und Zeichen genommen. Zum Beispiel ein Name und ein Geburtsjahr. Aber auch das System stößt an seine Grenzen, wenn es viele Wörter sind. Eine Empfehlung ist es zum Beispiel vier bis fünf unabhängige Wörter zu einem Passwort zu kombinieren. Werden diese noch durch Sonderzeichen oder Zahlen getrennt oder einzelne Zeichen durch Zahlen ausgetauscht (Beispiel: Ein e durch eine 3), dann erhält man lange, aber einfach zu merkende Passwörter, deren Hashwerte nur sehr schwer zurückgerechnet werden können.

Salting

Um die Erstellung von Rainbowtables noch schwierig zu machen, gibt es noch das Salting (engl. salzen) von Passwörten. Dabei wird vor dem Hashen dem Passwort eine zufällige, lange Zeichenkombination angehängt. Dieser Salt muss natürlich für alle Benutzer unterschiedlich sein und zwingt einen Angreifer dazu für jeden Benutzer und den dazugehörigen Hash eine eigene Rainbowtable erstellen zu müssen.

Der Sonderfall kurze Passwörter

Nun werden einige anmerken, dass es viele Serversoftware gibt, die nur Passwörter mit acht Zeichen erlauben und fragen, ob sie sich Sorgen machen müssen. Die Antwort ist ja und nein. Software, die nur mit solch kurzen Passwörtern arbeitet ist in der Regel recht alt und auch an vielen anderen Stellen nicht mehr auf der Höhe der Zeit. Das erhöht etwas die Wahrscheinlichkeit, dass die komplette Benutzerdatenbank mit allen Passwort-Hashes von einem Angreifer kopiert werden kann. Gleichzeitig kommt es aber auch stark darauf an, wie das Authentifizierungsverfahren aussieht. Wenn die Software keine offensichtlichen Schwachstellen hat, dann bleibt einem Angreifer nur das Ausprobieren aller möglichen Passwortkombinationen pro Benutzer. Nach obiger Formel würde das unter einer Minute dauern. Aber der Angreifer hat hier keine Kontrolle darüber, wie das Passwort überprüft wird. Die meisten Dienste haben genau gegen solche Angriffe zusätzliche Sicherheitsmaßnahmen. Zum Beispiel kann ein Passwort nur drei Mal falsch eingegeben werden und dann muss man einige Sekunden warten. Bei unseren oben genannten 208 Milliarden Kombinationen führt eine Verzögerung von 10 Sekunden alle drei Passwortfehleingaben dazu, dass es 22.000 Jahre dauert, um alle durchzuprobieren. Auch wenn ich solche kurzen Passwörter nicht gutheißen kann und sie mitnichten dem aktuellen Stand entsprechen, so ist die Lage nicht ganz so hoffnungslos, wie sie erst aussieht. Ich empfehle für solche Seiten aber tunlichst zufällig Passwörter zu generieren und diese nirgendwo sonst zu benutzen.

Lösungen, um Passwörter sicherer zu machen

Schon früh wurde im Online-Banking bemerkt, dass es nicht ausreicht einen Benutzer nur über einen Benutzernamen und ein Passwort zu authentifizieren. Ein Hauptziel von Angreifern waren unsichere Betriebssysteme und Webbrowser, worüber sie beide Datensätze leicht abgreifen konnten. Sie hatten damit einen Vollzugriff auf das System. Früh setzten sich Tan-Listen durch, eine erste Form der sogenannten 2-Factor-Authorization (2FA, Zweifaktorautorisierung). Darauf standen eine Reihe zufällig erzeugter Zahlen, wovon bei jeder Transaktion eine eingegeben wurde. Diese wurde danach ungültig. Das sind sogenannte Einmalpasswörter (auch OTP, One time pads). Bald stellte sich aber heraus, dass einige Anwender mit geringem Aufwand dazu bewegt werden konnten diese Einmalpasswörter auch an anderer Stelle einzugeben. Zum Beispiel auf täuschend echten (jedenfalls für den normalen Benutzer) Kopien von Bankwebsites. Daraufhin wurden die iTans eingeführt. Das waren nummerierte Tans und bei jeder Transaktion wurde eine spezielle Tan abgefragt. Diese Veränderung zusammen mit der Verbesserung der Browser-Sicherheit und Erkennung von Fake-Websites hielt für eine Weile. Aber daraufhin wurden die Angreifer einfach dreister und fragten aus "Sicherheitsgründen" einfach die gesamte iTan-Liste ab und es gab Anwender, die darauf hineinfielen.

Eine frühe Lösung, um das Problem entgültig zu lösen waren die ChipTan-Geräte der Volksbanken und Sparkassen. Dafür wird ein Code auf dem Monitor angezeigt, womit die Transaktion über ein externes Gerät und die Bankkarte verifiziert werden kann. Selbst wenn nun ein Angreifer den Browser-Inhalt mitlesen und ändern kann, es war unmöglich die Transaktion selber zu verändern, denn dazu müsste das externe Gerät ebenfalls gehackt werden. Mittlerweile gibt es noch andere Verfahren, die alle auf ein zusätzliches externes Gerät setzen, seien es photoTan (hier wird ein Code vom Bildschirm eingescannt), AppTan (eine eigene Software auf einem Smartphone, mit der entweder der photoTan-Code abgescannt oder eine zweite Verbindung zur Bank zur Verifizierung aufgebaut wird) oder eine Tan-SMS (welche zwar über das unsichere Mobilfunknetz geht, aber alle wichtigen Informationen enthält, um eine externe Verifikation zu ermöglichen).

Viele dieser Varianten können und werden auch schon zur Absicherung anderer Passwort-basierter Zugriffe eingesetzt. Zusätzlich gibt es noch SecureTokens, welche in der Regel USB-Sticks sind, die kryptographische Schlüssel verwalten. Der Zugriff auf ein System oder einen Dienst kann damit nur dann erfolgen, wenn dieser "Key" eingesteckt ist. Die Bundesregierung hat versucht ein solches Verfahren im neuen Personalausweis zu etablieren (Stichwort nPA). Das gilt aber weitgehend als gescheitert, weil die Handhabung zu schwierig war und neue Standards geschaffen wurden, anstatt einfach bestehende umzusetzen. (Das Not-Invented-Here-Syndrom ist unter Ingenieuren immer stark und ein großes Problem für die IT-Sicherheit).

Passwortersatzsysteme

Als Ersatz für ein Passwort werden gerne viele andere technische Systeme angepriesen. Von RFID-Karten (Hinweis: ohne zusätzliches Passwort), über Fingerabdruck, Venenmuster hin zu Gesichtserkennung. Aber alle diese Formen haben ein großes Problem: Sie können geklaut oder nachgemacht werden. Für Firmen mit RFID-Karten-Zugang ist ein beliebtes Angriffsszenario einfach die RFID-Karte des Chefs zu klauen. Wer kontrolliert nach Feierabend, ob die Karte wirklich im Portemonnaie ist? Zugegeben, es ist kein einfacher Angriff, aber durchaus machbar.

Fingerabdruckscanner wurden eigentlich alle gehackt. Meist reicht es an den Fingerabdruck heranzukommen und wir hinterlassen überall welche. Beim Venenmuster wird es schon etwas schwerer, da man das Opfer dazu bekommen muss seine Hand über einen entsprechenden Scanner zu halten. Kreative Köpfe unter uns werden aber relativ schnell einige Möglichkeiten vor dem inneren Auge sehen. An das Gesicht zu kommen, um die Gesichtserkennung zu überlisten, ist schon fast am Einfachsten, da wir heute alle immer eine Kamera dabei haben. Wer will bekommt ihr Bild und kann es entsprechend umgestalten, so dass die Gesichtserkennung darauf anspricht.

Zusätzlich haben diese Verfahren alle das Problem, dass sie unter Zwang oder Ohnmacht einfach überwunden werden können. Ein Passwort kann man vergessen, den eigenen Finger will man aber eigentlich an der Hand behalten. Unter Experten gelten diese Verfahren eher als der Benutzername als das eigentliche Passwort. Womit ich aber nicht ausdrücken will, dass es keine Anwendungsszenarien dafür gibt. Ein Türöffner mit Fingerabdruckscanner kann hilfreich sein, wenn man nur kurz aus der Tür will, diese aber sonst im Blick hat und bei längerer Abwesenheit mit einem Schlüssel verschließt.

Passwortlose Authentifizierung

Fast alle bisher genannten Verfahren benutzen auf die ein oder andere Art und Weise ein Passwort bei der Übertragung. Es gibt aber seit vielen Jahren schon Software, die ohne Passwort auskommen. Hierfür benutzt man Public-Key-Verschlüsselungsverfahren. Das sind Verfahren, bei denen eine Nachricht über einen öffentlichen Schlüssel verschlüsselt, aber nur durch den privaten Schlüssel wieder entschlüsselt werden kann. Auf der Serverseite wird der öffentliche Schlüssel abgelegt. Verbindet sich der Benutzer mit der Serverseite, verschlüsselt diese eine zufällige Nachricht mit dem öffentlichen Schlüssel und gibt diese Nachricht an den Benutzer. Nur der Benutzer im Besitz des Schlüssels kann die Nachricht entschlüsseln. Jetzt muss der Benutzer dem Server nur noch die entschlüsselte Nachricht zukommen lassen und hat dadurch bewiesen, dass er rechtmäßig Zugang erlangen darf.

Da es möglich wäre diese Nachricht abzufangen, durch eine dritte Person in der Mitte (ein Man-in-the-Middle-Angriff, MITM), kann noch ein zusätzlicher Zero-Knowledge-Beweis eingebaut werden. Dadurch wird die entschlüsselte Nachricht nicht mehr an den Server übertragen, aber dennoch dem Server verständlich gemacht, dass man den Inhalt der Nachricht kennt.

Aufmerksame Leser wird nun sicher eine Schwachstelle aufgefallen sein: Was, wenn der private Schlüssel kompromiert, also kopiert wird? Dagegen hilft eben wieder nur ein Passwort, womit die Benutzung des privaten Schlüssels auf die Personen eingegrenzt wird, die eben jenes kennen. (Eine kleine Anmerkung noch am Ende: Viele Crypto-Tokes verwenden dieses Verfahren. Eine Hauptanwendung ist SSH, aber auch in Browsern gibt es solche Zertifikats-basierten Anmeldungen. Leider wird es kaum bis gar nicht benutzt).

Fazit

Passwörter begleiten uns schon sehr sehr lange und werden so schnell auch nicht weggehen. Daher ist der richtige Umgang damit wichtig. Passwörter sollten lang und nicht zu einfach sein. Eine Liedzeile ist zwar lang, aber kein gutes Passwort. Am Besten ist es ein Wallet (ein Passwortspeicher) zu benutzen, in dem für jede Anwendung und Website ein eigenes Passwort abgelegt wird. Diese Passwörter können zufällig sein und sollten mindestens 16 Zeichen enthalten. Dieser Passwortspeicher sollte wiederum mit einem langen, merkbarem Passwort gesichert sein. So kommen Sie an alle Passwörter, aber sonst niemand. Geben sie Passwörter niemals weiter oder nur an sehr vertrauenswürdige Personen. Falls sie sich darum Sorgen machen, dass sie ihr Passwort vergessen könnten oder Angehörige im Notfall doch Zugriff haben sollten, so schreiben sie es auf und legen sie das Schriftstück in einen abschließbaren Stahlschrank, Safe oder ein Bankschließfach. Falls sie experimentieren wollen, dann legen sie sich einen Security-Token zu. Wobei ich diese für die normalen Anwender übertrieben und zu schwer zu bedienen halte. Und denken sie daran die sonstigen üblichen Regeln der IT-Sicherheit zu befolgen, denn ein Passwort ist nur so gut, wie das schwächste Glied in der gesamten Übertragungskette.