Passworte – Kodiert, Verschlüsselt oder Klartext?

https://www.flickr.com/photos/stiftelsen/11448606983/ (CC BY 2.0)

Wenn du ein Passwort eingibst, wirst du oft gefragt, ob du es speichern willst. Wenn du die Frage bestätigst, dann speichert das entsprechende Program, beispielsweise dein FTP Client FileZilla, deine Passworte in einer Konfigurationsdatei auf deinem Computer.
Im Falle von FileZilla sieht dann das Passwort beispielsweise so aus:

MTJqZGh6ZTY1M2dHZnNocw==

Wenn du und ich auf dieses Passwort schauen, können wir es uns nicht einfach so merken und wir werden vermuten, dass dieses Passwort auf irgendeine wundersame Weise verschlüsselt ist.

Wenn du aber mal die Website base64encode.org besuchst und das obige Passwort dort eingibst, siehst du das Original Passwort im Klartext.

Base64 - Format
Base64 – Format

MTJqZGh6ZTY1M2dHZnNocw==  = 12jdhze653gGfshs

FileZilla speichert Passworte also Base64 kodiert ab. Das schützt vor flüchtigen Blicken, es schützt aber NICHT vor Ausspähung. Wer Zugang zur filezilla.xml Konfigurationsdatei hat, hat auch prinzipiell Zugang zu allen FTP-Servern, die dort beschrieben sind.

Ich will FileZilla nicht schlecht reden. Wenn du FileZilla nutzt und deine Passworte nicht abspeicherst, ist ja alles in Ordnung und selbst, wenn du sie abspeicherst, wäre es einfach nur gut zu wissen, wie das passiert. FileZilla ist aber ein gutes Beispiel für den Unterschied zwischen Kodieren und Verschlüsseln auf den auch ich hereingefallen bin (siehe dazu auch Seafolly zieht um).

Wenn etwas kodiert wird, kann es auch immer dekodiert werden. Die Base64 Kodierung wurde beispielsweise erfunden, um Binärdaten (z. B. ausführbare Programme, ZIP-Dateien oder Bilder) in eine Zeichenfolge aus lesbaren, einfachen ASCII-Zeichen umzuwandeln um sie dann an eine E-Mail anhängen zu können! Der Empfänger der E-Mail soll die kodierten Dateien dann einfach wieder dekodieren können. Das eigentliche Problem dahinter war, dass E-Mail in 7-bit langen Code verfasst wurden und Binärdaten in 8-bit langen Code. In Binärdaten gab es einfach mehr unterschiedliche Zeichen und es konnte ein Zeichen enthalten sein, das die Übermittlung von E-Mails durcheinander bringt.
Die Idee der Kodierung stammt aus dem Jahr 1969 (ASCII format for Network Interchange).

Wie speichert man nun Passworte?

Ein Passwort ist nur sinnvoll, solange es geheim bleibt. Wenn es irgendwo abgespeichert wird und aus den gespeicherten Zeichen das Passwort ermittelt werden kann, ist das nicht sinnvoll. Daher sollte für Passworte ein Verfahren verwendet werden, das nur in eine Richtung funktioniert. Die Lösung ist eine kryptologischen Hashfunktion. Mit ihr wird aus dem Klartext Passwort immer die gleiche Zeichenkette ermittelt, aus der ermittelten Zeichenkette kann aber nicht auf das Passwort geschlossen werden. Das Programm, dass das Passwort in der konkreten Anwendung dann überprüft, überprüft in Wirklichkeit den Hash-Wert des Passworts (also die errechnete Zeichenfolge) und kennt das Klartext Passwort auch nicht.

Das hört sich erstmal gut an, wurde aber auch nicht speziell für Passworte entwickelt, sondern zunächst für die Integritätsprüfung von Dateien und Nachrichten. Weil das Prinzip aber gut funktioniert, wird es auch für Passworte, Peudo-Zufallsgeneratoren und Blockchiffren verwendet.

Du ahnst es vermutlich schon, auch hier gibt es Schwächen!

Die kryptologische Hashfunktion arbeitet, je nach Konstruktion, mit und ohne Schlüssel, mit algebraischen Verfahren und mit sogenannten Blockchiffren. Um das jetzt mal laienhaft und sicherlich unvollständig zusammenzufassen:

