kostenloser Webspace werbefrei: lima-city


Hash/Prüfsummen (Algorithmus, richtig/falsch Einsetzen, Sinn und Unsinn)

lima-cityForumProgrammiersprachenSonstige Programmiersprachen

  1. Autor dieses Themas

    aero23

    Kostenloser Webspace von aero23

    aero23 hat kostenlosen Webspace.

    Ich hab mich mal in die Thematik Hash/Prüfsummen eingelesen. Dabei stellen sich mir einige Fragen. ZB. warum wird md5 inzwischen als unsicher bezeichnet wird. Versteh ich nich ganz. Aber auch zum Sinn einen Hash einzusetzen. Der Folgende Text zeigt welche Gedanken ich mir dabei gemacht habe. Welche mit Sicherheit nicht fehlerlos sind oder auch in eine Sackgasse führen. Mich würde interessieren welche Ansätze euch in den Sinn kommen, auch welche Fragen in euch entstehen, vorallem wenn ihr über den Einsatz nachdenkt (oder halt auch nicht nachdenkt). Ihr könnt das gern sehr ausführlich darstellen.

    Also um Dinge zu vergleichen, wie zB. zwei Dateien oder Texte ist es glaube eine sehr effiziente Methode, aber beim Thema Kryptographie bzw. Daten schützen kommt mir das wie ein zweischneidiges Schwert vor.

    Anforderung werden wie folgt definiert:
    die Menge der Prüfsummen soll größer sein als die Menge der Ausgangskombinationen (eig nur bei Kryptographie)
    oder zu mindest Kollisionen (erginiswerte verschiedener quellwerte sind gleich) vermeiden
    gleichzeitig soll der Hash aber weniger Speicher verwenden als der Ausgangswert
    - wers genauer brauch kann ja mal wiki noch tiefer ins internet kucken

    Dennoch ist ja eins der BasisProbleme das der Algorithmus der Verschlüsselung theoritisch sichtbar ist. Was man meiner Meinung nach auch nie ändern können wird. Spätestens wenn ein Programm auf dem eigenen PC ist kann man den Algorithmus sichtbar machen. Aber eine Kollision oder 2 oder auch 3. Ich kann mir nicht vorstellen dass dies ein Hash nun völlig unsicher macht, wenn man davon ausgeht das er vorher sicher war ^^ . Und im Grunde genommen ist klar das es immer Kollisionen gibt sollte die Basismenge größer als die Zielmenge sein. Aber im Grunde liegt doch der eigentliche Sinn einer Verschlüsselung darin etwas geheim zu halten. Und auch wenn man eine Kollision erzeugen kann stellen sich ja 2 wichtige Fragen.

    1. Ist die Kollision jene die ich eigentlich Suche
    2. Hab ich überhaupt einen Anfang, sprich irgendein reales Element dieser mathematischen gleichung Gleichung

    wie will man denn ein y = x² ermitteln wenn man x nicht kennt
    oder halt umgedreht

    Was nützt es zu wissen das man theoretisch mit StormBot in ca 5 min eine oder mehr Kollisionen erreichen könnte. Wenn ich gar kein Ausgangswert habe. Für welchen Hash möchte ich denn überhaupt ein Duplikat finden, falls es denn überhaupt eins gibt. Und somit bleibt letzendlich doch nur die gute alte try and error Methode. Solange ich nicht das Urproblem löse, also woher bekomme ich die Kerninformation, is das alles eigentlich fürn A....

    Nun die Passwörter oder die Hashwerte eines Forums befinden sich einem abgeschloßenen System, die Datenbank wenn man da rein kommt isses eh alles aus. ob die Hashwerte dann noch was nützen is fragwürdig. Die Datenbank is angenommen mal auch per Hashspeicherung öhm mehr oder weniger gesichert. Ein logischer Ansatz wäre ja das nur Hashwerte durchs Nezt fliegen statt Passwörter und Benutzernamen. Wo wir beim Eigenltliche Problem angelangt wären. Denn diese Zeichenkombination is nur so sicher wie das Geheimnis um seine Entstehung groß ist. Sie fliegt durchs Netz und jeder der will kann sie sehen. Möglich währe hier "mit steigender Rechenleistung die Anzahl der Zielbits erhöhen" um eine Ermittlung zu erschweren. Es gibt natürlich auch andere Anwendungsfälle die ich als fragwürdig betrachte. Zum Beispiel das versenden von Informationen die der Sender (autsch) nicht manipulieren soll. Und das ist in diesem Fall doch schon sehr eigenartig, weil wir dem Sender den Schlüssel praktisch zu spielen und eventuell noch glauben er würde ihn nicht benutzen. Praktisches Beispiel wäre hier der upload von automatisch erzeugten Daten wie Highscores.

    Ich kann mir gut vorstellen das einige Menschen die hände über dem Kopf zusammen schlagen. "Oh mein gott ein HashAlgorithmus, das doch so kompliziert. Dazu muss man bestimmt 30 Jahre studieren." Im eigentlichen isses aber nur stupides verdrehen, mixen und verrechnen der Zahlen. Viele Dinge erscheinen auf den ersten Blick vieleicht kompliziert sind es aber in Wirklichkeit nicht.

    Was im Moment vorhersehbar ist, ist das soziehmlich jeder md5 mit maximaler bit Länge benutzt. Und je mehr die Sache vorssehbar wird umso leichter wird es rgendwann eine Lösung zu finden. Scheint so als ob der Mensch das Urproblem auf seine eigen Art löst. Man kann es ja auch als Wettrennen zwischen hardware und software betrachten ^^


    PS:

    kein plan glaub das is eher ot/allgemeine informatik bin mir net so sicher wie man das einordnen soll hat auch nur begrenzt sicherheit im internet zutun

    Beitrag zuletzt geändert: 2.2.2010 14:39:54 von aero23
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Ich möchte vorweg sagen, dass ich viele Passagen in deinem Text nicht verstanden habe; ich glaube weil du einige Sachen auch nicht verstanden hast.

    warum wird md5 inzwischen als unsicher bezeichnet wird.

    Es hängt immer davon ab, für welchen Zweck es unsicher ist. Ich würde nie auf die Idee kommen ein Passwort md5 gehasht zu speichern, sondern nutze stattdessen sha1 mit salt. Das liegt daran, dass md5 als Passworthash unsicher ist. Es gibt viele Seiten im Netz, mit dem ich etwa 50% der md5-Passworthashes knacken kann. Man braucht also nicht mal ne Menge informationstechnisches Grundwissen um an ein Passwort heranzukommen, man braucht nur Google und irgendwo nen Hash reinkopieren. Bei sha1 ist das (noch) anders. Der Salt gibt dir weitere Sicherheit.
    Anforderung werden wie folgt definiert:
    die Menge der Prüfsummen soll größer sein als die Menge der Ausgangskombinationen (eig nur bei Kryptographie)

    Wie meinst du das? Die Menge der Prüfsummen ist 36^32 (md5 war 32 bytes lang, oder?), die Ausgangskombinationen sind unendlich, also logischerweise größer.
    Dennoch ist ja eins der BasisProbleme das der Algorithmus der Verschlüsselung theoritisch sichtbar ist.

    Man geht immer davon aus, dass der Algorithmus dem Angreifer bekannt ist. Und bei allen hashalgos trifft dies zu.
    Aber eine Kollision oder 2 oder auch 3. Ich kann mir nicht vorstellen dass dies ein Hash nun völlig unsicher macht, wenn man davon ausgeht das er vorher sicher war ^^ . Und im Grunde genommen ist klar das es immer Kollisionen gibt sollte die Basismenge größer als die Zielmenge sein.

    Kollisionen sind nicht besonders schlimm. Schlimm ist es nur, wenn du Kollisionen erstellen kannst, die Sinn machen. Wenn also "Treffen uns am Bahnhof" und "Treffen uns am Flughafen" den selben Hash haben, das ist schlimm. Aber wenn "md90wh38p0awjh3t80" und "fk9e0fjp0w39htp438" denselben Hash haben hat das meist keine Auswirkungen.
    Aber im Grunde liegt doch der eigentliche Sinn einer Verschlüsselung darin etwas geheim zu halten.

    Worüber redest du gerade? Verschlüsselung oder Hashs? Sinn eines Hashes ist nicht etwas geheim zu halten, sondern etwas zu signieren, sprich, die Herkunft zu belegen (groß gesagt).

    Hab ich überhaupt einen Anfang, sprich irgendein reales Element dieser mathematischen gleichung Gleichung

    wie will man denn ein y = x² ermitteln wenn man x nicht kennt
    oder halt umgedreht

    Was nützt es zu wissen das man theoretisch mit StormBot in ca 5 min eine oder mehr Kollisionen erreichen könnte. Wenn ich gar kein Ausgangswert habe. Für welchen Hash möchte ich denn überhaupt ein Duplikat finden, falls es denn überhaupt eins gibt. Und somit bleibt letzendlich doch nur die gute alte try and error Methode. Solange ich nicht das Urproblem löse, also woher bekomme ich die Kerninformation, is das alles eigentlich fürn A....

    Was du da sagen willst verstehe ich absolut nicht. x = sqrt(y).

    Nun die Passwörter oder die Hashwerte eines Forums befinden sich einem abgeschloßenen System, die Datenbank wenn man da rein kommt isses eh alles aus.

    Nein. Vielleicht kommst du nur über eine SQL-Injection an die DB und bekommst nur Hashes, die dir zum Login gar nichts nützen ;) Das nur als Beispiel, es gibt viele weitere Vorteile.

    Beitrag zuletzt geändert: 2.2.2010 16:43:33 von nikic
  4. Also wie schon vom vorredner gut erklärt, ist Md5 unsicher, weil man mit modifizierten Algorithmen relativ schnell Kollisionen erzeugen kann. Deswegen ist man heutzutage mit SHA1 sicherer, weil das erstens noch nicht so lange verwendet wird und zweitens eine größere Bitbreite und damit mehr Kombinationsmöglichkeiten hat.

    Die Menge der Möglichen Prüfsummen sollte mit 128Bit bei MD5 2^128 entsprechen, ich weiß nicht, woher nikic den anderen Wert hat aber vielleicht hängt das damit zusammen, dass möglicherweise nicht alle Werte für eine Prüfsumme erreicht werden können.
    SHA1 hat 160bit und damit schonmal 2^32 mal schwergewichtiger als MD5 was einen Bruteforceangriff anbetrifft.

    Das was du unter kryptografische Anforderung geschrieben hat, mag vielleicht für eine Verschlüsselung im allgemeinen geltenaber für Hash-Algorithem kann es nicht zutreffen, da man letztlich immer eine feste Ergebnismenge mit einer festen Größe hat. Wie nikic schon sagte kann man natürlich unendlich viele Nachrichten eingeben und muss zum Schluss trotzdem in der festen Größe bleiben, womit sich Kollisionen nicht vermeiden lassen. Ziel eines Hashalgorithmus ist eigentlich nur eine homogene Verteilung auf möglichst großer Breite zu erzielen, wobei man an den Ergebnissen nicht den Ausgangswert ablesen können darf.

    Was die Kollissionen angeht, muss man immer die Situation betrachten. Wenn man den Hash als Prüfsumme für Dateien oder ähnliches anwendet, dann wäre nikic's Szenario mit den zwei verschiedenen Strings verheerend. Nimmst du hingegen als Beispiel eine Passwortdatenbank, dann ist egal, wie kryptisch der Schlüssel aussieht, solange zum Schluss der Passworttest ergibt "Es ist das richtige Passwort" wird der Angreifer mit jeder noch so kryptischen Eingabe reinkommen.
    An der Stelle setzt du natürlich richtig vorraus, dass man erstmal die verschlüsselten Daten bekommt aber das steht auf einem anderen Blatt geschrieben. Die kryptografie in ihrer Paranoia setzt immer den Worst-Case vorraus, dass der Gegner alles weiß, bis auf das was er wissen will nämlich die verschlüsselte Botschaft!

    So mein Post ist schon wieder viel zu lange um ernsthaft durchgelesen zu werden. ^^
    Grüße,
    Sektor
  5. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!