Ergebnis 1 bis 3 von 3
Like Tree1Likes
  • 1 Post By goto

[PHP] Passwörter hashen und salzen

Das ist eine Diskussion über [PHP] Passwörter hashen und salzen im Fertige Programme/Scripts Forum; Hallo, hier eine kleine, aber feine Funktion um Passwörter z.b. für eine User-DB zu hashen und mit Salz zu versehen. ...

  1. #1
    Lebt sich ein Avatar von goto
    Registriert seit
    25.01.2010
    Beiträge
    27

    Standard [PHP] Passwörter hashen und salzen

    Hallo,

    hier eine kleine, aber feine Funktion um Passwörter z.b. für eine User-DB zu hashen und mit Salz zu versehen. Dazu noch ein paar Bemerkungen meinerseits.

    Warum sollte man Passwörter verschlüsseln?

    Die Frage ist leicht und schnell beantwortet - Würd ein Angreifer, durch welchen Bug auch immer, Zugriff auf eine Datenbank mit unverschlüsselten bzw. ungehashten Passwörtern erhalten, könnte er mithilfe dieser und evtl. hinterlegten Emailadressen sowohl die Emailaccounts der User als auch deren andere Anmeldungen hijacken. Deshalb möchte man unverschlüsselte Passwörter in einer Userdatenbank unter keinen Umständen haben.

    Was hat es mit dem "salzen" auf sich?

    Salzen nennt man den Vorgang der dazu dient einen Angriff mit Rainbow Tables zu erschweren/verhindern. Es ist deutlich einfacher einen Passworthash mithilfe von Rainbow Tables zu brechen, wenn das Passwort 1:1 und möglicherweise auch nur ein mal gehashed wurde. Das Salz ist im Grunde nichts anderes als eine beliebige Zeichenkette. Diese kann, wie im Falle dieser Funktion, statisch sein oder auch dynamisch generiert werden.

    Das Salz sorgt nun dafür dass der erzeugte Hash keine 1:1 Umwandlung des Passwortes mehr wird und somit der Angriff per Rainbow Tables erschwert wird (so etwas ist z.b. wichtig wenn einem die User-DB abhanden kommt, die Passwörter aber gehashed sind und der Angreifer die Klarpasswörter rausrechnen möchte). Als zusätzlichen Sicherheitslayer kann man nun den Hash mit dem Salz zusammenlegen und das Ergebnis dann nochmals hashen.

    Sofern das Salz und die verwendeten Hash-Algorythmen dem Angreifer nicht bekannt sind, steigt der Aufwand zum Errechnen der Klarpasswörter exponenziell an und der Angreifer wird sich - hoffentlich - die Frage stellen, ob es den Aufwand wert ist - Eines muss nämlich klar sein, die Frage ist nicht ob eine Verschlüsselung gebrochen werden kann, sondern wie viel Aufwand damit verbunden ist.

    PHP-Code:
    <?php

    function encrypt_char($input_char) {
        
        
    //define some random string for salting the password
        
    $salt "your random string goes here";
        
        
    //first create a md5 hash of the given string
        
    $input_char_md5 md5($input_char);
        
        
    //after that, add a little salt for extra spiciness
        
    $input_char_with_salt $input_char_md5.$salt;
        
        
    //last but not least create a sha1 hash from the salted md5 hash
        
    $input_char_encrypted sha1($input_char_with_salt);
        
        
    //return the encrypted password
        
    return $input_char_encrypted;

    }

    ?>
    fox likes this.
    MfG / Kind Regards

    For more Information and Social Media visit ThinkPixel

  2. #2
    Administrator Avatar von Chronos
    Registriert seit
    08.01.2009
    Ort
    127.0.0.1
    Beiträge
    1.908

    Standard

    sehr nett.
    um das ganze nochmal ne spur sicherer zu machen könnte man auch den salt-wert per zufall generieren lassen und zB statt anfang oder ende nach dem 4. zeichen in das Passwort einfügen und nochmal verschlüsseln *g*
    Ich höre 10 Stimmen in meinem Kopf, 9 sagen ich sei nicht verrückt, die 10. summt die Melodie von Tetris
    Join us - Starter_Forum@Twitter or join me brokenlinkAT@Twitter
    Kein Support per PN
    brokenlink.at - coming soon

  3. #3
    Experte Avatar von Kulle
    Registriert seit
    20.05.2010
    Beiträge
    830

    Standard

    So ich als Laie stelle mir da jetzt die Frage (mache es momentan in meinem Probescript mit 4 facher durcheinanderwürfeln) wie er es herausfinden soll beim Login wenn es ein total zufälliger Algorithmus ist. Oder habe ich das falsch verstanden?
    mfg
    kulle

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 22.08.2010, 13:24
  2. Antworten: 3
    Letzter Beitrag: 15.08.2010, 13:53

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •