tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von Flex
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
790
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von preko
    preko preko ist offline Mitglied Brokat
    Registriert seit
    Jun 2004
    Ort
    Mönchengladbach
    Beiträge
    397
    Hi,

    ich habe aufgrund eines aktuellen Projektes mir mal Gedanken gemacht, wie ich die Sicherheit meiner Sessions erhöhen kann.

    Daher bin ich auf die Idee gekommen, 3 verschiedene SHA1 Werte meiteinander zu kombinieren und diese als Session_id zu benutzen. Dies sollte die Möglichkeiten des zufälligen Treffers (z. B. mittels Rainbowtabellen/Rainbow Table) gegen Null tendieren lassen denke ich.

    Hier mal den Denkansatz:
    PHP-Code:
    /*
    -------------------------------------------------------
    Cryptography funktion - 3x SHA1 kombiniert
    -------------------------------------------------------
    */
    // "ClosedDoor" - SHA1 coded - Vom Benutzer frei gewählt 
    // und in Datenbank-Userprofil gespeichert
    $salt_1 "6a2181a17e3a4c902996a33266cfc554cff49be1";

    // "MobyDick" - SHA1 coded - Fest implementiert im System 
    // vom Entwickler vergeben
    $salt_2 "29edcdf410a7907e3826c5fbc5a15f0a1ae95953";

    // "FreeEntry" - SHA1 coded - Passwort des Benutzers 
    // von ihm frei gewählt
    $password "c4777c8581cb36c74be0923e4a4b1d753de6d4d6";

    function 
    cryptmix($salt_1,$salt_2,$password) {
        echo 
    "<p>".$salt_1."<br />";
        echo 
    $salt_2."<br />";
        echo 
    $password."</p>";
        
        
    $salt_1 str_split$salt_1);
        
    $salt_2 str_split$salt_2);
        
    $password str_split$password);

    // Jeweils die 1. Ziffer der 3 Strings wird hintereinandergereiht, 
    // dann die 2., etc.
        
    for($i=0$i<40$i++) {
            
    $mix[] = $salt_1[$i].$salt_2[$i].$password[$i];
        }

    // Ausgabe des "gemischten" (Gesamt-) Strings mit 120 Stellen
        
    echo "Mix: ";
        for(
    $i=0$i<40$i++) {
            echo 
    $mix[$i];
        }

    // Wandelt das Array $mix[] in den String $mix um zwecks weiterer Verwendung
    $mix join('',$mix);
    }

    // Aufruf der Funktion
    cryptmix($salt_1,$salt_2,$password); 
    Die Ausgabe sähe wie folgt aus:
    Salt_1: 6a2181a17e3a4c902996a33266cfc554cff49be1
    Salt_2: 29edcdf410a7907e3826c5fbc5a15f0a1ae95953
    Password: c4777c8581cb36c74be0923e4a4b1d753de6d4d6

    Mix: 62ca942e71d78c71dcaf8145718e013aca7b493c0697c0e723498b92e660ac93523f32be6c465aca4f1bc515fd5074a5c13f adfee49695db94e5d136
    Das Array $mix[] wird dann als Session_id gespeichert. Kann man auch "nur" mit zwei SHA1 Werten machen, was die Arraylänge auf 80 Zeichen reduziert und die Reproduzierbarkeit auch minimal erscheinen lässt.

    Was haltet ihr davon?

    Beste Grüße!
    Geändert von preko (25.01.11 um 11:56 Uhr) Grund: Tippfehler bereinigt. ;)
     
    Wem das Wasser bis zum Hals steht, sollte den Kopf nicht hängen lassen.

    Was man heute Rap-Musik nennt, hieß früher Stottern und war heilbar...

    Es gibt zwei Wege im Leben - den schweren und den falschen!
    -----------------------------------------------------------------------------------------------------
    http://www.prenociste-mir.com
    -----------------------------------------------------------------------------------------------------

  2. #2
    Avatar von Flex
    Flex Flex ist offline (aka Felix Jacobi)
    tutorials.de Moderator
    Registriert seit
    Nov 2001
    Ort
    Wuppertal
    Beiträge
    5.295
    Blog-Einträge
    65
    Meiner Meinung nach ist das eher ein Beitrag für Security through obscurity.

    Die Gefahr von Rainbow Tables, von denen es für SHA noch nicht soviele gibt, wie z. B. bei md5(), sind ja nicht direkt für das Finden von Passwörtern da, sondern für die Kollisionsmenge.

    Hier würde ich sagen: Zuviel Rechenaufwand für zuwenig Ertrag.

    Für einen vernünftigen Salt:
    Man nehme das Passwort, verlängere es mit einem Salt und erstelle einen Hash, fertig.
    Navy bedankt sich. 
    KIDS Kinderbetreuungsdienst
    Xing

    "When you play the game of thrones, you win or you die. There is no middle ground."
    by Cersei Lannister in "A Game Of Thrones"

  3. #3
    Kalito Kalito ist offline Mitglied Brokat
    Registriert seit
    Aug 2010
    Ort
    Leipzig
    Beiträge
    380
    Ich bin ein Fan von folgeneder Verschlüsselung:

    Passwort wird md5 verschlüsselt. Dann wird mit einen : ein salt drangehangen. Dieses Konstrukt wird dann nochmal md5 verschlüsselt
     
    Ich bin keine Signatur! - Auch wenn`s so aussieht :) - Wirklich!

    Über ein Danke freut sich jeder

  4. #4
    Avatar von Flex
    Flex Flex ist offline (aka Felix Jacobi)
    tutorials.de Moderator
    Registriert seit
    Nov 2001
    Ort
    Wuppertal
    Beiträge
    5.295
    Blog-Einträge
    65
    Zitat Zitat von Kalito Beitrag anzeigen
    Ich bin ein Fan von folgeneder Verschlüsselung:

    Passwort wird md5 verschlüsselt. Dann wird mit einen : ein salt drangehangen. Dieses Konstrukt wird dann nochmal md5 verschlüsselt
    Es gibt riesige Rainbowtables in md5() und es sollte, imho, einfach nicht mehr benutzt werden. Es geht nicht um Passwörter die gefunden werden, sondern um Kollisionen bei md5.
    D. h. unterschiedliche Werte erzeugen den gleichen Hash. Und in dieser Hinsicht ist md5 geknackt, weshalb da auch kein Salt mehr hilft. Dieser hilft hier nur keinen Rückschluss auf das richtige Passwort zu bekommen, falls der User auf mehreren Seiten das gleiche Passwort verwendet. Aber es hilft nicht die Applikation vor dem Login zu schützen. Deshalb lieger auf einen stärkeren Algorithmus setzen.
     
    KIDS Kinderbetreuungsdienst
    Xing

    "When you play the game of thrones, you win or you die. There is no middle ground."
    by Cersei Lannister in "A Game Of Thrones"

Ähnliche Themen

  1. [C++] Passwortsicherheit SQL
    Von Reiskocher im Forum C/C++
    Antworten: 6
    Letzter Beitrag: 18.08.10, 15:26
  2. Anzeige der Passwortsicherheit
    Von Freak_Desperado im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 20.06.07, 17:05
  3. sha1 in PostgreSQL?
    Von DealeyLama im Forum Relationale Datenbanksysteme
    Antworten: 0
    Letzter Beitrag: 14.09.05, 23:23
  4. sha1 - Verschlüsselung
    Von bastiglasl im Forum PHP
    Antworten: 4
    Letzter Beitrag: 11.06.04, 14:05
  5. Passwortsicherheit überprüfen
    Von coredump im Forum Security (Viren, Trojaner, Spam)
    Antworten: 6
    Letzter Beitrag: 06.02.04, 19:55

Stichworte