Was ist ein Passwort-Hash: Grundlagen der Kryptographie

Eine Einführung in Hashing-Funktionen und wie sie Ihre Kennwörter schützen.

Grundlagen der Kryptographie: Was ist ein Passwort-Hash?

Da Datenlecks weiterhin die Schlagzeilen beherrschen, hören wir oft, dass E-Mails und Passwörter offengelegt wurden. Aber was ist ein gehashtes Passwort? Wie unterscheidet es sich von einem nicht gehashten Passwort und was hat "salt" damit zu tun? In unserem heutigen Leitfaden zur Kryptografie gehen wir auf diese und weitere Fragen ein.


Was ist ein Kennwort?

Passwörter sind zu einer festen Größe in der Welt der Technik und auch der Alltagssprache geworden. Von Ihrem E-Mail-Konto bis hin zu Kinderbüchern über vergrabene Schätze ist die Frage nach einem Passwort so alltäglich geworden, dass wir uns kaum noch Gedanken darüber machen, was ein Passwort eigentlich ist, geschweige denn ein Passwort-Hash.

Passwörter werden vom NIST technisch definiert als “Eine Zeichenfolge (Buchstaben, Zahlen und andere Symbole), die zur Authentifizierung einer Identität, zur Überprüfung der Zugangsberechtigung oder zur Ableitung kryptografischer Schlüssel verwendet wird”. Wir alle wissen, wie man ein Passwort eingibt, um auf unsere Lieblingswebsites und -konten zuzugreifen, aber die sichere Aufbewahrung dieser Anmeldedaten kann etwas kniffliger sein.

Als Nutzer ist es wichtig, Passwörter niemals wiederzuverwenden, immer sichere Passwörter zu wählen und sie von Zeit zu Zeit zu ändern. Eine Möglichkeit, eindeutige und sichere Kennwörter für alle Ihre Konten zu erstellen und zu verwenden, ist die Verwendung eines Kennwortmanagers. Indem Sie einen Passwort-Manager in Ihre Datenschutzpraktiken integrieren, sind Sie bereits sicherer als die große Zahl der Internetnutzer, die diesen wichtigen Schritt noch nicht getan haben.

Leider können Sie sich nicht zu 100 % schützen, da Ihre Anmeldedaten von den Diensten verarbeitet werden, bei denen Sie sich angemeldet haben. Und genau hier kommen die Datenlecks ins Spiel. Wir haben uns schon an Nachrichtenartikel gewöhnt, in denen es heißt: “Der Verstoß umfasst Benutzernamen, Geburtsdaten, E-Mail-Adressen, Telefonnummern und Passwort-Hashes. Während die meisten dieser Begriffe leicht zu verstehen sind, kann der letzte eine Quelle der Verwirrung sein. Um das zu klären, sollten wir uns ansehen, wie Unternehmen und Online-Dienste mit den Daten umgehen, die Sie bei der Einrichtung eines neuen Kontos angeben.

Das Problem der sicheren Speicherung von Passwörtern.

Stellen Sie sich vor, Sie sind eine wachsende Onlineforum, und da sich immer mehr Menschen für Ihren Dienst anmelden, müssen Sie eine sichere Methode finden, um die Anmeldedaten Ihrer Benutzer sicher aufzubewahren. Denn wenn jemand die Anmeldedaten stiehlt, werden Sie unzufriedene Nutzer haben.

Um dies besser zu verstehen, schauen wir uns an, was genau passiert, wenn Sie versuchen, sich bei Ihrer Lieblingswebsite anzumelden. Zunächst besuchen Sie die Anmeldeseite in Ihrem Browser und werden aufgefordert, einen Benutzernamen/eine E-Mail-Adresse und ein Passwort einzugeben. Sie geben diese Informationen ein und klicken auf “Anmelden”. Der nächste Schritt ist ein wenig kompliziert.

