Ahnungsloser: .htaccess Verschlüsselung

Schönen guten Tag zusammen.

Eigentlich habe ich nur eine ganz kurze Frage, hab jedoch nichts konkretes dazu gefunden, ich hoffe ihr könnt mir helfen.

Im Intranet meiner Firma besteht in einem Verzeichnis ein Passwortschutz durch .htaccess. In der Datei .htusers sind ein paar Benutzer mit verschlüsselten Passwörtern angegeben.

Nehmen wir einmal an, das Passwort eines Users ist "albert10".
Wenn ich nun das Passwort z.B. hier durch Crypt verschlüssle, kommt bei jedem Vorgang für das selbe Passwort jeweils eine andere Zeichenfolge heraus, zum Beispiel:

$1$Px1O9eOb$59wZSTeWPQmnDpgSdmmYC1
oder
$1$iflq0o65$Dts4Szv/hVBm8Vzs40V/Y/

Wenn ich nun eine der beiden Beispiele bei dem User in .htusers eintrage, kann ich mich im Browser in das Verzeichnis mit "albert10" einloggen.

Meine Frage ist nun: Wie kann der Server das eingegebene Passwort "albert10" einer der anscheinend beliebig vielen Möglichkeiten an mit Crypt erzeugten Zeichenfolgen zuordnen, vor allem da Crypt doch irreversibel verschlüsselt?

  1. Meine Frage ist nun: Wie kann der Server das eingegebene Passwort "albert10" einer der anscheinend beliebig vielen Möglichkeiten an mit Crypt erzeugten Zeichenfolgen zuordnen, vor allem da Crypt doch irreversibel verschlüsselt?

    Afaik verwendet Crypt einen rotierenden Schlüssel - auf der anderen Seite muss diese Rotation ebenfalls vollzogen und "ausprobiert" werden.

    Aufgrund dieser Eigenart  lässt sich crypt auch extrem leicht bruteforcen - und das ist schon lange bekannt: http://axion.physics.ubc.ca/cbw.html

    1. Vielen Dank schonmal für die Antworten.
      Aber wie gelangt der Server von
      $1$Px1O9eOb$59wZSTeWPQmnDpgSdmmYC1 oder auch $1$iflq0o65$Dts4Szv/hVBm8Vzs40V/Y/ etc. an das Passwort "albert10"?
      Lässt sich das verschlüsselte Passwort also doch auch wieder entschlüsseln? Wie macht Apache das?

      1. Vielen Dank schonmal für die Antworten.
        Aber wie gelangt der Server von
        $1$Px1O9eOb$59wZSTeWPQmnDpgSdmmYC1 oder auch $1$iflq0o65$Dts4Szv/hVBm8Vzs40V/Y/ etc. an das Passwort "albert10"?
        Lässt sich das verschlüsselte Passwort also doch auch wieder entschlüsseln? Wie macht Apache das?

        $1$Px1O9eOb$59wZSTeWPQmnDpgSdmmYC1
        $1$iflq0o65$Dts4Szv/hVBm8Vzs40V/Y/
           ^------^ ^--------------------^
               A              B

        A ist der "Salt".
        B der verschlüsselte Text

        Der Algorithmus ist Apache bekannt - Apache macht jetzt folgendes:

        Es nimmt das vom Benutzer eingegebene Passwort, hängt daran den Salt (gemäß dem Algorithmus) - also "A" - und lässt die Verschlüsselungsfunktion (bzw. Hashfunktion) drüber.

        Das Ergebnis aus dieser Operation wird mit "B" vergleichen, ist es ident, ist die Wahrscheinlichkeit extrem hoch, dass es sich um das richtige Passwort gehandelt hat.

        Im Fall von echtem MD5 z.B. 2^128 : 1 - was apache genau mit "MD5 modified for Apache" meint, weiss ich aber nicht - wird aber wohl die Darstellung betreffen, da diese offensichtlich nicht Hexadezimal ist :)

        Allerdings verwirrt mich das jetzt auch wieder: da als alternative "systems crypt()" angegeben wird und das Unix-Crypt wie bereits erwähnt einen rotierenden Schlüssel verwendet.

        1. Super, vielen Dank, das hat mir sehr geholfen. :)

        2. Super, vielen Dank, habt mir sehr geholfen. :)

  2. Hi,

    Wenn ich nun das Passwort z.B. hier durch Crypt verschlüssle,

    tut die Seite aber nicht.

    $1$Px1O9eOb$59wZSTeWPQmnDpgSdmmYC1
    oder
    $1$iflq0o65$Dts4Szv/hVBm8Vzs40V/Y/

    Das sieht eher nach der Apache-Variante von MD5 aus. Also weder crypt noch Verschlüsselung.

    Ein Teil des Ergebnisses ist m.W. ein zufälliges "Salt", das zum Paßwort hinzugefügt wird, um beim Verhashen das konkrete Ergebnis zu bekommen.

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
    1. Ein Teil des Ergebnisses ist m.W. ein zufälliges "Salt", das zum Paßwort hinzugefügt wird, um beim Verhashen das konkrete Ergebnis zu bekommen.

      Ich hab mich nochmal schlau gemacht, du hast recht - das ist die C-Variante von Crypt - diese speichert zwischen den $-Zeichen den "Salt" - der Rest dahinter ist der eigentliche verschlüsselte bzw. gehashte Text.

      Das von mir beschriebene Unix-Crypt hat scheinbar mit der Apache-/C-Variante bis auf den Namen nichts gemeinsam.