Frage

Wenn jemand absichtlich zu modifizieren zwei Dateien versucht, den gleichen Hash zu haben, was es Möglichkeiten, sie zu stoppen? Kann MD5 und SHA1 die Mehrheit Fall verhindern?

Ich dachte, meine eigenen zu schreiben, und ich finde, auch wenn ich nicht einen guten Job machen, wenn der Benutzer nicht die Hash weiß er nicht in der Lage sein kann, meine zu täuschen.

Was ist der beste Weg, um dies zu verhindern?

War es hilfreich?

Lösung

MD5 ist in der Regel unsicher angesehen, wenn Hash-Kollisionen ein wichtiges Anliegen sind. SHA1 ist ebenfalls nicht mehr berücksichtigt akzeptabel von der US-Regierung. Es is war ein Wettbewerb im Gang eine Ersatz-Hash zu finden Algorithmus, aber im Moment die Empfehlung ist die SHA2-Familie zu verwenden - SHA-256, SHA-384 oder SHA-512. [ Update: 2012.10.02 NIST hat sich dafür entschieden < a href = "http://en.wikipedia.org/wiki/Keccak" rel = "noreferrer"> SHA-3 den Algorithmus sein Keccak . ]

Sie können versuchen, Ihre eigene Hash zu schaffen -. Es wäre wahrscheinlich so gut wie MD5 nicht sein, und ‚Sicherheit durch Unklarheit‘ ist ebenfalls nicht ratsam,

Wenn Sie wollen Sicherheit, Hash mit mehreren Hash-Algorithmen. Die Möglichkeit, gleichzeitig Dateien zu erstellen, die Hash-Kollisionen mit einer Reihe von Algorithmen haben, ist übermäßig unwahrscheinlich. [Und im Lichte der Kommentare, lassen Sie mich klarstellen: Ich meine veröffentlichen sowohl die SHA-256 und die Whirlpool-Werte für die Datei - nicht Hash-Algorithmen kombinieren einen einzelnen Wert zu schaffen, aber mit separaten Algorithmen separate Werte zu schaffen. Im Allgemeinen wird nicht eine beschädigte Datei eine der Algorithmen entsprechen; wenn, vielleicht, jemand hat es geschafft, einen Zusammenstoß Wert mit einem Algorithmus zu erstellen, die Chance, auch eine zweite Kollision in einem der anderen Algorithmen vernachlässigbar zu erzeugen.]

Das öffentliche Timestamp eine Reihe von Algorithmen verwendet. Siehe zum Beispiel sqlcmd-86.00.tgz eine Darstellung.

Andere Tipps

Wenn der Benutzer nicht weiß, Ihren Hashing-Algorithmus er auch Ihre Unterschrift auf einem Dokument nicht überprüfen kann, die Sie tatsächlich unterzeichnet.

Die beste Möglichkeit ist Public-Key-Einweg-Hash-Algorithmen zu verwenden, die die längste Hash erzeugen. SHA-256 erzeugt eine 256-Bit-Hash, so dass ein Fälscher müßte versuchen 2 255 verschiedene Dokumente (im Durchschnitt), bevor sie eine erstellt, die ein bestimmtes Dokument angepasst, was ziemlich sicher ist. Wenn das immer noch nicht sicher genug für Sie, es ist SHA-512.

Außerdem glaube ich, ist es wert zu erwähnen, dass eine gute Low-Tech Möglichkeit, sich gegen geschmiedete digital signierte Dokumente zu schützen, ist einfach eine Kopie von etwas halten Sie sich anmelden. Auf diese Weise, wenn es bis zu einem Streit kommt, können Sie zeigen, dass das ursprüngliche Dokument unterzeichnet wurde geändert.

Warum versuchen Sie Ihren eigenen Hash-Algorithmus zu schaffen? Was ist los mit SHA1HMAC?

Ja, es gibt wiederholt für Hashes.
Jede Hash, der kürzer als der Klartext ist notwendigerweise weniger Informationen. Das heißt, es werden einige Wiederholungen sein. Der Schlüssel für die Hash-Wert ist, dass die Wiederholungen schwer Reverse-Engineering sind.

CRC32 Betrachten - gemeinhin als Hash verwendet. Es ist eine 32-Bit-Menge. Da es mehr als 2 ^ 32 Meldungen im Universum sind, dann wird es wiederholt mit CRC32 sein. Die gleiche Idee gilt auch für andere Hashes.

Es gibt eine Hierarchie von Schwierigkeiten (für einen Angreifer) hier. Es ist einfacher, zwei Dateien mit dem gleichen Hash zu finden, als man zu generieren einen bestimmten Hash übereinstimmen, und einfacher, die später zu tun, wenn Sie müssen keine Form / content / Längen Beschränkungen einhalten.

Wenn es also möglich ist, eine gut definierte Dokumentenstruktur und Längen zu verwenden, können Sie ein Angreifer das Leben ein bisschen schwerer machen, egal welche Untergebener Hash Sie verwenden.

Dies ist eine „Hash-Kollision“ genannt, und der beste Weg zu vermeiden, ist es eine starke Hash-Funktion zu verwenden. MD5 ist relativ einfach künstlich zu bauen Dateien kollidiert, wie man sehen hier . In ähnlicher Weise ist es bekannt, ein relativ effiziente Methode für Computing SH1 Dateien kollidieren, obwohl in diesem Fall „relativ effizient“ noch hunreds Stunden Rechenzeit dauert.

Im Allgemeinen, MD5 und SHA1 sind immer noch teuer zu knacken, aber nicht unmöglich. Wenn man darüber wirklich besorgt sind, verwenden Sie eine stärkere Hash-Funktion, wie SHA256 .

Ihr eigenes Schreiben ist nicht wirklich eine gute Idee, wenn Sie ein ziemlich Experte Kryptograph sind. die meisten der einfachen Ideen sind versucht worden, und es gibt bekannte Angriffe gegen sie.

Wenn Sie wirklich wollen mehr darüber erfahren, es, einen Blick auf Schneiers Applied Cryptography .

Ich glaube nicht, mit Ihrem eigenen Hash-Algorithmus kommt eine gute Wahl ist.

Eine weitere gute Option wird verwendet, gesalzene MD5 . Zum Beispiel wird der Eingang zu Ihrer MD5-Hash-Funktion mit String angehängt „acidzom! @ #“ Vor der MD5-Funktion übergeben.

Es gibt auch eine gute Lektüre unter Slashdot .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top