Alles, was vor dem Jahr 2010 entwickelt wurde, ist potentiell unsicher!

Als Beispiel sei das Verfahren MD5 genannt. Passworte in gängigen Content Management Systemen wie WordPress, Joomla und Drupal wurden lange mit diesem Verfahren gespeichert. Im Jahr 2008 gelang ein Man in the Middle Angriff auf MD5 (25C3: Erfolgreicher Angriff auf das SSL-Zertifikatsystem), d.h., das Passwort, oder in diesem Fall, der geheime Schlüssel konnte im Klartext ermittelt werden. Damals, vor 8 Jahren, benötigte man noch die Rechenkraft von 200 in einem Cluster zusammengefassten Sony Playstations. Heute ist das Equipment deutlich schneller geworden und somit ist es auch einfacher dieses Verfahren zu knacken .

Um wieder sicherer zu werden, wurde bei MD5 der sogenannte Salt einführt

Screenshot - http://www.martinstoeckli.ch/hash/de/hash_salt.php
Screenshot – http://www.martinstoeckli.ch/hash/de/hash_salt.php

Nach Salt kam dann Pepper

http://www.martinstoeckli.ch/hash/de/hash_pepper.php
http://www.martinstoeckli.ch/hash/de/hash_pepper.php

So gut gemeint all diese Massnahmen sind, sie führen alle zu einer sehr aufwendigen Implementierung und wo etwas kompliziert wird, werden auch Fehler gemacht. So häufen sich Meldungen von gehackten Firmen, deren Salt „nicht salzig genug war“, beispielsweise Rätselraten um Passwortsicherheit nach Evernote-Hack -7.3.2013.

Die Antwort auf „Salz und Pfeffer“ sind Verfahren, die versuchen, die Dauer des „Entschlüsselns“ zu verlängern. Um den Faktor 1000 gelingt das beispielsweise dem Password-Based Key Derivation Function 2 (PBKDF2) Verfahren aus dem Jahr 2010. Es wird zum Beispiel in einem WLAN als WPA-PSK-Schlüssel verwendet und gilt als sicher … aber

PBKDF2 gilt als anfällig für Angriffe mit spezieller Hardware wie Grafikprozessoren, Field Programmable Gate Arrays und anwendungsspezifischen integrierten Schaltungen (Wikipedia)

Ein Nachfolger ist auch schon ausgemacht. Mit Argon2 wird alles besser …
Spätestens an dieser Stelle lässt vermutlich deine Aufmerksamkeit nach und du denkst

Oh, oh, wo soll das nur hinführen?

Offensichtlich ist es so, dass der, der die meiste Rechenkraft hat, auch ein Password im Klartext lesen kann. Es dauert halt …

Gesetze

Manchmal ist es übrigens einfacher nach dem Passwort mehr oder weniger freundlich zu fragen oder ein Gesetz zu erlassen, dass man das Passwort (oder einen persönlichen Schlüssel) unter bestimmten Umständen den Behörden übergeben muss (Key disclosure law).

Der Markt regelt alles

Auch die Firma Apple hatte neulich so ein Problem. Das FBI wollte eine Möglichkeit haben, iPhones entsperren lassen und Apple wollte das nicht. Also bezahlte das FBI einen Dienstleister und verschaffte sich selbst Zugang (FBI knackt iPhone ohne Apple). Der Handel mit Sicherheitslücken ist mitlerweile ein Geschäft wie jedes andere von Firmen wie Vupen, Hacking Team, Zerodium und vielen anderen, teilweise sogar mit Erfolgsgarantie.

Und FileZilla?

Wenn du die Passworte nicht in FileZilla speicherst, sondern einen Passwort Manager wie KeePass nutzt, ist die Ausspähung deiner Passworte schon viel komplizierter.

Fazit

Mit dem entsprechenden Equipment oder Budget kann jedes Passwort ermittelt werden. Du hast es jedoch selbst in der Hand wie teuer es für einen Angreifer wird!


tl;dr: Das sichere Abspeichern eines Passworts ist kompliziert aber nicht hoffnungslos

Autor: Hagen Graf

consultant, author, trainer, solution finder, web architect, developer, open source lover, visionary, orator, the good old webmaster. Able to simplify!

3 Gedanken zu „Passworte – Kodiert, Verschlüsselt oder Klartext?“

Kommentar verfassen