Warum müssen Passwörter lang und komplex sein?

Dazu muss man einen Schritt zurück treten und nicht die Passwörter, sondern die Hashwerte betrachten. Der "Hash(-Wert)" einer Datei oder einer Zeichenkette ist eine spezielle Art der Prüfsumme, die man sich als besonders komplizierte Quersumme einer Zahl vorstellen kann. Während aber eine Menge von Zahlen die Quersumme "7" haben können, kommen "kryptographische Hashfunktionen" mit der Besonderheit, für jede Zeichenkette eine andere Prüfsumme aufzuweisen. So kann man nicht nur prüfen, ob Daten korrekt übertragen wurden, sondern auch, ob eine Datei geändert / manipuliert wurde. Auch steht der Hashwert einer Datei für ihre Identität, daher gilt er auch als "digitaler Fingerabdruck", was ihn eben für Passwort-Hashes interessant macht.

Das alles ist mit reichlich Mathematik überzuckert, denn es müssen verschiedene Dinge berücksichtigt und unter einen Hut gebracht werden: der Hash muss kurz sein; das Verfahren darf nicht zu lange dauern; zwei verschiedene Datensätze dürfen nicht einen gemeinsamen Hashwert haben ("Kollisionen"); aus dem Hashwert darf nicht die Datei oder der ursprüngliche Datensatz erzeugt werden können ("Einwegfunktion")...

Verbreitete Algorithmen heißen zum Beispiel CRC (Cyclic Redundancy Check), MD (Message Digest Algorithm) oder SHA (Secure Hash Algorithm). Infos zu den zahlreichen Methoden finden Sie z.B. hier. Die Prüfsummen, die bei Hashes errechnet werden, haben aus praktischen Gründen meist feste Längen wie 32, 64, 128 oder mehr Bits. Diese Länge entscheidet nur zum Teil über die "Unhackbarkeit", sondern vielmehr bestimmt sie die Zahl der eindeutig identifizierbaren, hashbaren Daten. Allgemein gilt durchaus, dass längere Hashes eines Verfahrens "sicherer" sind. Zugleich der MD5-Hash eines Passworts wie 1 genauso "lang" wie der des Passworts Rindfleischetikettierungsüberwachungsaufgabenübertragungsgesetz.

Bei einigen Hashes kann man die Länge (des Hashwerts) am Verfahrensnamen ablesen (CRC32, CRC64), bei anderen verbreiteten Verfahren (MD5, SHA1) nicht mehr. So ist das früher sehr verbreitete MD5 einfach ein verbessertes (geknacktes) MD4, SHA-2 unterscheidet sich erheblich von SHA1, und um die Verwirrung komplett zu machen findet man Begriffe wie SHA-256, SHA-384 und SHA-512, mit denen aber meist SHA-2 gemeint ist. SHA-3 ist derzeit der heilige Gral der Hashwerte, an ihm wird noch gearbeitet.

Hash-Passwörter

Typisch sind Hashes etwa, um Passwörter zu speichern: Speichert man nicht die Passwörter, sondern die Hashes von Passwörtern, dann kann die Datenbank mit den Hashwerten geknackt worden sein - dennoch kann ein Angreifer damit nichts anfangen, weil die Passwörter weiterhin geheim bleiben. Nur die Hashes sind bekannt, nicht aber, was sie "bedeuten". Leider gilt das nur in Grenzen, wie wir noch sehen werden.

Auf der Seite hashgenerator.de können Sie sehr schön sehen (live!), wie sich der Hashwert ändert, sobald Sie den Text ändern. Sie sehen sofort, dass Hashwerte mehr sind als Prüfsummen - selbst eine "1" erzeugt sofort einen komplexen Hashwert, im Beispiel mit MD5 den Wert "c4ca4238a0b923820dcc509a6f75849b".

MD5-Hash von 1

Der Text im Feld "message" könnte also zum Beispiel ein Passwort sein, das ein Dienst nicht im Klartext, sondern als Hashwert speichert. Meldet sich ein User an, vergleicht das System nicht sein Passwort mit dem gespeicherten Passwort, sondern es erzeugt einen Hash des Passworts (und vergisst es) und vergleicht diesen Hash mit dem gespeicherten Hash des Passworts. Gut so, denn so kann das Passwort nicht bekannt werden - nur der Hash.

