PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Frage] Password Hashes: SSHA SMD5 usw. OpenLDAP



[WCM]Manx
21.11.03, 21:07
Hi!

Ich spiele grad mit Openldap bzw mit PAM und Login generell auf Debian.
Dabei hab ich ja verschiedene Möglichkeiten für die Passwort Hashes:

Dass es generell unsicher ist mit "simple"-binds OHNE SSL über's Netzwerk zu gehen ist, mir klar, aber momentan läuft's ja nur übers Loopback IF und die Replication bekommt dann SSL/TLS.

Nun die Frage: Was ist grundsätzlich am sichersten bzw. ein Reihung wäre fein.
* {CRYPT} Crypt
* {SSHA} SHA with salt
* {SHA} SHA without salt
* {SMD5} MD5 with salt
* {MD5} is MD5 without salt

Links sind willkommen ;)

Grüße

Manx

PS: momentan hab ich {SMD5}

RapidMax
22.11.03, 07:09
Der Secure Hash Algorithmus 1 (SHA-1) ist mehr oder weniger gleich dem von MD5, nur wurde eine Runde mehr hinzugefügt die Grösse des Digest auf 160 Bit erhöht. Im Prinzip reicht MD5 heute aus, nur für Anwendungen mit extem hohen Sicherheitsbedarf und die auch in ein paar Jahren noch genügen müssen, wird SHA-1 notwendig. Dafür ist SHA langsamer.

Der Salt dient dazu, dass wenn zwei User das gleiche Passwort haben, nicht zwei gleiche Hash da stehen. Also ist SSHA das absolut extrem sicherste ;) Ich denke du kannst ohne Probleme auch bei SMD5 bleiben...

Quelle: Network Security, Charlie Kaufman

Gruss, Andy

[WCM]Manx
22.11.03, 09:54
Hi & Danke!

O.k nach einiger Zeit Googlen hab ich ähnliches rausgefunden:
http://www.secure-hash-algorithm-md5-sha-1.co.uk/

Dabei kam aber eine andere Frage auf:
Was verwendet Linux per Default für die /etc/shadow Datei?
Bei der Debian Installation kann ich auswählen "Shadow Passwörter verwenden" => JA bzw. "MD5 Passwörter verwenden" => JA. Im Securing Debian Howto wird darauf verwiesen, dass man MD5 verwenden sollte.

Frage: Würden per Default nur {crypt] Passwörter in der /etc/shadow verwendet und kann Linux {SSHA} in der Shadow-Datei überhaupt.

Danke

Manx

PS: und ich bin nicht paranoid ;)

Temp
22.11.03, 14:40
hmmm da muss ich auch sagen wenn ich nen md5 hash von etwas mache und da kommt immer das gleiche raus dat is ja dann blöd.....

aber is es net so das bei 2 unterschiedlichen auch der gleiche Hash rauskommt....

sprich ich kann vom hash net auf das verschlüsselte schliessen ????

Gruß Temp

[WCM]Manx
22.11.03, 15:03
Hi!

Im Attachment ein nützliches Script "passwd.pl".
Wenn Du Hashes ohne Salt erzeugst, habe gleiche Passwörter gleiche Hashes.
Bei salted Hshes ist das nicht so:


{SMD5}
server:/usr/local/sbin# passwd.pl test
Encrypted password: {SMD5}B1gePqvvkqsbAznOp55oa255
server:/usr/local/sbin# passwd.pl test
Encrypted password: {SMD5}puhwGOGcUREUmjVY+yePz256

{MD5}
server:/usr/local/sbin# passwd.pl test
Encrypted password: {MD5}CY9rzUYh03PK3k6DJie09g==
server:/usr/local/sbin# passwd.pl test
Encrypted password: {MD5}CY9rzUYh03PK3k6DJie09g==

[SSHA}
server:/usr/local/sbin# passwd.pl test
Encrypted password: {SSHA}SpqIVylplhdZGpAhTNAcqAujCzpnaHp0bWVuYg==
server:/usr/local/sbin# passwd.pl test
Encrypted password: {SSHA}sYYj4yu15G7elNRm7aUM9S/0WCVjcGt1YXZpdg==

{SHA}
server:/usr/local/sbin# passwd.pl test
Encrypted password: {SHA}qUqP5cyxm6YcTAhz05Hph5gvu9M=
server:/usr/local/sbin# passwd.pl test
Encrypted password: {SHA}qUqP5cyxm6YcTAhz05Hph5gvu9M=

{crypt}
server:/usr/local/sbin# passwd.pl test
Encrypted password: {CRYPT}pkD772jGtEIwQ
server:/usr/local/sbin# passwd.pl test
Encrypted password: {CRYPT}plve/sIKDHNa2

Grüße

Manx

RapidMax
22.11.03, 18:09
Original geschrieben von Temp
sprich ich kann vom hash net auf das verschlüsselte schliessen ????

Das ist genau der Sinn eines kryptographischen Message Digest (Hash). :)


