next | next | up | down | Inhalt | Uebungen | Complete | Kommentar

all, section 8.9.

8.9.  Ist Ihr Paßwort sicher?

Unberechtigterweise in ein gut gepflegtes Unix System einzudringen ist, ohne Kenntnis eines entsprechenden fremden Paßworts, sehr schwierig. Aus diesem Grunde konzentrieren sich die meisten Attacken der †bösen Buben† darauf, fremde Paßwörter in ihren Besitz zu bringen.

Die Gegenspieler der †bösen Buben† sind einerseits der Systemadministrator, der durch komplexe Maßnahmen versucht, die Entfaltungsmöglichkeit dieser †bösen Buben† zu erschweren, und andererseits der Nutzer, indem er †vernünftige† Paßwörter wählt und diese in regelmäßigen Abständen ändert.

Ausgangssituation

Angriffe von außen, d.h. der Versuch in ein fremdes Netz einzudringen, setzen sehr großes Wissen voraus und sind aufgrund von Sicherheitsmaßnahmen der Administration in aller Regel zum Scheitern verurteilt.

Ist man allerdings in einem Netz und versucht ein fremdes Paßwort in Erfahrung zu bringen, sind die Karten gar nicht so schlecht. Für den Artikel gehen wir vom zweiten Fall aus.

Naiv

Prinzipiell bieten sich folgende Wege an: Der erste, etwas langwierige Weg besteht darin, für einen bestimmten Nutzer alle Paßwörter auszuprobieren, die er haben könnte, indem man sie eintippt. Dies sieht dann in etwa so aus:

mozart% login
login: bischof
Password:
Login incorrect
login: bischof
Password:
Login incorrect
login: 
...