Das (schlechte) Passwort sesame wird also in MD5 zu einem scheinbar kryptischen c8dae1c50e092f3d877192fc555b1dcf (wobei die Buchstaben keine Buchstaben sind, sondern Teil der hexadezimalen Ziffern).

MD5-Hash von sesame

Hackt nun jemand die Datenbank der Benutzerinformationen von Dienst XY, kriegt er (im Idealfall, aber nicht immer) keine Passwörter, sondern nur Hashes wie diesen. Wobei c4ca4238a0b923820dcc509a6f75849b (Passwort "1") genauso "kompliziert" wirkt wie c8dae1c50e092f3d877192fc555b1dcf (Passwort sesame). Doch das täuscht.

Wie Sie den Hash-Wert hacken

Nun können Sie selbst mal (gedanklich) Hacker spielen: Sie haben also beispielsweise den Passwort-Hash c8dae1c50e092f3d877192fc555b1dcf (Passwort ... wissen Sie (noch) nicht!) erbeutet und wollen wissen, wie das Passwort lautet? Das geht eigentlich nicht, denn es ist die Idee von (guten) Hashwerten, dass man eben nicht einfach vom Hashwert das Original errechnen kann.

Was aber geht, ist das folgende:
(Fast) Alle Algorithmen liegen offen. Daher ist der MD5-Hash von "sesame" immer gleich, egal, ob Sie den Wert mit hashgenerator.de oder mit onlinemd5.com erzeugen - oder es selbst ausrechnen. Sie können sich also auf Basis von zum Beispiel dem MD5-Pseudocode in Wikipedia ein Tool programmieren, welches für Sie aus beliebigen Zeichenketten (vulgo: mögliche Passwörter) die zugehörigen MD5-Hashes errechnet. Einige Systeme haben MD5 schon eingebaut, etwa PHP oder Python, für andere Sprachen wie Java lassen sich leicht Snippets finden.

Als "mögliche Passwörter" nehmen Sie zum Beispiel eine Liste aller Wörter und Begriffe (gibts im Web etwa hier, eigentlich reicht schon eine Liste wie die der häufigsten Wörter) und erzeugen dann mit Ihrem Tool von allen diesen Wörtern einen MD5-Hash. Das Ergebnis ist eine Tabelle wie diese:

admin 21232F297A57A5A743894A0E4A801FC3
keines  22BE23B8AB62881C410DC007D9CD7923
sesam CFA65021463859C0D85D6F2E02040EEB
sesamöffnedich 63FCFD2DAB915F507722F808CA09ECC1
SesamÖffneDich 7B5F3074A0E208B7E538298926373214
...
(nur halt viel länger ;-)

Wenn Sie eine solche Tabelle mit allen Wörtern, die es gibt, plus allen Namen und Begriffen von Superman bis Batman und so weiter durchrechnen lassen, dann haben Sie eine gigantische Liste von Wörter und ihres Hashes. Eine solche Tabelle nennt man Regenbogentabelle.

Der Trick ist, dass Sie jetzt nur noch einen bekannten Hash in dieser Tabelle suchen müssen - und damit das Passwort finden. So "knacken" Sie alle Passwörter (aber nur die, die in Ihren Wörterbüchern vorkommen).

Es wird Sie nicht überraschen, dass andere das bereits getan haben. Im Fall von MD5 reicht zum Beispiel eine Website wie md5online.org. Dort werfen Sie den erbeuteten, an sich wertlosen Hash in den Suchschlitz und erhalten das wertvolle Passwort:

Ergebnis: "sesame". Hah, wir sind Superhacker!

Das bedeutet nebenbei: Knack-Webseiten wie diese (oder Meta-Knacker wie md5cracker.org) "knacken" nichts, sie schlagen nur in einer Tabelle nach.

Hashwert-(Regenbogen)-Tabellen

Grundlage dafür sind gigantische Regenbogentabellen, die es fix und fertig im Web zum Downloaden gibt, zum Beispiel auf freerainbowtables.com. Dort können Sie zum Beispiel sehen, dass eine Regenbogentabelle für alle kleingeschriebenen, nur aus Buchstaben bestehenden (Pass)Wörter mit bis zu 8 Buchstaben existiert, die bereits 16 GByte dick ist (mit 9 Buchstaben schon 109 GB).

Regenbogentabellen

Je länger das Passwort, desto länger die Tabelle der Möglichkeiten, wie dieses aussehen kann.

Warum Passwörter lang sein müssen

Womit ich zur Antwort komme, warum Passwörter lang (und komplex) sein müssen:

