a password list in front of an opened chest

Passwörter speichern

Passwörter speichern

a key and a door, with a lock

Sie stellen sich ein Passwort vielleicht wie einen Schlüssel zu einer Tür vor:
Nur ein Schlüssel passt in das Schloss …

a list of names

… doch ein System (Webseite, Netzwerk usw.) muss die Passwörter von vielen Nutzern speichern!

a closed treasure chest

Wenn ein System alle Passwörter seiner Nutzer in ihrer ursprünglichen Form speichert, wie einen Schatz in einer Truhe,

a password list in front of an opened chest

… dann muss die Truhe nur geöffnet werden
und alle Passwörter sind sofort bekannt!

Der Schwachpunkt:

a security risk warning

Sie haben bestimmt schon erkannt, dass das potenzielle Sicherheitsrisiko enorm ist,

an email showing an actual password

und wenn Sie eine E-Mail bekommen, in der Ihr tatsächliches Passwort steht…
dann kennt das System, wie deren Administratoren, ihr vergebenes Passwort!

Mit nur einem Angriff könnte jemand also die Truhe öffnen und hätte sofort die Passwörter von allen Nutzern!

Das bedeutet für die Sicherheit eines solchen Systems genau eins:

fatality

Die Lösung:

Man möchte also prüfen, ob ein eingegebenes Passwort korrekt ist, muss aber viele Passwörter speichern, ohne sie zu verraten.

Dafür gibt es nur eine Lösung:

Maths FTW!!

Statt Passwörter zu speichern, wird ein Schlüssel gespeichert, der sich aus dem Passwort ableitet: So kann der Benutzer authentifiziert werden, ohne dass sein tatsächliches Passwort gespeichert wird:

  1. das eingegebene Passwort nehmen
  2. den Schlüssel errechnen
  3. den erstellten Schlüssel mit dem Originalpasswort vergleichen

Ein bcrypt-erzeugter Schlüssel von „Passwort“ lautet zum Beispiel wie folgt: „$2a$10$3BY0wQ3rgzBf6VlG0YFLoekcGrrHKYdSUdSSrN37TqClNg7Oouzey“.

Dieser Schlüssel ist viel länger und in der Praxis ist es viel schwieriger, das ursprüngliche Passwort herauszufinden, aus dem der Schlüssel erzeugt wurde.

Warum verwendet man nicht einfach eine komplexe Hash-Funktion, um die Schlüssel abzuleiten?

Da solche Schlüssel-Ableitungsfunktionen (Key Derivation Functions) speziell entwickelt werden, um einen Angreifer davon abzuhalten, im Voraus eine Liste von Schlüsseln von allen Standard-Passwörtern zu erstellen, oder vielmehr eine gut organisierte Tabelle.

Fazit

not passwords, but keys

Um das Risiko einer sofortigen und vollständigen Sicherheitslücke zu vermeiden, sollte man niemals Passwörter speichern, sondern nur abgeleitete Schlüssel, die durch spezielle Algorithmen erstellt wurden.

key = math(password)

Diese Schlüssel werden mathematisch von den eingegebenen Passwörtern abgeleitet..

no password list

So bekommt man ein sehr starkes Authentifizierungssystem ohne eine anfällige Passwort-Liste.

Bei einem System mit mehreren Nutzern besteht ein sehr hohes Risiko, wenn Passwörter gespeichert werden!

In einem unserer nächsten Blog-Postings werden wir zeigen, wie dies die Windows-Sicherheit beeinträchtigen kann…

Dieser Artikel ist auch verfügbar in: Englisch

Avira ist mit rund 100 Millionen Kunden und 500 Mitarbeitern ein weltweit führender Anbieter selbst entwickelter Sicherheitslösungen für den professionellen und privaten Einsatz. Das Unternehmen gehört mit mehr als 25-jähriger Erfahrung zu den Pionieren in diesem Bereich.