htpasswd - verschiedene Zeichenketten

qBiC

Lt. Junior Grade
Registriert
Feb. 2008
Beiträge
256
Hallo

Ich hätte da mal eine Frage bezüglich htpasswd welches ja beim Apache dabei ist.
htpasswd verwendet ja das MD5-Verfahren um die Passwörter zu codieren.

Hab mich nun ein wenig durch MD5 durchgelesen und bin auf etwas gestoßen, das mir nicht ganz einleuchtet und wo ich mal euren Rat bräuchte.

Wenn ich mittels htpasswd 2 Benutzerdateien mit jeweils dem gleichem Benutzer und dem gleichen Passwort anlege, wieso bekomme ich 2 vollkommen unterschiedliche Werte heraus?
Nachdem was ich über MD5 gelesen habe, müsste doch immer der gleiche Wert herauskommen wenn ich ein und den selben Ausgangswert benutze.

Wikipedia schrieb:
MD5 erzeugt aus einer Nachricht variabler Länge eine Ausgabe fester Länge (128 Bit). Die Ausgangsnachricht wird zunächst so aufgefüllt, dass ihre Länge 64 Bits davon entfernt ist, durch 512 teilbar zu sein. Als erstes wird eine Eins angehängt, dann so viele Nullen wie nötig. In dem unwahrscheinlichen Fall, dass die Ausgangsnachricht schon die gewünschte Länge besitzt, wird trotzdem eine Eins angehängt. Nun wird eine 64-Bit-Zahl, die die Länge der Ausgangsnachricht repräsentiert, angehängt. Die Nachrichtenlänge ist jetzt durch 512 teilbar.

Ich habe die gleichen Zeichenlängen, demnach ist es an der selben stelle durch 512 teilbar.
Wie komme ich dann auch 2 unterschiedliche Ergebnisse?
Hab auch noch andere Quellen hinzugezogen außer Wiki und überall lese ich nur von eindeutigen Ergebnissen.
php-space schrieb:
Dabei wird für eine Zeichenkette immer derselbe MD5-Hash erzeugt.Daher ist es möglich, Daten verschlüsselt abzuspeichern und zu vergleichen.

Oder benutzt htpasswd eine abart von MD5 und nennt es nur MD5-Codierung?
Hoffe ihr könnt mir weiter helfen.:freak:


Hab grad noch ein wenig rumgeschaut und bin darafu gestoßen, dass mittels htpasswd erzeugte Passwörter nicht mit MD5 übereinstimmt.
Dennoch stellt sich mir die Frage, woher Apache weiss welches Passwort ich gerade eingegeben habe, wenn ihm 2 verschiedene Lösungen zu Verfügung stehen. Schließlich müsste beim übersetzen und abgleichen des eingegebenen Passworts bei der Passwortabfrage wieder ein anderer Wert rauskommen der nicht mit dem/den anderen Wert(en) übereinstimmt.

Hoffe mir kann jemand bei meinem Problem helfen. Würde schon gern verstehen, was die sich da wieder für eine Spielerei haben einfallen lassen ;)


Nun hab ichs endlich gefunden.
Die Lösung ist Salz :D

Ne nu mal Spaß bei Seite, nach ein wenig abstruser Sucherei bei google stieß ich auf folgendes:
Wikipedia schrieb:
Salt (engl. „Salz“) bezeichnet in der Kryptographie eine zufällig gewählte Bitfolge, die mit einem gegebenen Klartext vor der Verwendung als Eingabe einer Hashfunktion konkateniert wird, um die Entropie der Eingabe zu erhöhen.

Die Verwendung eines Salts erhöht den Aufwand von Wörterbuch-und Brute-Force-Angriffen oder Angriffen unter Verwendung einer Rainbow Table auf die Chiffre deutlich. Wörterbuchangriffe werden erschwert, da nicht mehr in einer indizierten Liste von verschlüsselten Werten (Hashtabelle) der zugehörige entschlüsselte Wert nachgeschlagen werden kann, sondern für jeden Klartext hash(Klartext + Salt) == bekannter Hash überprüft werden muss, was viel Rechenzeit kostet. Weiterhin wird die Informationssicherheit der verwendeten Storage-Engine erhöht, da zwei identische Klartexte, zum Beispiel zwei zufällig gleich gewählte Passwörter unterschiedlicher Benutzer, mit einer sehr hohen Wahrscheinlichkeit zu verschiedenen Chiffren führen.

Somit wäre geklärt warum ich verschiedene Ergebnisse bekomme wenn ich htpasswd verschlüssele. MD5 verfügt nämlich nicht über Salt und generiert daher immer den gleichen Schlüssel, während htpasswd salt benutzt unm somit verschiedene schlüssel zu generieren.

Ich weiss zwar noch immer nicht wie man dann Anfangswert und Schlüssel dann voneinander unterscheiden kann, aber ich hoffe das bekomme ich noch raus.

Werd auf jeden fall weiter suchen oder eben darauf warten das mit das jemand erklären kann.:cool_alt:


Und wieder melde ich mich zurück mit einem Glückstreffer bei Google.

in the initial encryption htpasswd uses crypt or des derivative to encrypt the password using a random salt value.

In any comparison thereafter the encrypted password is read first to retrieve the salt used in the initial encryption and then crypt is called to create the comparison value.

Rätsel gelöst, Thread kann geclosed werden.

Alleinunterhalter sein ist was tolles :D
 
Zuletzt bearbeitet:
Zurück
Oben