Original geschrieben von [WCM]Manx
Was verwendet Linux per Default für die /etc/shadow Datei?
Bei der Debian Installation kann ich auswählen "Shadow Passwörter verwenden" => JA bzw. "MD5 Passwörter verwenden" => JA. Im Securing Debian Howto wird darauf verwiesen, dass man MD5 verwenden sollte.

Frage: Würden per Default nur {crypt] Passwörter in der /etc/shadow verwendet und kann Linux {SSHA} in der Shadow-Datei überhaupt.


Debian fragt bei der Installation was du willst. Nein sollte nur gewählt werden, wenn noch NIS im Spiel ist (aber das ist unsicher und sollte nur eingesetzt werden, wenn man weiss was man macht). Bei NIS kann auch nicht die Shadow-Suite verwendet werden, die ich dringend empfehle (john...).
AFAIK haben alle neueren Distributionen default-mässig MD5 eingestellt. Und dann gab es noch die Distri, bei der man nachträglich bei Root noch auf MD5 umstellen musste...
Ob Linux SSHA kann weiss ich nicht, da müsste ich auch erst nachschauen.

Gruss, Andy

Temp
23.11.03, 09:53
der gedanke war der - wenn ich einen hash von einem passwort bilde dann kommt der hash X raus.... wenn ich dann später nocheinmal von dem gleichen passwort einen Hash bilde kommt der gleiche hash X raus.

So da tritt dann das Problem ein - d.h. ich kann von Hash X auf das passwort schliessen.

Ich meine man müsste nur alle möglichen Passwörter einen hashwert bilden und dann mit dem hashwert vergleichen.....

dat is doch net so gut ;)

@[WCM]Manx
hast du das perlskript geschrieben?

Gruß Temp

[WCM]Manx
23.11.03, 10:51
Original geschrieben von Temp

@[WCM]Manx
hast du das perlskript geschrieben?


Nein, aus der openldap Mailinglist geklaut:
http://www.openldap.org/lists/openldap-software/200203/msg00527.html

Grüße

Manx

RapidMax
23.11.03, 13:26
Original geschrieben von Temp
der gedanke war der - wenn ich einen hash von einem passwort bilde dann kommt der hash X raus.... wenn ich dann später nocheinmal von dem gleichen passwort einen Hash bilde kommt der gleiche hash X raus.

So da tritt dann das Problem ein - d.h. ich kann von Hash X auf das passwort schliessen.

Ich meine man müsste nur alle möglichen Passwörter einen hashwert bilden und dann mit dem hashwert vergleichen.....

dat is doch net so gut ;)


Das stimmt soweit. Bedenke jedoch, was eine Hash-Funktion ist:
Eine Hashfunktion berechnet aus Daten beliebiger Grösse einen Wert mit konstanter Länge. Wenn ein einziges Bit in den Eingabe-Daten ändert, ändern sich ca. 50% aller Bits im Hashwert. Und zwar zufällig. Es ist übrigens möglich, dass zwei verschiedene Eingangsdaten auf denselben Hash-Wert abgebildet werden. Wenn nun für einen Hashwert Daten gesucht werden, welche diesen Wert ergeben, gibt es nur die Möglichkeit der Brute-Force-Suche (alle möglichen Werte einzeln durchprobieren). D.h. dass bei MD5 mit 128 Bit 2^128 Möglichkeiten durchprobiert werden müssen. Das ist heute und auch in Zukunft nicht in vernünftiger Zeit möglich.

Nun, was deine Vermutungen angegen hast du nicht so schlecht geraten:
Das was ich erzählt habe, gilt natürlich nur, wenn die Eingangsdaten der Hashfunktion absolut zufällig sind und zwar mindestens gleich viele zufällige Bits wie die Länge des Hashwerts ist(128 bei MD5, 160 bei SHA-1, 256 bei SHA-256 usw.).
Jetzt kommt der Faktor Mensch ins Spiel. 8-stellige Passwörter aus Gross-und Kleinschreibung, Zahlen und Sonderzeichen zu merken ist mühsam. Einfacher ist der Name der Freundin zu merken. Und wenn man es ganz sicher machen will, dann hängt man noch seine Telefon-Vorwahl an den Namen der Freundin.
Eine ziemlich verbreitete Art, an Passwörter zu kommen ist, zuerst an den Hash zu kommen (ohne Shadow-Suite in der /etc/passwd, oder z.B. durch Sniffen einer HTTP-Digest-Authentication). Es gibt im Netz Passwortlisten, die jeden Namen von Menschen, Städten usw. auflisten, die Wörter sämtlicher Sprachen enthalten oder die sämtliche vertikalen, diagonalen und horizontalen Kombinationen auf der Tastatur auflisten. Diese 100-200MByte grossen Listen sind recht schnell durchgerechnet auch wenn noch z.B. noch verschiedene Kombinationen in Gross und Kleinschreibung versucht werden. Die Software dazu ist auch Cluster-fähig, so dass es je nach Passwort ein paar Sekunden bis ein paar Tage geht, bis das Passwort gefunden wurde.

Gruss, Andy

Temp
23.11.03, 17:52
danke für die Erklärung

Wieder was dazugelernt :)

Gruß Temp