Christoph Zurnieden: 128 Bit Schlüssel erzeugen

Beitrag lesen

Hi,

ergibt folgender Algorithmus ein "sicheres" Passwort

Da habe ich mich gerade einmal drangesetzt, da mir der Papierkram mal wieder bis Oberkante Unterlippe steht.

function make_pw() {
srand ((double)microtime()*1000000);
sha1(rand().$_SERVER['REMOTE_ADDR'].(double)microtime());
}

Dieser Algorithmus ist nicht sicher, da er unter bestimmten Vorausetzungen das gleiche Paßwort mehrfach ausgeben könnte.

Die Voraussetzung sind auch so ungewöhnlich nicht: es ist lediglich ein Multiprozessorsystem nötig und ein Router/Proxie o.ä. damit $_SERVER['REMOTE_ADDR'] gleich bleibt.
Dann kann diese Funktion zweimal zur gleichen Zeit ausgeführt werden, d.h. der Seed über microtime() ist gleich, damit ist auch die Ausgabe von rand() gleich; $_SERVER['REMOTE_ADDR'] ist gleich und die zweite Ausgabe von microtime() ist auch gleich (wenn auch mit etwas geringerer Wahrscheinlichkeit) somit ist die Ausgabe von sha1() ebenfalls gleich.
microtime() hat zudem auf heutigen GHz Boliden nicht unbedingt die erforderliche Auflösung um sowas auch bei Einprozessorsystemen zu verhindern.

Tja, auch mit dem besten kryptographischen Werkzeugen kann man sich mühelos selber in den Fuß schießen ;-)

Aber gräme Dich nicht, sowas passiert auch den Besten mal, deswegen ist für kryptographsche Methoden und vor allem Implementationen Peer-Review geradezu _zwingend_ und damit das klappt auch Quelloffenheit.

so short

Christoph Zurnieden

PS:
Lösung des Dilemmas ist im einfachstem Fall ein Lockfile, das den aktuellen Seed enthält. Der nächste, der das Lockfile erhält kann reinschauen und bei Seedgleicheit einen neuen erzeugen.
Ist zwar nicht sehr elegant, ist aber simpel und funktioniert.
CZ

0 47

128 Bit Schlüssel erzeugen

sp7
  • programmiertechnik
  1. 0
    Elderan
    1. 0
      Sven Rautenberg
      1. 0
        Alexander Brock
        1. 0
          Elderan
          1. 0
            Christoph Zurnieden
            1. 0
              Alexander Brock
            2. 0
              Elderan
              1. 0
                Christoph Zurnieden
                1. 0
                  Elderan
                  1. 0
                    Christoph Zurnieden
                    1. 0
                      Elderan
                      1. 0
                        Christoph Zurnieden
                        1. 0
                          Christian Kruse
                          1. 0
                            Christoph Zurnieden
                            1. 0
                              Christian Kruse
                        2. 0
                          Elderan
                          1. 0
                            Christoph Zurnieden
                            1. 0
                              Alexander Brock
                              1. 0
                                Christoph Zurnieden
                                1. 0
                                  Christian Kruse
                                  1. 0
                                    Elderan
                                    1. 0
                                      Christian Kruse
                                      1. 0
                                        Elderan
                                        1. 0
                                          Christian Kruse
                                          1. 0
                                            Elderan
                                            1. 0
                                              Christian Kruse
                                              1. 0
                                                Alexander Brock
                                                1. 0
                                                  Christoph Zurnieden
                                                  1. 0
                                                    Alexander Brock
                                                  2. 0
                                                    Henryk Plötz
                                                    1. 0
                                                      Christoph Zurnieden
                                                2. 0
                                                  Christoph Zurnieden
                                                  1. 0
                                                    Alexander Brock
                                                    1. 0
                                                      Christoph Zurnieden
                                                      1. 0
                                                        Alexander Brock
                                                        1. 0
                                                          Christoph Zurnieden
                                        2. 0
                                          Christoph Zurnieden
                                      2. 0
                                        Henryk Plötz
                                        1. 0
                                          Christoph Zurnieden
                                    2. 0
                                      Christoph Zurnieden
                                      1. 0
                                        Henryk Plötz
                                        1. 0
                                          Christoph Zurnieden
                            2. 0
                              Elderan
                              1. 0
                                Christoph Zurnieden
              2. 0
                Christian Kruse
    2. 0
      Henryk Plötz