Archiv verlassen und diese Seite im Standarddesign anzeigen : UNIX, Java, MD5 Salt usw.
Ich suche eine Java-Klasse, die mir ein Passwort gegen den Hash aus der shadow-Datei (Gentoo-Linux) checkt. Encrypter habe ich gefunden, aber da die Dinger gesalzen sind brauche ich speziell eine Art CheckHash-Funktion. Wo kann ich sowas kriegen?
Ich brauche nur die reine Check-Routine. Ein Zugriff auf das System ist nicht erforderlich, da ich die gewünschten Passwörter in die Datenbank schaufel.
peschmae
23-02-2006, 08:11
So wie ich salzen bisher verstehe muss das Salz selber auch irgendwo gespeichert sein - logischerweise in der Shadow-Datei.
Siehe auch man 3 crypt - da steht wie das tut. Da kannst du dann auch gleich die funktion zum verifizieren benutzen.
MfG Peschmä
Salt in der shadow? Ist das so? Oder gibt es dafür unter Linux Standards? Ich habe keinen Zugriff auf die shadow-Datei. Ich bin in Sachen Kryptologie ein absoluter Laie. Gibt es nicht einfach eine Klasse mit einem Algoritmus, der mir ein String gegen einen UNIX-Passwort-Hash prüft? Gibt es da evtl. Standardmechanismen?
Ich erhalte nur username und passwort-hash aus der shadow-Datei. Mehr stellt man mir nicht zur Verfügung. Reicht das nicht aus um eine Verifizierung durchzuführen?
peschmae
23-02-2006, 17:57
Ich hab ja auch nicht wirklich viel Plan von Kryptozeugs (aber das haben die wenigsten - auch die die das Gegenteil behaupten ;)).
So wie ich das vorgehen bei Salt verstehe ist: Beim ersten Erstellen des Passworthashs kommen noch ein paar zufällige Bits dazu - vom ganzen wird dann der Hash erstellt. Mit einem "gewöhnlichen" Algorithmus. Damit man nun ein eingegebenes Passwort prüfen kann braucht man das Salt - weil die Algorithmen ja genau darauf getuned sind dass kleinste Veränderungen am Passwort einen komplett anderen Hash ergeben.
Dass das Salt bekant ist ist keine Sicherheitslücke - die Idee ist ja nur Wörterbuchattacken mit riesigen Passwort-Md5sum-Tabellen zu verhindern.
Fazit: Du brauchst das Salt. Aber eventuell ist das in dem was du "passwort-hash" nennst schon dabei. Zumindest in der Shadow-Datei sind das die ersten paar Stellen oder so dessen was man gemeinhin als Passwort-Hash idendifizieren würde.
MfG Peschmä
Gelöst gelöst gelöst (*FREU*):
Und jetzt für alle die Lösung:
Eine unglaublich gute Erklärung dazu gibt es hier:
http://www-128.ibm.com/developerworks/java/library/l-md5crypt/
(IBM ist manchmal doch zu was gut! ;-) )
Da kann man sich auch eine Klasse runterladen:
http://www-128.ibm.com/developerworks/java/library/l-md5crypt/#download
Ich gebe das mal kurz mit meinen Worten wieder für Leute, die es schnell brauchen:
Auszug aus der Shadow-Datei:
nylz:$1$iAl6SpZ4$z4bi2tGUUtDYapyvE5aT1.:13200:0:99 999:7:::
Das Password lautet test
Es gibt auch shadow-Files, die nicht 'salted' sind, aber daran, daß das Passwort mit $1$ anfängt sehen wir, daß hier doch Salz gestreut wurde.
Und zwar ist es unter UNIX i.d.R. so, dass nach dem $1$ ein 8 Character-Salt bis zum nächsten $ kommt und dann der MD5-Hash.
Also: $1$[8-character-salt]$salted-md5-hash
Der MD5Crypt-Klasse (s.o. download) muss ich den Hash halt da rauspflücken (hier 'iAl6SpZ4') und mitgeben - aber dann tut sie auch, was ich erwarte.
Beweis:
> java -classpath . MD5Crypt test iAl6SpZ4
$1$iAl6SpZ4$z4bi2tGUUtDYapyvE5aT1.
Naja... wenn man das mal weiss... ;-)
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.