Wenn Sie Ihr Passwort wählen, wird es (hoffentlich) nicht im Klartext bei dem betreffenden Dienst gespeichert. Wenn die Dienste Ihre Kennwörter im Klartext speichern, besteht die Gefahr, dass Ihre Anmeldedaten preisgegeben werden, falls der Dienst kompromittiert wird. Stattdessen sollte das von Ihnen gewählte Passwort gehasht werden, und der Hash wird in einer sicheren Datenbank des Dienstes gespeichert. Wenn Sie sich bei dem neuen Konto anmelden, werden die von Ihnen angegebene E-Mail-Adresse und der Hash-Wert Ihres Passworts mit den in der Datenbank gespeicherten Informationen verglichen. Da diese übereinstimmen, haben Sie Zugang zu dem Konto. Jemand, der allerdings den Service hacked, bekommt nur Hashes, mit denen er nichts anfangen und sich nicht in Ihr Konto einloggen kann.

Bei Tuta verwenden wir Argon2, um den Schlüssel abzuleiten, der Ihre verschlüsselten Daten entsperrt (Passwortschlüssel). Als wir von bycrypt auf argon2 umgestiegen sind, haben wir auch die Länge der generierten Schlüssel auf 256 Bit erhöht, was sie auch postquantum-sicher macht. Der Passwortschlüssel wird nicht zur Authentifizierung gegenüber dem Tuta-Server verwendet. Stattdessen wird er mit SHA256 gehasht, um das Passwort zu verifizieren, das an den Server übertragen und erneut gehasht wird, bevor es in der Datenbank gespeichert wird. Wie das Passwort in Tuta gesichert wird, können Sie hier nachlesen

Eine Visualisierung des Umgangs mit Passwörtern und Verschlüsselungscodes.

Was macht also die Speicherung eines Hashes sicherer als die Speicherung eines Klartext-Passworts? Die Antwort ist ein einfacher zusätzlicher Schutz im Falle einer Sicherheitsverletzung.

Was ist Passwort-Hashing?

Beim Passwort-Hashing wird ein vom Benutzer erstelltes Passwort durch einen Hash-Algorithmus geleitet, um die Bits zu verschlüsseln und eine eindeutige Darstellung des gewählten Passworts zu erstellen. Wenn Sie das Kennwort nicht kennen, ist es im Idealfall nicht möglich, genau denselben Hashwert zu replizieren.

Es gibt viele Arten von Hash-Algorithmen, die jedoch alle eine ähnliche Funktion erfüllen. Sie nehmen ein Klartext-Passwort, das als Datenkette mit beliebiger Länge betrachtet wird (denken Sie an die verschiedenen Längen Ihrer Passwörter). Diese Kette wird dann in Datenbits umgewandelt, die entsprechend der verwendeten Hash-Funktion deterministisch verschlüsselt werden (was bedeutet, dass das gleiche Passwort immer den gleichen Hash ergibt). Dieser Hash wird dann in einer sicheren Datenbank gespeichert.

Es ist wichtig zu wissen, dass Hashing nicht dasselbe ist wie Verschlüsselung. Es gibt keinen Schlüssel, mit dem sich ein Hash entschlüsseln lässt. Hashing ist eine Einbahnstraße, die nur dazu dient, vom Klartext zum Hash zu gelangen. Für diejenigen, die kulinarisch interessiert sind, nehmen wir die Kartoffel als Beispiel. Die geschälte Kartoffel ist unser Klartext, und wenn wir sie hashen und in einen leckeren Teller mit Hashbrowns verwandeln, ist das unser Hash. Genauso wenig wie man Hashbrowns in die ursprüngliche Kartoffel zurückverwandeln kann, kann man einen Hash in das ursprüngliche Passwort zurückverwandeln.

Hashing-Funktionen sind eine Einbahnstraße

Eine Hash-Funktion ist eine Einbahnstraße. Anders als bei der Verschlüsselung werden keine Schlüssel erzeugt, um einen Hash in den ursprünglichen Klartext zurückzuverwandeln.

