Wie sicher ist deine Verschlüsselung?

  • Hallo Leute!


    Hier mal ein theoretisches Thema. Es geht um die Passwortverschlüsselung, die meisten von euch werden schon irgendeine Verschlüsselung gebraucht haben um irgendwelche Userpasswörter verschlüsselt zu haben. Sei es MD5, ShaXXX oder sonst was. Ich muss euch allen mitteilen die ihre Passwörter speichern, dass sie es gleich auf Plaintext umstellen können.


    Entwickler vs. Angreifer
    Der ewige Kampf der Entwickler ihre Systeme abzusichern vor Angreifern, die wider rum versuchen deren Systeme zu Hacken. Kein System ist sicher und wird später oder früher gehackt. Sei es euer unbedeutendes UCP oder das PSN. Wir Entwickler müssen aber die wichtigsten Daten sichern, vor allem die Passwörter der User. Wir als Entwickler müssen bei der Verschlüsselung der Passwörter dem Angreifer keine Vorteile zulassen. Verschlüsselungen werden immer älter doch die Computerhardware erneuert sich von Jahr zu Jahr, somit sollten wir eine Verschlüsselung haben die sich Jahr zu Jahr verbessern. Momentane Verschlüsselungen wie z.B. Sha256 brauchen CPU Power. Der Angreifer kann aber mit der gleichen Hardware nur halt mit der GPU Millionen solcher Passwörter in Sekunden generieren und somit das Passwort(abhängig der Komplexität) in Stunden, Tage, Wochen, Monaten brutforcen. Das einzige Mittel dagegen ist den Usern zu sagen, dass Sie große Komplexe Passwörter verwenden sollten(und verschiedene), das machen wir schon seit 20 Jahren, und trotzdem hilft es nichts.


    Die Lösung?
    Die Lösung liegt sehr nahe, man darf den Angreifer keinen Vorteil einräumen. Er soll mit der gleichen Hardware die gleichen Bedienungen haben. Und ich als Entwickler soll die Möglichkeit haben, CodeTechnisch Hardwareupgrades leicht entgegenzuwirken. Deshalb lege ich jedem Entwickler der mit solchen Sachen zu tun hat Scrypt ans Herz.


    Scrypt? Kann man das essen?
    Scrypt wurde genau wegen solchen Brutforce Attacken entwickelt, man will dem Angreifer den großen Vorteil wegnehmen. Scrypt hashed das Passwort immer wieder(so oft man will) man muss dann den Wert immer wieder Cachen, der schnellste Speicher für dies ist der RAM, für jeden weiteren Durchgang brauchen wir also RAM.
    PseudoCode: Hash(Hash(Hash(Hash(Hash(STRING))))). Der Angreifer hat mit der gleichen Hardware also keine Chance einen Vorteil rauszuholen. ECC-RAM würde ich dabei empfehlen ;)


    Quellen: http://www.tarsnap.com/scrypt.html


    Ich habe hier(http://bitcoin.stackexchange.c…ke-tenebrix-gpu-resistant) noch eine tolle Beschreibung gefunden:



    Für Entwickler hier noch eine tolle GoLang Lib: http://godoc.org/github.com/gebi/scryptauth
    PS: Salten auch nicht vergessen ;)

  • Also kurz zusammen gefasst, sollte man immer Passwörter mehrmals zu verschlüsseln. Ich würde euch hierbei auch zu Herze legen, nicht es auf die gleiche Methode zu verschlüsseln, sondern auf unterschiedlicher Art und Weise. Siehe es beim WCF wo ein Zweifach-Salted-HAsh generiert wird.


    Bedanke dich bitte, wenn du den Beitrag als hilfreich empfandest!



  • Und wo liegt der Unterschied wenn man jetzt eine dynamische Variable x für die Wiederholungen angibt und das Passwort selber dann mit der Zahl x quer durch 3 Hash-Methoden mit Salt hashen lässt?

  • Wie ich bereits im IRC sagte:
    Was interessieren mich verschlüsselte Passwörter, wenn ich Benutzerinformationen in Plaintext habe?
    Wenn es schon soweit kommt, dass jemand Zugriff auf verschlüsselte Passwörter hat, ist es zu spät.

  • Sei es MD5, ShaXXX oder sonst was. Ich muss euch allen mitteilen die ihre Passwörter speichern, dass sie es gleich auf Plaintext umstellen können.


    Also sind deiner Meinung nach alle Sicherheitsmechanismen unnütz? Bei "oder sonst was" kannst du auch Scrypt implizieren. Nicht nur dass diese Aussage zu allgemein und lediglich populistisch ist, sie ist auch noch Unsinn. Nur weil es möglich ist, simple Mechanismen auszuhebeln, so stellt es, gerade bei großen Datenmengen, dennoch eine Hürde für Angreifer dar. Mal daovn abgesehen dass eine Verschlüsslung nicht nur den Sinn hat, bei einer Datenenwendung wie einem Datenbank-Hack zu sichern.


    Momentane Verschlüsselungen wie z.B. Sha256


    Sha256 ist ein Hash-Algorithmus, keine Verschlüsslung. Du unterscheidest im gesamten Text dazwischen keineswegs, was in der praktischen Anwendung, welche du hier versuchst näher zu bringen, ein elementarer Unterschied ist. Ob Scrypt nun Hashes oder Verschlüsslungen machst sagst du daher auch nicht.


    CPU Power. Der Angreifer kann aber mit der gleichen Hardware nur halt mit der GPU Millionen solcher Passwörter in Sekunden generieren


    Mal davon abgesehen dass sich die Hardware von Servern und Desktop-PCs bereits in großten Teilen unterscheiden..


    Stunden, Tage, Wochen, Monaten brutforcen


    Alles kann man in Stunden, Tagen, Wochen und Monaten bruteforcen. Auch das "tolle" Scrypt oder was auch immer.


    Er soll mit der gleichen Hardware die gleichen Bedienungen haben.


    Das ist durch simplen Sachverstand bereits auszuschließen.
    Er wird sich nicht extra denselben Server zulegen wie der Serverbetreiber nur um das zu entschlüsseln.
    Spätestens wenn die Rechenlast in nem Botnetz verteilt wird scheitert dieses ach so tolle Honigkuchenpferd.
    Und selbst wenn man dieser absurden Logik folgt - soll es ernsthaft eine Lösung sein, enorme Rechenlasten für simpelste Verschlüsslungen aufzubringen?
    Das ist nicht rentabel und das ist nicht sinnvoll.



    Ich fasse zusammen - große Worte, nur leider zuviel Unsinn und übertriebener Populismus mit leeren Versprechungen,
    welche selbst einer simplen Logikprüfung nicht standhalten können.

  • Wir reden doch hier von SAMP-Servern bzw dessen Datenbanken. Es ist nicht so das wir nicht ingamebezogene Dinge speichern. Ein Passwort für ein Spiel muss nicht nach allen Dingen der Technik verschlüsselt werden. Wenn man es verschlüsseln will ohne das eine Person mit normalem Wissen das Passwort zu Klartext verarbeitet reicht ein MD5 Hash locker aus. Ich kenne Server die die Passwörter unverschlüsselt speichert und auch da hat noch nie jemand Probleme damit gehabt.
    MfG
    GAS Digital

  • GAS Digital nein mir geht es Allgemein um Passwörter. Es ist fahrlässig die Passwörter nur mit MD5 zu hashen, gab genügend Hackingopfer wo die DB geklaut wurde und der Angreifer alle PWs hatte(in der deutschen SA:MP Szene).


    Trooper[Y] ja hätte man mehr hervorheben können, das es sich um Hash Funktionen handelt. Dass sich Desktop und Server Hardware in großen Teilen unterscheidet ist humbug. Es sind die gleichen Technologien. Vor allem bei der CPU und RAM(außer das man ECC RAM bei Servern verwendet) Klar auch scryptverschlüsselte Passwörter können Angreifer in Monaten mit Brutforce Attacken das Passwort rausfinden. Hier geht es auch vor allem darum, diese Zeit zu verlängern, damit die User Zeit haben ihre Passwörter zu ändern, aber auch der Angreifer braucht z.B. imense Hardware um einen 8 Zeichen langen Scrypt Hash zu Brutforcen. Die Tabelle oben veranschauchlicht es.


    Es als Unsinn abzustempeln ist auch nicht okay, schau es dir bitte genauer an und Urteile dann.


    edit: verbessert
    edit2:verbessert

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • wenn ich mit md5 arbeite dann hashe ich meistens so.
    hash(hash(hash(Fester String)+hash(passwort))+hash(Fester String))
    Mine Frage ist, ob das überhaupt mehr Sicherheit bringt. durch die mit eingehasten Festen Strings, sollte es ja eigendlich nicht möglich sein das ganze zu entyrpten ohne die festen strings zu kennen oder?

  • [DT]Sniper da muss man zwischen Salt und Pepper unterscheiden, ein Salt ist für jeden User anders und steht meist in der DB. Ein Pepper(was du gerade meinst) wird fix bei jedem PW verwendet und ist an einem sicheren Ort abgelegt. Natürlich gilt: ohne Salt oder Pepper kann er auch nicht dein PW brutforcen --> Rinus Post anschauen.


    EDIT: verbessert.

    Einmal editiert, zuletzt von zabus ()

  • [DT] Sniper: wenn du dabei Hashingmethoden, wie MD5 oder Konsorten nutzt, dann ist das trotzdem nicht allzu effektiv.


    Trooper[Y]: wo untermauerst eigentlich DU deine Thesen? Vielleicht solltest du da einmal selber nachbessern, bevor du es von anderen erwartest und ganz populistisch Populismus unterstellst.

  • zabus: Danke für die Info. Ich nutze dementsprechend "Pepper", Vielleicht sollte ich mir noch was überlegen wie ich jedem user noch nen salt geben kann.


    BTW: wie sicher ist Whirlpool?


    rinukkusu: UNd wie soll jemand ohne den Pepper entschlüsseln?

  • Dafür müsstet du jedoch genau wissen wie oft und wieviele teilhashs ich habe. hm. Aber möglich wäre es. nur 3Strings gleichzeitig zu Bruteforcen ist sehr heftig, meinst du nicht?

  • Rinu hat da Recht, klar ist das heftig, aber nicht bei MD5 da bist du im Millionenbereich(generierter hashesh) pro Sekunde(und das mit einfacher Hardware) - Frage der Zeit.


    edit: verbessert