1. Aus der Existenz der Regenbogentabellen im Bild oben ergibt sich: Alle mit MD5 gehashten Passwörter, die nur aus Kleinbuchstaben bestehen und die kürzer sind als 9 Buchstaben, können (bei MD5) als bereits gehackt gelten. Dito alle aus Ziffern bestehenden Passworthashes bis 14 Zeichen Länge.

(Wobei "gehackt" nicht bedeutet: "Das Konto wurde bereits mit dem Passwort missbraucht." Sondern es bedeutet: "Wenn morgen ein Dienst gehackt wird, sagen wir: Hotmail, und die Datenbank mit Usernamen/E-Mail und Passworthashes in Umlauf gerät, gelangt damit auch der Hash des Passworts in eine interessierte Teilöffentlichkeit, ergo kann dann jemand zu EINEM Konto das Passort ermitteln und den normalen User aussperren oder es abschöpfen.)

2. Bedeutet auch: Mit langen Passwörtern von 16 Zeichen Länge sind Sie derzeit noch auf der einigermaßen sicheren Seite. Weil Regenbogentabellen, die alle Kombinationen mit 16 Zeichen Länge enthalten, schon so unhandlich wären, dass sie eher selten sein dürften. Die NSA hingegen... (also warum nicht gleich 20 Zeichen nehmen?)

An vielen Orten im Web tauschen Hash-Bastler solche Tabellen, so dass am Ende mehr Hashwerte existieren, als eine Einzelperson mit begrenzter Rechenkapazität erzeugen könnte. Es ist Bastler, meist keine bösen Hacker, denn diese Leute lieben meines Erachtens einfach nur diese gigantischen Tabellen, nicht das Eindringen in fremde Konten. (Wer "mitrechnen" will: geht per Boinc.)

Warum Passwörter komplex sein müssen

Und damit zurück zum Passwort selbst. sesame ist also kein gutes Passwort, genauso wenig wie ldsjsads oder 98713736174651 - weil diese Passwörter schon in Tabellen vorkommen und nur noch die Datenbank gehackt / "befreit" werden muss, um Angreifern einen Anlass zu geben, diese Tabellen auch zu nutzen.

Doch was würde der Tabellenmensch tun, der schon die Tabellen für "alles mit Kleinbuchstaben", "alles mit Grossbuchstaben", "alle Zahlen" hat? Er würde

  • eine Hash-Tabelle mit gemischtgeschriebenen Wörter mit 1, 2 oder 3 Zahlen am Anfang,
  • eine Hash-Tabelle mit gemischtgeschriebenen Wörter mit 1, 2 oder 3 Zahlen am Ende,
  • eine Tabelle mit zwei Wörtern, zwischen den ein Doppelpunkt steht (so sahen früher CompuServe-Passwörter aus)
  • und so weiter erzeugen.

Ergo dürften auch simpel zusammengesetzte Begriffe ("schock:sauger") oder einfache Wörter mit zwei, drei Zahlen (katze007) schon als Tabellen existieren.

Das 16-stellige, ziemlich sichere Passwort Ses^m45Stra$$e12 hingegen wird in MD5 zu 9f27021a0d6f049c122230486f30a779 - und auf md5online.org kennt man es (noch) nicht:

Ist dieses lange, komplexe Passwort also "sicher"?

Ja: Es ist auf jeden Fall sicherer als die kurzen, einfachen.

Nein: Denn natürlich liegt es nahe, wie bei Ses^m45Stra$$e12 geschehen einige Buchstaben wie A durch ^ oder S durch $ zu ersetzen und ein Schema wie "Wort, zwei Ziffern, Wort, zwei Ziffern" zu verwenden. Der Hashtabellenforscher jagt einfach seine Wörterbücher auch durch entsprechende automatische Ersetzer und Kombinierer und kriegt auch diese heraus. Woraus folgt: Man muss sich *eigentlich* von allem fernhalten, was bekannt und zudem algorithmisierbar ist, etwa Leet-Speak etc.

*Eigentlich*.
Denn trotzdem ist $3sam:2014$trasse besser als $3sam:2014, $3sam:2014! besser als Sesam:2014!, Sesam:2014! ist besser als sesam2014, sesam2014 ist besser als sesam.

Zu oben genanntem Beispiel: MD5 gilt als "nicht mehr sicher", aber es ist eben gut dokumentiert und die reichlich verfügbaren Online-Tools laden meines Erachtens zum Spielen und verstehen ein.

Sie sind Passwortforscher und wissen es besser? Melden Sie sich - ich würde Sie gerne interviewen!

Andreas Winterer

Andreas Winterer ist Journalist, Buchautor und Blogger und beschäftigt sich seit 1992 mit Sicherheitsthemen. Auf unsicherheitsblog.de will er digitale Aufklärung zu Sicherheitsthemen bieten – auf dem Niveau 'normaler Nutzer' und ohne falsche Paranoia. Auf der Nachbarseite passwortbibel.de geht's um Passwörter. Bitte kaufen Sie eines seiner Bücher.

Das könnte dich auch interessieren...

8 Antworten

  1. M. sagt:

    Vielen Dank für diesen aufschlussreichen Artikel!

    Von Passwörtern die sich in Wörterbüchern nachgeschlagen lassen wird ja seit jeher abgeraten. Was ist aber vom "correcthorsebatterystaple" System zu halten?
    https://xkcd.com/936/

    Diese Passwörter hätten ja durchaus den Vorteil, dass sie sich trotz adäquater Länge gut einprägen lassen.

    • Ich halte es für "hinreichend sicher" und verwende es selbst, vor allem dort, wo lange Passwörter nötig sind, aber wie bei http://correcthorsebatterystaple.net/ auch mit Zahlen und Zeichen kombiniert. Ich fürchte nur, es hat in der Praxis die Schwäche der begrenzten Vorstellungskraft der Nutzer, sprich: tempotaschentuchuhrbleistiftzettel hat die Schwäche, dass das alles auf meinem Schreibtisch zu finden ist. Oder allgemeiner, dass die Wörter, die man kombiniert, eben doch eher begrenzt sind. Aber das ist schon eher "theoretischer Zweifel" ;-)

  2. Claudia sagt:

    Danke für die Erläuterung. Jetzt verstehe ich, warum kurze einfache geknackt werden können, bzw. schon geknackt sein können. Ich finde den Artikel auch sehr gut geschrieben. Komme gern auf die Seite zurück ... Danke und lieben Gruß!

  3. Andi sagt:

    Ja genau guter Artikel:
    Also ich mache mein Passwort jeweils vom Auto-Kennzeichen und Geburtsdatum sowie die Mobilnummer also und Kürzel

    ZHXXXYYY9999990769999999AL in Wirklichkeit mit den richtigen Werten !..
    Fantasiewerten mit CH Werten Muster etwa so:

    ZH5678911209560763456789AL

    • Nicht schlecht!
      Aber
      in gewissem Umfang anfällig für social engeneering: Man könnte auf die Idee kommen, Dein Kfz-Kennzeichen, Deine Mobilnummer, Dein Geburtsdatum (und ähnliche persönliche Daten, die man mit hinreichender Mühe herausfinden kann) direkt zu verwenden oder natürlich Kombinationen daraus (manuell, automatisch) zu permutieren. Man bastelt sich sozusagen ein Mini-Wörterbuch nur für Dich (Deine Helden, Deine Buchtitel, Deine Daten) und führt damit eine Wörterbuchattacke durch.
      Allerdings ist das ist für den Normalbürger schon ziemlich theoretisch, da müsste man schon etwas haben, das einen solchen zielgerichteten Angriff lohnt. Für paranoide Geheimnisträger wäre dieses Passwort allerdings eher zu vermeiden.

  4. Andi sagt:

    Danke fürs Lob ?.

    Auf deine Einwände hin habe ich natürlich gut Schweizerisch vorgesorgt !.

    Also KFZ Nummer ist gesperrt vom Amt her !(Kann man beantragen).
    Das heisst nur Behörden und Polieiwesen haben dann Zugriff über das Netz zu meinen Kontaktdaten.
    Habe ich Persönlich ausprobiert !.
    (Die KFZ Nummer mit den Daten bekommt man nicht mal Google heraus), behaupte nicht mal die NSA oder die Russen weil die Daten laut Datenschutz beim Verkehrsamt Passwort geschüzt hinterlegt sind.

    Das gleiche mit der Mobilnummer sind nur beim Anbieter mit meiner Adresse hinterlegt, laut CH Gesetz das der Anbieter nicht einfach so die Adresse zur Nummeer preisgeben, ausser bei Drohender Gefahr bei Leib und Leben, sonst nur die Behörden.

    Bin nach meiner Meinung nirgends Social Medien vorhanden, ausser Xing.com das ist aber mehr für Berufliche.

    Da ich eigentlich kaum was im Netz bestelle ausser gute Software als Direktdownload weil wenn ich es als Hardcase bestelle kommen noch Zollgebühren darauf.

    Da ich aber Chronisch im fast Minus bin, auch keinen Überzug gewährt wird, sehe ich kaum Finanzellen Grund mich so zu beraupen.

    Oder sind noch andere Raubzüge möglich so ?.

    Grüsse

  5. Harry sagt:

    Hallo,

    was hälst du denn von dem "Master Passwort" Ansatz, bei dem eine PBKDF2 Funktion zur Verschlüsselung verwendet wird. Hier werden PBKDF2-HMAC-SHA256 mit einem "salt" (username + url) verwendet.

    Grüße

    • Wenn (!) Du sowas wie "PasswordMaker" oder "CryptoPass" meinst: Sieht nach einer eleganten Lösung aus, die sehr gut Sicherheit und Einfachkeit kombiniert.

      Mich stört da allerdings das folgende sehr:
      Wenn EIN System aus meinem Masterpasswort und den Eckdaten Username+URL ein jeweils einzigartiges Passwort ableiten kann, dann kann es auch IRGENDEIN System, zum Beispiel bei einem mutmaßlichen Angreifer, der mein Masterpasswort (hier: Input für den Algorithmus) abgreifen konnte. Es reicht also, mein Masterpasswort herauszufinden, schon sind alle Zugänge offen*.

      Das gälte natürlich genauso auch für einen klassischen Passwortmanager mit individuellen Passwörtern - doch dort ließen sich die individuellen Passwörter auch dann, wenn der mutmaßliche Angreifer mein Masterpasswort (dort: nötig zum Öffnen der Passwortdatenbankdatei) hat, wenigstens nur bei gleichzeitigem _Besitz der Passwortdatenbankdatei_ ableiten. Sprich: Solange ich meine Passwortdatenbankdatei nicht in die Cloud stelle, will mir das doch noch etwas sicherer erscheinen. Auch kann man dort oft zusätzlich zum Masterpasswort eine Passwortschlüsseldatei zum Öffnen der Passwortdatenbankdatei festlegen (das mach aber nicht mal ich), was eine weitere Sicherung darstellen würde (ein Passwort allein reicht dann nicht mehr, auch wenn man die Datenbank gekapert hat).

      In der Praxis ist aber ein Masterpasswort-System wie PasswortMaker völlig okay – jedenfalls garantiert besser als „Passwörter von Hand“.
      Ich denke, da hängt auch viel von der Implementierung ab: "Benutzt man das gern?" Zum Beispiel vertragen nicht alle Systeme, bei denen man sich so anmelden kann, komplexe Passwörter; die einen wollen dies nicht, die anderen jenes nicht, das muss sich das Tool alles merken können, sonst nerven die Fehlermeldungen. Klassische Passwortmanager bieten auch einen Passwort-Verlauf, was manchmal beim Zurücksetzen wichtig sein kann. Aber auch: Könnten (Malware-)-Browser-Plugins ein (trojanisches) Masterpasswort-Eingabefenster fälschen und so Username+Masterpasswort+URL-Verlauf abphishen (sowas würde sich natürlich erst lohnen, wenn eine bestimmte Lösung Massenerfolg hatte)?

      Ich wollte mir diese Masterpasswort-Lösungen ansehen, sobald ich die klassischen Passwort-Manager (die mit Passwortdatenbank) einigermaßen durchgekaut habe. Wenn Du gute Lösungen dieser Art kennst, schätzt und aus ihnen heraus empfehlen kannst und magst, be my guest und schreib einen Beitrag, in dem Du sie vorstellst! (Details bei Interesse via redaktion ät unsicherheitsblog Punkt de.)

      * In der Praxis fügen die Lösungen deswegen ja noch irgendwelche Pre- und Suffixe hinzu. Denkbar wären allerdings auch Systeme, die die ID (Tablet-Serial, Phone-Imei) des Systems zu einem Teil des Passworts (Username+URL+uniqueID) machen oder gesondert übertragen und so ein Anmeldesystem einführen, bei dem man via E-Mail eine Frage wie „Ein neues Tablet hat versucht, sich mit Ihrem Masterpasswort anzumelden“ kriegt und so den Versuch abwehren kann – aber da muss natürlich der jeweilige Dienst mitspielen.