Wenn jemand über das Knacken von Kennwörtern spricht, “entschlüsselt” er nichts, sondern erstellt eine eigene Liste von Hashes auf der Grundlage häufig verwendeter Kennwörter und vergleicht dann die bekannten Ergebnisse mit Informationen, die bei Datenlecks bekannt geworden sind. Dies ist eine Frage des Querverweises und erfordert keine tiefgreifenden Kenntnisse der Kryptoanalyse, sondern nur grundlegende Logik.

Was ist ein gesalzener Passwort-Hash?

Wir haben bereits über das Salzen von Hashes gesprochen. Beim Salting werden einer Eingabe Zufallsdaten hinzugefügt, bevor sie von einem Hash-Algorithmus verarbeitet wird. Da das Salt für jedes Kennwort einmalig ist, schützt es vor Angriffen, die darauf abzielen, vorberechnete Hashes zu verwenden, denn selbst wenn die Salt-Werte in einem Datenleck enthalten wären, müsste der Angreifer die Werte für jedes einzelne Salt vorberechnen, was den Angriff sehr viel teurer macht. Wenn Passwörter nicht gesalzen werden, erscheinen die Hashes in der Datenbank aufgrund der deterministischen Natur von Passwort-Hash-Algorithmen gleich, wenn Sie und ich das gleiche Passwort verwenden. Durch das Salzen erhalten wir unterschiedliche Endresultate, was Hacker daran hindert, Konten mit identischen Kennwörtern schnell ausfindig zu machen.

Ein Beispiel für den Unterschied zwischen gehashten Kennwörtern mit und ohne Salting.

Das Salzen verbessert nicht nur den Geschmack von Lebensmitteln, sondern stärkt auch Ihre Passwort-Hashes!

Kryptografische Salze können von Dingen wie einem Benutzernamen oder anderen eindeutigen Kennungen abgeleitet werden, die für jedes Konto spezifisch sind. Das Element der Einzigartigkeit ist hier der Schlüssel, weil es die Verwendung von Angriffen mit vorberechneten Tabellen viel ressourcenintensiver macht, als es vernünftig wäre.

Probleme und Arten von Angriffen

Hashing ist natürlich nicht perfekt, aber es gibt eine Reihe bekannter Angriffe, die bei der Entwicklung dieser Funktionen durch Kryptographen in Betracht gezogen werden.

Geburtstags-Angriffe

Jeder Passwort-Hashing-Algorithmus ist anfällig für einen Angriff, der als Geburtstagsangriff bekannt ist. Dabei wird ein mathematisches Wahrscheinlichkeitsproblem ausgenutzt, das als Geburtstagsproblem bekannt ist. Eine genauere Beschreibung der mathematischen Grundlagen dieses Problems finden Sie hier. Glücklicherweise gelten diese Angriffe nicht als schneller als ein Brute-Force-Angriff.

Kollisionsangriffe

Ein Kollisionsangriff liegt vor, wenn zwei verschiedene Kennwörter (Klartextzeichenfolgen) einen Hash-Algorithmus durchlaufen und einen übereinstimmenden Hash zurückgeben. Dies ist problematisch, weil es bedeutet, dass ein falsches Passwort in Kombination mit dem richtigen Benutzernamen zu einer erfolgreichen Anmeldung führen könnte.

Wenn sich herausstellt, dass ein Kollisionsangriff schneller und effizienter ist als ein Geburtstagsangriff, kann die Passwort-Hashing-Funktion als defekt angesehen werden und sollte durch einen widerstandsfähigeren Algorithmus ersetzt werden.

Brute-force-Angriffe

Brute-force-Angriffe sind eine potenzielle Schwachstelle für jedes Kryptosystem. Bei unendlich viel Zeit und unendlich viel Rechenleistung kann ein Hash entdeckt werden. Aufgrund dieser Tatsache gelten sie als Lackmustest für die Schwere anderer Sicherheitslücken. Sollte sich herausstellen, dass ein Angriff schneller ist als ein Brute-Force-Angriff, muss der betreffende Algorithmus entweder gepatcht oder aufgegeben werden.

