Hallo Roman, * Roman Langolf schrieb am 19.Jul.2002:
Mein Passwort (local auf meiner SuSE7.3) lautet: xxxxxx12 Als ich heute zu fälligerweise xxxxxx123 eigegeben, war ich drin :-( Und xxxxxx12[3-6] funktionierte auch. Weiter habe ich nicht probiert. Übrigens x-er sind die Buchstaben.
Meine Frage ist nun: Wieso nur??? Ist das ein System Fehler?
Nein, das ist der DES-Algorithmus, der verwendet wird. Ein Paßwort wird mit Hilfe des crypt-Bibliotheksfunktion errechnet. Siehe hierzu man crypt. Im dritten Abschnitt der Manpages, stehen die C-Bibliotheksfunktionen, das sind also Funktionen, die in einem C Programm benutzt werden kann, nicht Linux-Funktionene, diese stehen im ersten und achten Abschnitt der man-Pages. Der DES-Algorithmus ist an sich ein symetrischer Algorithmus. Das heißt, wenn man ein Text mit einem Key verschlüsselt, und das Ergebnis wieder mit dem gleichen Key verschlüsselt, dann erhält man den ursprünglichen Text. Nur ist es so, daß crypt das Paßwort als Schlüssel nimmt. Längere Sinnvolle Texte, die mit dem DES-Algorithmus verschlüsselt sind, werden schnell entschlüsselt. Der DES-Algorithmus ist nicht besonders Sicher. Aber das gilt, wie gesagt, für längere sinnvolle Texte. Bei kurzen Paßwörter, die keine Regel unterliegen, ist das anderes. Wenn man ein neues Paßwort generiert, so benutzt man letztendlich den Linux-Befehl /bin/passwd, dieser Befehl benutzt wiederum die Bibliotheksfunktion crypt. crcpt benötigt zwei Argumente: das unverschlüsselte Paßwort und einen Salt. Der Salt wird per Zufallsgenerator erzeugt. crypt verschlüsselt mit Hilfe des Paßwortes und des DES-Algorithmus. Das Ergebnis ist das verschlüsselte Paßwort, das in /etc/shadow geschrieben wird. Für das Paßwort benötigt der DES-Algorithmus 56 Bit. Es werden die ersten acht Zeichen genommen, und von jedem Zeichen die ersten sieben Bit. Das achte Bit wird mithin ignoriert. Ebenso alle Zeichen, die nach einem achten Zeichen kommen. Bei weniger als acht Zeichen wird mit Nullen aufgefüllt. Diese 56 Bit und die zwei Zeichen des Salt werden in 13 Zeichen verwandelt, dabei sind die ersten beiden Zeichen dieser 13 Zeichen der Salt. Nimmt man einen andern Salt, so verändern sich aber nicht nur die ersten beiden Zeichen, sondern, im Allgemeinen, alle 13. Die beiden ersten Zeichen des verschlüsselten Paßworts sind aber immer der Salt. Diese 13 Zeichen und auch der Salt stellen Zahlen zur Basis 64 dar. Es kommen nur die 64 Zeichen : a-zA-Z0-9./ vor. Also 6 Bit pro Zeichen. Der Salt besteht mithin aus 12 Bit und das Ergebnis aus 78 Bit. Es ist nicht möglich, außer brutal force, aus dem verschlüsselten Paßwort wieder das unverschlüsselte zu machen. Wenn man sich einloggt, dann wird das Paßwort, daß man eingibt, wieder mit crypt verschlüsselt. Aber diesmal nimmt man für den Salt keine Zufallszahlen, sondern die ersten beiden Zeichen aus dem verschlüsselten Paßwort, so wie es in der /etc/shadow steht. Wenn das Paßwort richtig war, muß das Ergebnis mit dem Eintrag in der /etc/shadow übereinstimmen. So ist es möglich, daß niergens das Paßwort in Klarschrift abgespeichert ist. Ein Paßwort soll eine Mischung aus Klein- und Großbuchstaben, Zahlen und auch Sonderzeichen sein und acht Zeichen lang sein. Von einer Sortierung, etwa sechs Kleinbuchstaben gefolgt von zwei Zahlen ist dringend abzuraten. Insbesondere wenn, die Buchstaben ein Wort ergeben. Es sind alle ASCII-Zeichen erlaubt, allerdings gibt es Probleme, wenn man CTRL-H, CTRL-M, CTRL-J oder CTRL-S und vielleicht noch einige andere CTRL-Zeichen eingibt. Ersteres ist der Backspace, der von einigen Eingabeprogramme, etwa der Konsole als solcher angesehen wird und die letzte Eingabe löscht, aber nicht als eigenes Zeichen genommen wird. Bei anderem, etwa xterm, ist das anders. Es wurde auf md5 hingewiesen. Nichts gegen einzuwenden, aber wenn man sich nicht gut auskennt, und nicht genau weiß, was man macht, macht man am Ende mehr kaput, als daß man hilft. Bernd -- Bitte die Etikette beachten: http://www.suse-etikette.de.vu/etikette.html Bitte Realnamen angeben, kein Vollquoting, kein Html, PGP oder Visitenkarten benutzen. Signatur mit "-- " abtrennen, bei Antworten "Re: " voranstellen, sonst nichts. |Zufallssignatur 4