Ark: Sicherheit von crypt

hiho

Nachdem das crypt nur die ersten 2 Zeichen Salt hat und viel Pepper dahinter,
sollte IMHO nicht nur das _eine_ Plain-Passwort auf
den crypt Wert passen,  sondern recht viele Passwörter,
weil sicher mehr als nur ein Passwort den selben crypt wert hat,
oder seh ich was falsch?

Somit wäre crypt ja recht unsicher?
Oder wird es sicherer wenn man 20 Zeichen Passwörter nimmt?
Aber andererseits, das entscheidende am crypt sind immer nur 2 Buchstaben...

Ich hab das Gefühl egal wie lange das Passwort ist, crypt bleibt unsicher,
weil das Alphabet 26 Buchstaben hat,
also    26 (mathematisches zeichen) 26  Möglichkeiten gibt es insgesamt.

Dangge :P
 Ark

  1. hiho

    http://aktuell.de.selfhtml.org/cgi-bin/cryptform.pl?password=pass

    Wie mir vorher schon erklärt wurde,
    ändert sich das crypt immer, was man bei obigem Beispiel gut
    mit Reload sehen kann.

    Die ersten beiden Buchstaben (Salt) sollten aber immer gleich bleiben.
    Tun sie aber bei dem Beispiel nicht.
    Dennoch klappt es immer bei der .htaccess

    Irgendwie hab ich das immer noch nicht gerafft.

    Aber wie gesagt die Hauptfrage gilt der Sicherheit von "crypt"
    MD5 kann ich leider nicht verwenden wegen des IE Bugs mit den GET Urls
    und das ist in der installieren Apache Version noch nicht gelöst.

    Danke :P
      Ark

    hiho

    Nachdem das crypt nur die ersten 2 Zeichen Salt hat und viel Pepper dahinter,
    sollte IMHO nicht nur das _eine_ Plain-Passwort auf
    den crypt Wert passen,  sondern recht viele Passwörter,
    weil sicher mehr als nur ein Passwort den selben crypt wert hat,
    oder seh ich was falsch?

    Somit wäre crypt ja recht unsicher?
    Oder wird es sicherer wenn man 20 Zeichen Passwörter nimmt?
    Aber andererseits, das entscheidende am crypt sind immer nur 2 Buchstaben...

    Ich hab das Gefühl egal wie lange das Passwort ist, crypt bleibt unsicher,
    weil das Alphabet 26 Buchstaben hat,
    also    26 (mathematisches zeichen) 26  Möglichkeiten gibt es insgesamt.

    Dangge :P
    Ark

    1. Sup!

      Bei gleichem Salt und gleichem Passwort kommt immer das gleiche raus.
      Den "Salt" gibt es nur, damit nicht zwei User mit gleichem Passwort das sofort merken, wenn sie sich die Hashes in der Passwort-Datei ansehen.

      Wenn man weiss, wie ein Passwort von irgendwem lautet, ist es relativ leicht, herauszufinden, welchem User es gehört, wenn man den Inhalt der Passwort-Datenbank kennt - man muss nur das Passwort mit dem Salt jedes Users in der Passwort-Datenbank verschlüsseln und sehen, wem es gehört; darum sollte die Passwort-Datenbank auch nur von root zu lesen sein!

      Ein unbekanntes Passwort zu finden ist aber schwierig, denn die Komplexität steigt mit der Anzahl der Zeichen des Passworts und mit der Grösse des Salt.

      Gruesse,

      Bio

      --
      Keep your friends close, but your enemies closer!
  2. Sup!

    Das siehst Du völlig falsch, den crypt macht aus 8 Buchstaben Passwort und 2 Zeichen Salt 13 Zeichen Hash (davon sind 11 Zeichen Passwort-Hash und 2 der unverschlüsselte Salt).

    Die crypt-Funktion ist injektiv, es kommt also bei keinen zwei verschiedenen Passwörtern bei gleichem Salt der gleiche Passwort-Hash raus.

    Ebensowenig kann bei verschiedenem Salt und gleichem Passwort der gleiche Gesamt-Hash rauskommen, weil das Salt ja unterschiedlich ist.

    Und das Salt sollte schon bei möglichst allen Usern unterschiedlich sein.

    Es gibt übrigens mehr Möglichkeiten als Du denkst, denn in Passwörtern können viele Zeichen (Zahlen, Buchstaben, Sonderzeichen) vorkommen, ebenso im Salt.

    Wenn Du paranoid bist, kannst Du das Standard-Crypt (benutzt DES-Verschlüsselung zum Erzeugend es Passwort-Hashes) auch durch aufgebohrte Verfahren (DES mit 6 Zeichen Salt, MD5-Hash, Blowfish-Hash) ersetzen.

    Gruesse,

    Bio

    --
    Keep your friends close, but your enemies closer!
    1. Hi,

      Die crypt-Funktion ist injektiv, es kommt also bei keinen zwei verschiedenen Passwörtern bei gleichem Salt der gleiche Passwort-Hash raus.

      hä? Hier wird ein unendlicher Eingabebereich auf eine endliche Ausgabemenge festgelegt, das heißt, es gibt auch unendlich viele Passwörter, bei denen der gleiche Wert rauskommt...

      Schau auch den Link an, die Ausgabelänge bleibt immer gleich ;-)

      E7

      1. Hi,

        Die crypt-Funktion ist injektiv, es kommt also bei keinen zwei verschiedenen Passwörtern bei gleichem Salt der gleiche Passwort-Hash raus.
        hä? Hier wird ein unendlicher Eingabebereich auf eine endliche Ausgabemenge festgelegt, das heißt, es gibt auch unendlich viele Passwörter, bei denen der gleiche Wert rauskommt...

        Inwiefern ist ein 8 Zeichen langer String ein unendlicher Eingabebereich?

        Schau auch den Link an, die Ausgabelänge bleibt immer gleich ;-)

        Die Eingabelänge bleibt immer unter 9 Zeichen.

        cu,
        Andreas

        --
        Warum nennt sich Andreas hier MudGuard?
        Schreinerei Waechter
        Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
        1. Hi,

          Inwiefern ist ein 8 Zeichen langer String ein unendlicher Eingabebereich?

          Wer sagt denn, dass man in die Funktion nur 8 Zeichen reinhacken kann?
          "mein.geheimes.passwort" -> eingabe -> CRYPT -> ausgabe -> "ABCDE"

          oder auch: f(x) = x^2 --> crypt(passwort) = passwort^2

          Die möglichen Ausgabewerte sind so ungefähr die Hälfte von den möglichen Eingabewerten (wobei das im Grunde wurscht ist, da Passwort unendlich ist, und die Ausgabe dann auch)

          E7

          1. Sup!

            Wer sagt denn, dass man in die Funktion nur 8 Zeichen reinhacken kann?

            Ist halt so beim "klassischen" Crypt.

            Gruesse,

            Bio

            --
            Keep your friends close, but your enemies closer!
          2. Hi,

            Wer sagt denn, dass man in die Funktion nur 8 Zeichen reinhacken kann?
            "mein.geheimes.passwort" -> eingabe -> CRYPT -> ausgabe -> "ABCDE"

            oder auch: f(x) = x^2 --> crypt(passwort) = passwort^2

            Dann guck Dir mal an, wie sich die vercrypteten Versionen von z.B.
            12345678 und 123456789 und 1234567890 (bei identischem salt) unterscheiden ...

            Bzw. ganz allgemein von einem langen Paßwort und von den ersten 8 Zeichen des langen Paßworts.

            Die möglichen Ausgabewerte sind so ungefähr die Hälfte von den möglichen Eingabewerten (wobei das im Grunde wurscht ist, da Passwort unendlich ist, und die Ausgabe dann auch)

            Nein, bei crypt werden nur die ersten 8 Zeichen des Paßworts berücksichtigt, egal wie lange das angegebene Paßwort ist.

            cu,
            Andreas

            --
            Warum nennt sich Andreas hier MudGuard?
            Schreinerei Waechter
            Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
            1. Hi,

              Nein, bei crypt werden nur die ersten 8 Zeichen des Paßworts berücksichtigt, egal wie lange das angegebene Paßwort ist.

              echt? Hmmmmmm... Hätte einem ja auch früher gesagt werden können... Dann zieh ich natürlich alles zurück, und frage mich warum es hier nix bringt, ein möglichst langes Passwort zu verwenden ;-)

              E7

  3. Hi,

    Nachdem das crypt nur die ersten 2 Zeichen Salt hat und viel Pepper dahinter,

    2 Zeichen salt und 8 Zeichen Passwort, die in 11 Zeichen kodiert sind.

    Ich hab das Gefühl egal wie lange das Passwort ist, crypt bleibt unsicher,
    weil das Alphabet 26 Buchstaben hat,

    Ja und? Wieviele Zeichen das Alphabet hat, ist egal - entscheidend ist, wieviele Zeichen verwendet werden.
    Und das sind 64 - 26 Großbuchstaben, 26 Kleinbuchstaben, 10 Ziffern, Unterstrich und Slash.

    Für das Salt gibt es also 64*64 Möglichkeiten = 4096 Möglichkeiten.

    Ein und dasselbe Passwort kann also auf 4096 verschiedene Arten verschlüsselt werden.

    11 Zeichen kodiertes Paßwort ergeben 64 hoch 11 = 73.786.976.294.838.206.464 Möglichkeiten.

    Du mußt also ein Paßwort finden, das genau eine dieser 73 Trillionen möglichen Verschlüsselungen erzeugt. Und das bei genau diesem einen aus 4096 salts.

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    Schreinerei Waechter
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
  4. hiho

    Nehmen wir an der User hat das passwort "foobar"
    "fo" verschlüsselt "foobar"
    Es kommt wert X raus als crypt.

    Ich speichere den Wert.
    Beim nächstem mal wenn der user kommt gibt der sein passwort ein.
    Ich vergleiche es mit de gespeicherten crypt wert.
    Die beiden sind nicht identisch.
    Login fehlgeschlagen.

    Dieses crypt ist schwer zu verstehen.

    Dangge :P
      Ark

    1. hi,

      Nehmen wir an der User hat das passwort "foobar"
      "fo" verschlüsselt "foobar"
      Es kommt wert X raus als crypt.

      Ich speichere den Wert.
      Beim nächstem mal wenn der user kommt gibt der sein passwort ein.
      Ich vergleiche es mit de gespeicherten crypt wert.
      Die beiden sind nicht identisch.

      dann hat der user ein falsche passwort eingegeben.

      Login fehlgeschlagen.

      tja, das will man dann ja wohl auch hoffen, oder?

      Dieses crypt ist schwer zu verstehen.

      ich finde dein gewese, das du darum machst, schwer zu verstehen.

      gruß,
      wahsaga

      --
      "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
      1. Sup!

        ich finde dein gewese, das du darum machst, schwer zu verstehen.

        Auch wenn mir die Rolle als Anwalt der Noobs nicht gut zu stehen scheint: Ich hatte damals auch Verständnisprobleme in Bezug auf crypt.

        Habe also Geduld mit dem jungen Jedi ;-)

        Gruesse,

        Bio

        --
        Keep your friends close, but your enemies closer!
    2. Sup!

      Ein password-Eintrag sieht so aus:

      2 Zeichen Salt - 11 Zeichen Hash.

      Der Hash wird errechnet, indem man das Passwort mit den zwei Zeichen Salt DES-verschlüsselt.

      Das Passwort wird überprüft, indem Du es eingibst, der Computer sucht Deinen Nutzernamen in der Passwort-Datei, liest den Passwort-Eintrag aus (13 Zeichen), nimmt die ersten beiden Zeichen (den Salt), verschlüsselt damit Dein Passwort, raus kommen 11 Zeichen Hash, die vergleicht er mit den übriggebliebenen 11 Zeichen im Passwort-Eintrag, und wenn sie übereinstimmen, dann hast Du Dein Passwort richtig eingegeben.

      Der Salt ist nur dazu da, damit zwei User mit gleichem Passwort nicht den gleichen Passwort-Datei-Eintrag bekommen, weil man sonst sehen würde, dass sie den gleichen Passwort-Eintrag haben.

      Gruesse,

      Bio

      --
      Keep your friends close, but your enemies closer!
  5. Moin!

    Nachdem das crypt nur die ersten 2 Zeichen Salt hat und viel Pepper dahinter,
    sollte IMHO nicht nur das _eine_ Plain-Passwort auf
    den crypt Wert passen,  sondern recht viele Passwörter,
    weil sicher mehr als nur ein Passwort den selben crypt wert hat,
    oder seh ich was falsch?

    Somit wäre crypt ja recht unsicher?

    Nein, _deswegen_ ist crypt nicht unsicher. crypt ist unsicher, weil es nur die ersten 8 Zeichen des Passwortes berücksichtigt und alle nachfolgenden ignoriert. Mit heutigen Rechnern könnte man dann tatsächlich in aussichtsreicher Zeit alle möglichen Kombinationen durchprobieren.

    Oder wird es sicherer wenn man 20 Zeichen Passwörter nimmt?

    Da crypt nach 8 Zeichen abschneidet - nein.

    Aber andererseits, das entscheidende am crypt sind immer nur 2 Buchstaben...

    Nein, das Salt kann irgendein Zufallswert sein, ist aber nicht weiter wichtig. Es soll nur die Ergebnisse noch etwas verwürfeln. Das benutzte Salt steht beim Ergebnis auch vorne wieder drin, damit man die Korrektheit eines Passwortes zusammen mit diesem Salt auch prüfen kann. Das Salt macht es also absolut nicht schwieriger, das System zu knacken.

    Ich hab das Gefühl egal wie lange das Passwort ist, crypt bleibt unsicher,
    weil das Alphabet 26 Buchstaben hat,
    also    26 (mathematisches zeichen) 26  Möglichkeiten gibt es insgesamt.

    Crypt ist deswegen unsicher, weil nur 8 Zeichen Passwort reingehen und deshalb auch nur relativ wenig verschiedene Ergebnisse rauskommen können. MD5 oder SHA1 sind heutzutage in jedem Falle vorzuziehen.

    - Sven Rautenberg

    1. Sup!

      Crypt ist deswegen unsicher, weil nur 8 Zeichen Passwort reingehen und deshalb auch nur relativ wenig verschiedene Ergebnisse rauskommen können. MD5 oder SHA1 sind heutzutage in jedem Falle vorzuziehen.

      Naja... ob ich gerade MD5 oder SHA1 empfehlen würde... die werden gerade von den Kryptologen zerlegt.

      Gruesse,

      Bio

      --
      Keep your friends close, but your enemies closer!
      1. Moin!

        Crypt ist deswegen unsicher, weil nur 8 Zeichen Passwort reingehen und deshalb auch nur relativ wenig verschiedene Ergebnisse rauskommen können. MD5 oder SHA1 sind heutzutage in jedem Falle vorzuziehen.

        Naja... ob ich gerade MD5 oder SHA1 empfehlen würde... die werden gerade von den Kryptologen zerlegt.

        SHA1 soll jetzt ja plötzlich ganz böse angreifbar geworden sein, weil man die Anzahl der Versuche von 2^80 auf 2^69 senken konnte - Heise berichtete.

        Andererseits: Noch hat niemand für MD5 und SHA1 einen Angriff gezeigt, der in nennenswert kurzer Zeit Ergebnisse liefert. Bei crypt hingegen lohnt es sich schon, zu warten. Kann dann zwar 14 Tage dauern, aber das ist immerhin noch kürzer, als bis halb zum Ende des Universums.

        - Sven Rautenberg

        1. hi,

          Bei crypt hingegen lohnt es sich schon, zu warten. Kann dann zwar 14 Tage dauern, aber das ist immerhin noch kürzer, als bis halb zum Ende des Universums.

          na ja, diese wartezeit könnte man sich ja im dortigen restaurant vertreiben ...

          gruß,
          wahsaga

          --
          "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
        2. Moin,

          SHA1 soll jetzt ja plötzlich ganz böse angreifbar geworden sein, weil man die Anzahl der Versuche von 2^80 auf 2^69 senken konnte - Heise berichtete.

          Nicht nur Heise, erstmal war's Schneier. Das war recht lustig als ich die Meldung beim Fachschaftsfrühstück gelesen hatte und dem ebenfalls anwesenden Dozenten der anschließend die Kryptologievorlesung hält zeigte: "Boah, das 'n Ding!" Er lief dann erstmal leicht hektisch in der Gegend rum. Später dann (wohlgemerkt mitten in der Vorlesung) klingelte sein Telefon und er ging (unter deutlichem Kichern des Auditoriums) ran und erklärte seinem Gesprächspartner offenbar den Weg zu Schneiers Weblog mit der Meldung.

          Andererseits: Noch hat niemand für MD5 und SHA1 einen Angriff gezeigt, der in nennenswert kurzer Zeit Ergebnisse liefert. Bei crypt hingegen lohnt es sich schon, zu warten. Kann dann zwar 14 Tage dauern, aber das ist immerhin noch kürzer, als bis halb zum Ende des Universums.

          Das würde ich gar nicht mal so hoch ansetzen, zumindest bei halbwegs schwachen Passwörtern. Ich habe mir mal zu anderer Gelegenheit (Seminar Security Engineering, Vortrag zu Passwortsicherheit) die passwd-Datei unseres Instituts genommen (rund 2000 Accounts) und durch john the ripper laufen lassen. Die ersten Passwörter fielen bereits nach Sekunden raus, und in den 10 oder so Minuten die ich es habe laufen lassen hat es 22 Passwörter ausgespuckt.

          --
          Henryk Plötz
          Grüße aus Berlin
          ~~~~~~~~ Un-CDs, nein danke! http://www.heise.de/ct/cd-register/ ~~~~~~~~
          ~~ Help Microsoft fight software piracy: Give Linux to a friend today! ~~
        3. 你好 Sven,

          SHA1 soll jetzt ja plötzlich ganz böse angreifbar geworden sein, weil man
          die Anzahl der Versuche von 2^80 auf 2^69 senken konnte - Heise berichtete.

          Die Vermutung liegt aber nahe, dass man, wenn man sie auf 2^69 senken
          konnte, man sie auch noch weiter senken kann.

          再见,
           CK

          --
          Treffen sich zwei Geraden. Sagt die eine: "Beim nächsten Mal gibst du einen aus."
          http://wwwtech.de/