Beliebte Hash-Funktionen

Es gibt eine Reihe von Passwort-Hash-Algorithmen, die entwickelt wurden, und jeder von ihnen hat seine eigenen Stärken und Schwächen. Leider hat sich gezeigt, dass eine Reihe der gängigsten Hash-Algorithmen anfällig sind, aber sie werden immer noch regelmäßig verwendet (wie dieses YouTube-Video erklärt) und sind häufig in Datensätzen mit Sicherheitsverletzungen zu finden.

  1. MD5 : Dieser Hash-Algorithmus gilt zwar als längst veraltet, ist aber immer noch regelmäßig zu finden, wenn neue Datensätze zu Sicherheitsverletzungen an die Öffentlichkeit gelangen. MD5 wurde 1991 von MIT-Professor Ronald Rivest als Ersatz für MD4 entwickelt. Er erzeugt einen 128-Bit-Hash, aber es stellte sich schnell heraus, dass er anfällig für Kollisionsangriffe ist. Im Jahr 2013 konnten Forscher nachweisen, dass der Algorithmus nicht mehr sicher war und ersetzt werden sollte. Leider tauchen MD5-Hashes immer wieder bei Datenschutzverletzungen auf, was bedeutet, dass Ihre Daten ohne Ihr Verschulden in Gefahr sein können.
  2. SHA : Der empfohlene Ersatz für MD5 war die Familie der Secure Hash Algorithms, die Hash-Funktionen. SHA-1 wurde 1995 nach der Entwicklung durch die NSA eingeführt und erzeugt 160-Bit-Hashes. Der Algorithmus wurde 2005 als unsicher gegenüber fortgeschrittenen Bedrohungsakteuren eingestuft, was eine besondere Bedrohung für Fälle darstellte, in denen er zur Erstellung digitaler Signaturen zur Überprüfung der Authentizität verwendet wurde. SHA-2 wurde bereits 2001 veröffentlicht und ersetzte seinen Vorgänger offiziell im Jahr 2011, als das NIST neue Mindestsicherheitsanforderungen einführte. Leider wurde ihre Einführung durch einen Mangel an Abwärtskompatibilität verlangsamt. Zuletzt wurde 2015 SHA-3 mit einer völlig anderen Struktur als die vorherigen Iterationen, die MD5 ähnelten, veröffentlicht. SHA-2 und -3 unterstützen beide die gleichen Hash-Längen von 256 bis 512 Bit, je nach den gewählten Einstellungen.
  3. bcrypt : Der 1999 eingeführte bcrypt-Algorithmus zum Hashing von Passwörtern hat ein standardmäßiges Salting eingeführt und ist zudem adaptiv. Das bedeutet, dass er im Laufe der Zeit weiterhin Brute-Force-Angriffen widerstehen kann. Bcrypt baut auf der Blowfish-Chiffre auf, die von Bruce Schneier entwickelt wurde.
  4. Argon2: Argon2 ist der Gewinner der Password Hashing Competition 2015. Es ist nicht nur resistent gegen Seitenkanäle, sondern auch speicherfest, was es widerstandsfähiger gegen Brute-Force-Angriffe macht als bcrypt.

Bei Tuta sind wir Vorreiter in Sachen Sicherheit und Datenschutz. Mit der Umstellung auf Argon2 sind wir der erste E-Mail-Anbieter, der die stärkste derzeit verfügbare Form der Schlüsselableitung einsetzt. Indem wir Kryptographie und Sicherheit an erste Stelle setzen, schaffen wir einen Datenschutz, dem Sie vertrauen können. In Kombination mit unserer Zero-Knowledge-Architektur haben wir keinerlei Zugang zu den Schlüsseln, die zum Entschlüsseln oder Anzeigen von Daten erforderlich sind. Ihre Privatsphäre liegt in Ihrer Hand.

Übernehmen Sie noch heute die Kontrolle über Ihre Daten, indem Sie zu Tuta wechseln und den Datenschutz einschalten.