Wenn du verschiedene Passwortmanager vergleichst oder nach Passwortsicherheit suchst, wirst du schnell auf Begriffe wie Hashing und Salting stoßen. Obwohl diese Begriffe wie Schritte zur Zubereitung von Bratkartoffeln klingen, sind sie tatsächlich Prozesse, die zur Sicherung jedes Online-Kontos unerlässlich sind.
Dieser Artikel erklärt, was Passwort-Hashing und -Salting bedeuten, wie sie funktionieren und warum sie notwendig sind.
Wie wir Passwörter bei Proton sichern
Passwort-Hashing
Hashing ist eine Methode, Informationen in einen String aus Buchstaben und Zahlen fester Länge umzuwandeln. Du kannst unverschlüsselte Informationen, sei es ein Passwort, ein Bild oder ein ganzes Buch, in eine Hash-Funktion einspeisen, die diese Informationen in einen Hashwert mit einer bestimmten Zeichenanzahl umwandelt. Beispielsweise erzeugt SHA-256, eine der häufigsten Hash-Funktionen, immer Hashwerte mit einer Länge von 256 Bit (32 Byte).
Erstelle deine eigenen Hashwerte(neues Fenster)
Neben der Erstellung eines Produkts fester Länge gibt es zwei weitere Dinge, die Hashing von der Standardverschlüsselung unterscheiden. Hashing ist:
- Irreversibel — Du kannst einen Hashwert nicht „unhashen“ (oder die ursprünglichen Informationen regenerieren), egal was du tust.
- Deterministisch — Wenn du dieselben Eingabeinformationen in eine Hash-Funktion eingibst, gibt sie jedes Mal denselben Hashwert zurück.
- Unvorhersehbar — Es sollte fast unmöglich sein, den resultierenden Hashwert für jede gegebene Eingabeinformation zu erraten. Wenn du einen Hashwert nehmen und leicht erraten oder die Eingabe erzeugen kannst, die diesen Hashwert erzeugen würde, dann sollte diese Hash-Funktion als gefährdet betrachtet werden und vermieden werden.
Diese drei Eigenschaften machen Hashing zu einer guten Methode, um Passwörter sicher zu speichern und zu überprüfen.
Hashing, Passwortspeicherung und Passwortauthentifizierung
Wenn du ein neues Online-Konto erstellst, gibst du in der Regel einen Benutzernamen (normalerweise deine E-Mail-Adresse) an und erstellst ein Passwort. Das ermöglicht dem Dienst, zu wissen, wer du bist, und zu bestätigen, dass du es wirklich bist.
Aber das Passwort schafft ein unangenehmes Problem für Dienstanbieter. Sie haben im Wesentlichen drei Optionen. Sie können dein Passwort im Klartext, verschlüsselt oder gehasht speichern.
Es bedarf keines Cybersicherheitsexperten, um die Probleme beim Speichern von Passwörtern im Klartext zu erkennen. Das würde es dem Dienst ermöglichen, jederzeit auf dein Konto zuzugreifen, und dein Passwort wäre exponiert, falls es jemals zu einem Verstoß kommt.
Verschlüsselung funktioniert auch nicht. Wenn ein Dienst ein Passwort mit Schlüsseln verschlüsselt, die er kontrolliert, kann er weiterhin jederzeit auf dein Passwort zugreifen (und es möglicherweise bei einem Verstoß exponieren). Und er kann dein Passwort nicht mit einem Schlüssel verschlüsseln, den er nicht kontrolliert (zum Beispiel mit einem Schlüssel auf deinem Gerät), weil das ihm nicht erlaubt, zu überprüfen, dass dein Passwort korrekt ist, wenn du dich anmeldest.
Hashing ist ein guter Kompromiss. Da Hashing irreversibel ist, können Dienste dein Passwort speichern und ihren Nutzern versichern, dass sie nicht auf ihre Konten zugreifen können und dass ihre Passwörter bei einem Verstoß sicher sind.
Und weil Hashing deterministisch ist, kann ein Dienst ein Passwort überprüfen, indem er die beiden Hashwerte vergleicht. Wenn die Hashwerte übereinstimmen, weiß der Dienst, dass die Eingabeinformationen (die Passwörter) übereinstimmen, auch wenn der Dienst nicht weiß, was das tatsächliche Passwort ist.
Es ist ein cleveres System, aber Hashing hat ein Problem mit der Vorhersehbarkeit. Wenn du davon ausgehst, dass eines der häufigsten Passwörter für jeden Dienst „Passwort“ sein wird. Mit diesen Informationen kannst du wahrscheinlich die Konten finden, die „Passwort“ verwenden, indem du einfach die am häufigsten wiederholten Hashwerte anschaust.
Tatsächlich gibt es einen Cyberangriff, der sich dem Knacken von Hashes widmet, der sich so genannter Regenbogentabellen bedient, die Hashes sammeln und versuchen, die Regeln, die sie regieren, in großen Tabellen zu verstehen. Sie sind genau deswegen effektiv, weil Hashes vorhersehbar sind.
Passwort-Salting
Um die Vorhersehbarkeit einer Hash-Funktion zu minimieren, verwenden Programmierer Salting. Salting ist eine Technik, die die vorhersehbare Hash-Funktion nimmt und etwas zusätzliches „Gewürz“ – daher der Begriff „Salz“ – in Form von Unvorhersehbarkeit hinzufügt. Ein Salz ist eine kurze Reihe zufälliger Zeichen, die vor dem Hashen zu jedem Passwort hinzugefügt wird.
Besonders an einem Salz ist, dass jede Salze einzigartig für jeden Benutzer ist. Wenn du ein Passwort mit einem Dienst erstellst, wird ihm ein Salz zugewiesen, das niemand sonst hat. Wenn du dein Passwort änderst, verwenden einige Dienste ein neues Salz dafür. Das stellt im Wesentlichen sicher, dass kein Passwort (und somit kein Hashwert) jemals wiederholt wird, solange für jedes neue Passwort ein neuer, zufälliger Salzwert verwendet wird.
Das erschwert den Versuch eines potenziellen Angreifers erheblich. Ihre Regenbogentabellen sind nutzlos, da Salting die Hashwerte unvorhersehbar macht. Alles, was bleibt, ist sicherzustellen, dass dein Passwort zufällig genug ist, um jeden Wörterbuchangriff abzulehnen.
Wie wir Passwörter bei Proton sichern
Bei Proton stellen wir die Privatsphäre und Sicherheit unserer Nutzer an erste Stelle. Wir senden dein Passwort niemals an unsere Server, sondern verlassen uns stattdessen auf das Secure Remote Password (SRP)-Protokoll. SRP ermöglicht es einem Benutzer, sich bei einem Server (und umgekehrt) zu authentifizieren, indem er beweist, dass er das Passwort kennt, ohne das Passwort selbst oder Informationen weiterzugeben, die ein Angreifer verwenden könnte, um das Passwort abzuleiten (zum Beispiel einen Hashwert). Dein Passwort bleibt auf deinem Gerät sicher.
Erfahre mehr darüber, wie Proton SRP verwendet
Wir verwenden Hashing und Salting, aber für deine Kontoschlüssel. Sobald du erfolgreich eingeloggt bist, sendet Proton deine Kontoschlüssel an deinen Client. Dein Client salzt und hasht dein Passwort mit bcrypt und verwendet den resultierenden Hashwert als Schlüssel, um deinen Kontoschlüssel zu entschlüsseln. Sobald dein Kontoschlüssel entschlüsselt ist, kann er dann verwendet werden, um auf deine E-Mails, Kalender usw. zuzugreifen. Dieser Prozess geschieht lokal auf deinem Gerät, sodass dein Passwort und Hash es niemals verlassen.
Du kannst dieses Schutzniveau auch auf andere Konten ausweiten mit Proton Pass, unserem Ende-zu-Ende-verschlüsselten Passwort-Manager.
Wie du in unserer vollständigen Analyse des Sicherheitsmodells von Proton Pass lesen kannst, verschlüsseln wir Ende-zu-Ende deine Passwörter einzeln sowie die Vaults, in denen du sie speicherst, sodass niemand, auch nicht wir, zu irgendeinem Zeitpunkt im Übertragungsprozess deine Elemente sehen kann.
Wir können diese Art von verbesserter Sicherheit anbieten, weil wir vollständig von dir, unseren Nutzern, finanziert werden. Ohne Aktionäre oder Wagniskapitalgeber, um sich Sorgen zu machen, können wir uns darauf konzentrieren, Werkzeuge zu entwickeln, die die beste Sicherheit und Benutzerfreundlichkeit bieten, ohne Kosten zu sparen oder Abstriche zu machen.
Das Ergebnis ist ein Dienst, der dich an erste Stelle setzt, sei es, die beste Verschlüsselungstechnologie zu haben oder eine benutzerfreundliche Oberfläche anzubieten. Wenn das nach etwas klingt, das du selbst ausprobieren möchtest, tritt Proton Pass noch heute bei.