Berechnen wir die Anzahl der Möglichkeiten, die auszuprobieren sind. Wenn wir annehmen, daß ein Paßwort zwischen vier und acht Zeichen lang ist und aus 95 verschiedenen Zeichen (Leerzeichen bis †~† bestehen kann, errechnet sich die Anzahl der verschiedenen Möglichkeiten durch

[equation]

Nehmen wir an, daß man zum Eintippen eines Paßworts im Durchschnitt 5 Sekunden benötigt, so hat man nach ca. 1077800436 Jahren alle Paßwörter ausprobiert. Betrachtet man im Vergleich dazu das Alter der Erde, welches ca. 5 Milliarden Jahre beträgt, dann sieht man deutlich, daß dieser Weg dem †bösen Buben† etwas Geduld abverlangt.

Besser

Der zweite Weg besteht darin, den Rechner die Paßwörter generieren und durch einen login-Versuch testen zu lassen. Das Erfinden geht sicher unheimlich schnell, aber da login bei einem falschen Paßwort kurz einnickt, bevor er einen erneuten login-Versuch akzeptiert, ist dieser Weg bestimmt bequemer als der erste Vorschlag, aber nicht wesentlich schneller als derselbe.

Mittelprächtig

Folgende Überlegung könnte die Sache etwas beschleunigen: Wie funktioniert eigentlich login? login liest das eingetippte Paßwort ein, verschlüsselt es und vergleicht das verschlüsselte Paßwort dann mit dem Paßworteintrag des Nutzers. Sind die beiden ungleich, wird der Anmeldeversuch abgewehrt, ansonsten findet die Anmeldung statt.

Soweit die Überlegungen, nun gehts in die Praxis. Die Verschlüsselung erfolgt mittels char *crypt(key, salt). crypt(3) nimmt ein Wort (key) und einen Initialwert (salt) und liefert das verschlüsselte Wort zurück. Ist das verschlüsselte Wort und der Paßworteintrag gleich, hat man das Paßwort gefunden. Das einzige Problem besteht nur in der richtigen Wahl von salt. salt besteht aus den ersten zwei Buchstaben des Paßworts. Abbildung 1 zeigt ein Programm,

/*
 * Ein Wort in Klartext wird mit crypt verschluesselt,
 * und das Resultat mit dem Passworteintrag verglichen.
 *
 * Passworteintrag: bischof:ei1/r7g1wRyAI:106:11:Hans\(emPeter ...
 * Passwort:        dmva1m10
 *                      
 */

#include <stdio.h>


void main(void)     {
char * pwd       = "dmva1m10";
char * pwd_entry = "ei1/r7g1wRyAI";
char   salt[]    = { pwd_entry[0], pwd_entry[1], '\0' };

        printf("crypt:     %s\n", crypt(pwd, salt) );
        printf("pwd_entry: %s\n", pwd_entry );
        exit(0);
}


Abbildung 1: Gewußt wie

Ein Ablauf des Programms liefert:

mozart Src 178 crypt_1
crypt:     ei1/r7g1wRyAI
pwd_entry: ei1/r7g1wRyAI

Somit haben wir alle Ingredienzen, um den zweiten Weg entscheidend zu verkürzen. Ein Verschlüsselungs- und Testvorgang benötigt auf einer Sparc 10 ca. 0.012 Sekunden. Nach ca. 12933605 Jahren hat unser Programm alle Möglichkeiten ausprobiert und ein Paßwort entschlüsselt. Auch Transputersysteme oder andere schnellere Rechner können das Problem wohl nicht in einer adäquaten Zeit lösen.

Gut

Ein Punkt wurde bisher nicht berücksichtigt: die Psychologie. Die meisten Nutzer nehmen als Paßwort nicht eine beliebige Buchstabenkombination, sondern ein Wort, das sie sich leicht merken können, z.B. eine Autonummer (OSJ392), den Namen einer Person aus einem Buch (gandalf), den Namen ihres Lieblingsinstruments (trompete), den Anfangsbuchstaben der Worte eines berühmten Spruchs (aus Goethes Faust, Hexenszene: Du mußt verstehen, aus eins mach zehn ... dmvaemz) usw. Deshalb ist es doch bestimmt sehr erfolgversprechend, das Programm aus Abbildung 1 mit Wörtern zu füttern, die aus einer Datenbank generiert werden, welche eine große Menge an Namen, Werken usw. enthält. Die Erstellung einer derartigen Datenbank ist in der heutigen Zeit dank world wide web und Co. kein Problem mehr.

Die meisten Nutzer machen es uns nicht ganz so leicht -- sie garnieren ihr Paßwort noch zusätzlich mit Sonderzeichen, manche schreiben Buchstaben groß oder verwenden an Stelle von Zahlwörtern bzw. Zahlwörtern sehr ähnlich klingenden Wörtern Ziffern (toofastforyou2fast4you). Also werden wir unser Programm derart modifizieren, daß auf die potentiellen Paßwörter vor dem Verschlüsselungsvorgang Regeln angewendet werden, die das Wort etwas verändern.

Die Anzahl der potentiellen Paßwörter läßt sich somit auf ein akzteptables Maß reduzieren. Wenn man mit dieser Technik auch nicht alle Paßwörter entschlüsseln kann, so bleibt doch die Hoffnung, daß man vielleicht 10% der Paßwörter decodieren kann.

Ich habe auf sechs verschiedenen Netzen versucht, Paßwörter in Erfahrung zu bringen. Von ca. 1641 Paßwörtern konnte ich mit dem skizzierten Algorithmus 223 Paßwörter innerhalb eines Nachmittags auf einer Sparc 10 entschlüsseln. Verwendet habe ich hierzu ein frei verfügbares Programm namens Crack. Das Programm realisiert den oben beschriebenen Algorithmus. Es ist also nicht einmal nötig selber zu denken oder zu entwickeln.

Fazit

Es stellt sich die Frage, warum ging dies so leicht?

Es bleibt noch anzumerken, daß ich natürlich kein Paßwort dazu verwendet habe, um widerrechtlich in ein fremdes System einzudringen. In Anbetracht der Problematik, die dieses Thema birgt, erschien mir es wichtig, darauf hinzuweisen und die Problematik durch Fakten zu untermauern.


back | next | up | down | Inhalt | Uebungen | Complete | Kommentar


Created by unroff & hp-tools. © by Hans-Peter Bischof. All Rights Reserved (1997).

Last modified 03/July/97