Kann eine deterministische Hashfunktion einfach entschlüsselt werden? [Duplikat]

7
  

Mögliche Duplikate:
This is Möglich, MD5-Hashes zu entschlüsseln?
Ist es möglich, umzukehren ein sha1?

Ich habe diese Frage gestellt: Arbeiten mit HUGE-Tabelle

und bekam eine tolle Antwort und ich folgte dem Rat. Ich habe das benutzt: Ссылка

und ich hashed ungefähr 300.000 verschiedene Elemente in einer Spalte in einer Excel-Tabelle

seit Sie tun können:

%Vor%

Und du würdest zurückkommen:

%Vor%

Könnten Sie nicht auch rückwärts gehen?

Ich sage, wenn es den gleichen Text auf die gleiche Weise jedes Mal verschlüsselt, was ist der Punkt?

Wenn Sie den Hash-Algorithmus kennen, ist es möglich, rückwärts zu gehen?

kannst du mir bitte ganz einfach erklären, wie funktioniert das Hashing? Wie kann man einen 20gb in einen 40 character Hash umwandeln? dauert es eine lange zeit, um eine 20gb hardrive zu hacken?

    
l--''''''---------'''''''''''' 30.06.2010, 20:45
quelle

11 Antworten

8

Ich verstehe Ihren Standpunkt damit, dass Sie versuchen, Sozialversicherungsnummern zu verstecken. Wenn jemand weiß, dass Sie eine SHA1HASH auf dem SSN verwenden, um eine eindeutige Kennung zu erstellen, dann können Sie einfach eine schnelle Liste aller SSN-Nummern erstellen, SHA1HASH sie, dann vergleichen, um automatisch die SSN der Person im Datensatz zu haben. Schlimmer noch, sie können alle diese in einer Hash-Nachschlagetabelle vorgenerieren und haben einen Schlüssel von 1 Hash für jede SSN. Dies wird als Hash-Nachschlagetabelle bezeichnet und komplexere Formulare werden als Rainbow-Tabellen bezeichnet.

Aus diesem Grund wurde eine zweite Eigenschaft von Hashing erfunden. Es heißt Salzen. Salzen ist im Grunde das; Sie erstellen ein Salz und ändern dann Ihre Daten mit dem Salz. Zum Beispiel, sagen Sie, Sie hatten die SSN 123-45-6789. Sie können es mit der Zeichenfolge "MOONBEAM" salzen. Ihre neue Zeichenfolge für Hashing ist "123-45-6789MOONBEAM"

Nun, selbst wenn jemand weiß, dass Sie die SSN zur Generierung Ihrer eindeutigen ID hashen, wissen sie immer noch nicht, welches Salz Sie verwenden werden, und können daher das ursprüngliche SSN nicht durch Vorab-Hashing einer Liste ableiten alle SSNs und vergleichen mit Ihrer ID. Sie können jedoch immer die SSN des Benutzers verwenden, das Salt verwenden und das SSN + SALT erneut ausführen, um festzustellen, ob der SSN des Benutzers mit seiner ID übereinstimmt.

Schließlich, wenn Sie nur 1 Salz für alles verwenden, und es geheim halten, anstatt in der Lage zu sein, das Salz zu sehen und den entsprechenden SSN zu generieren, indem Sie SSN-Inkremente + Salz 100 Millionen Mal ausführen und das Spiel auswählen, müssen sie viel mehr Arbeit, um SSN abzurufen. Dies liegt daran, dass die 100 Millionen SSN-Zahlen eine relativ geringe Menge an Entropie aufweisen. (10 ^ 9 Kombinationen). Indem du dein Salz hinzufügst und es geheim hältst, anstatt einfach nur

auszuführen %Vor%

Sie müssten laufen

%Vor%

.. und so weiter, bis sie endlich zu

kommen %Vor%

An diesem Punkt gelang es ihnen schließlich, das SSN + SALT zu knacken

Sie wissen nicht einmal, wie viele Zeichen Ihr Salz lang ist Das sind also 10 ^ (Anzahl der Zeichen deines Salzes) mal mehr Arbeit für sie, nur um 1 SSN zu bekommen, geschweige denn den ganzen Tisch zu bekommen.

    
Zak 30.06.2010, 20:55
quelle
23

Allgemeine Antwort

Eine kryptografische Hash-Funktion kann nicht einfach rückgängig gemacht werden. Deshalb wird es manchmal auch als Einwegfunktion bezeichnet. Es gibt kein Zurück.

Sie sollten auch vorsichtig sein, diese 'Entschlüsselung' zu nennen. Hashing ist nicht dasselbe wie Verschlüsselung. Der Satz möglicher Hash-Werte ist normalerweise kleiner als der Satz möglicher Eingaben, sodass mehrere Eingaben auf denselben Ausgang abgebildet werden.

Für jede Hash-Funktion bei der Ausgabe können Sie nicht wissen, welche der vielen Eingaben zum Erzeugen dieser bestimmten Ausgabe verwendet wurde.

Bei kryptografischen Hashes wie SHA1 ist es sehr schwierig, eine Eingabe zu finden, die diese Ausgabe erzeugt.

Die einfachste Möglichkeit, einen kryptografischen Hashwert umzukehren, besteht darin, die Eingabe zu schätzen und zu prüfen, ob sie die richtige Ausgabe liefert. Wenn du falsch liegst, rate nochmal. Ein anderer Ansatz besteht darin, Rainbow-Tabellen zu verwenden.

Was die Verwendung von Hashing zum Verschlüsseln von SSNs betrifft

Mit Ihrem Anwendungsfall von SSNs ist ein Angriff aufgrund der relativ geringen Anzahl möglicher Eingabewerte möglich. Wenn Sie befürchten, dass Personen Zugang zu SSNs erhalten, ist es am besten, das SSN in Ihrer Anwendung überhaupt nicht zu speichern oder zu verwenden, und insbesondere nicht als Kennung zu verwenden. Stattdessen könnten Sie einen anderen Bezeichner finden oder erstellen, z. B. eine E-Mail-Adresse, einen Anmeldenamen, eine GUID oder nur eine fortlaufende Nummer. Es kann verlockend sein, das SSN so zu verwenden, wie es bereits dort ist, und auf den ersten Blick scheint es ein eindeutiger, unveränderlicher Identifizierer zu sein, aber in der Praxis verursacht es nur Probleme. Wenn Sie es aus irgendeinem Grund unbedingt speichern müssen, verwenden Sie eine starke nicht-deterministische Verschlüsselung mit einem geheimen Schlüssel und stellen Sie sicher, dass Sie diesen Schlüssel sicher aufbewahren.

    
Mark Byers 30.06.2010 20:47
quelle
17

Der Sinn eines kryptografischen Hashes ist, dass Sie ihn nicht entschlüsseln können und

Ein sehr verbreiteter Anwendungsfall für kryptografische Hashes ist die Passwort-Validierung. Stellen Sie sich vor, ich habe das Passwort "mypass123", und der Hash ist "aef8976ea17371bbcd". Dann kann ein Programm oder eine Website, die mein Passwort validieren möchten, den Hash "aef8976ea17371bbcd" in ihrer Datenbank anstelle des Passworts speichern, und jedes Mal, wenn ich mich anmelden möchte, wird das Passwort von der Site oder dem Programm neu erstellt und die Hashes überprüft Spiel. Dadurch kann die Site oder das Programm mein tatsächliches Passwort nicht speichern und schützt so mein Passwort (falls es ein Passwort ist, das ich woanders verwende) für den Fall, dass die Daten gestohlen oder anderweitig kompromittiert werden - ein Hacker wäre nicht in der Lage, rückwärts zu gehen vom Hash zum Passwort.

Eine weitere häufige Verwendung von kryptografischen Hashes ist die Integritätsprüfung. Angenommen, eine gegebene Datei (z. B. ein Bild einer Linux-Verteilungs-CD) hat einen bekannten, öffentlich verfügbaren kryptographischen Hash-Wert. Wenn Sie eine Datei haben, die vorgibt, die gleiche Sache zu sein, können Sie sie selbst hashen und sehen, ob die Hashes übereinstimmen. Hier bedeutet die Tatsache, dass es jedes Mal auf die gleiche Weise hasst, dass Sie es unabhängig validieren können, und die Tatsache, dass es kryptografisch sicher ist, bedeutet, dass niemand eine andere, gefälschte Datei (z. B. mit einem Trojaner) erstellen kann, die die gleicher Hash.

Beachten Sie jedoch den sehr wichtigen Unterschied zwischen Hashing und Verschlüsselung: Hashing verliert Informationen . Deshalb können Sie den Hash nicht rückwärts laufen lassen (entschlüsseln). Sie können eine 20 GiB-Datei hashen und am Ende einen 40-Zeichen-Hash erhalten. Offensichtlich hat dies eine Menge Informationen verloren. Wie könnten Sie 40 Zeichen in 20GiB entschlüsseln? Es gibt keine Komprimierung, die so gut funktioniert! Das ist aber auch ein Vorteil, denn um die Integrität einer 20-GiB-Datei zu prüfen, müssen Sie nur einen 40-Zeichen-Hash verteilen.

Da Informationen verloren gehen, haben viele Dateien den gleichen Hash, aber das Hauptmerkmal eines kryptografischen Hashs (worüber Sie sprechen) ist, dass Informationen verloren gehen Es ist rechnerisch unmöglich, mit einer Datei zu beginnen und eine zweite, etwas andere Datei zu erstellen, die denselben Hashwert hat. Jede andere Datei mit demselben Hash wäre radikal anders und für die Originaldatei nicht leicht zu unterscheiden.

    
Tyler McHenry 30.06.2010 20:49
quelle
7

Nein, Sie können nicht rückwärts gehen, weil die Hashing-Funktion nicht genügend Informationen enthält.

Sie können sich das als Hash-Funktion vorstellen, die den Originaltext auf eine einzelne, große Zahl abbildet. Dieselbe Nummer kann auch anderen Texten zugeordnet werden, obwohl eine gute Hash-Funktion wenige Kollisionen haben wird:

Wenn die ursprüngliche Nachricht verschlüsselt wurde, dann können Sie ja zurückgehen.

    
Justin Ethier 30.06.2010 20:49
quelle
5

Verschlüsseln und Hashing sind zwei verschiedene Dinge.

Das Hashing verdaut die Zeichenfolge einfach zu einer Zahl. Bei der Verschlüsselung wird der Inhalt der Zeichenfolge beibehalten, damit sie später entschlüsselt werden kann. Es gibt keine Methode, die ursprüngliche Zeichenfolge von einem Hash abzurufen. Der Inhalt ist einfach nicht da.

    
BC. 30.06.2010 20:48
quelle
3

Nein. Der Punkt eines Hashes ist, dass es eine Einwegverschlüsselung ist (wie andere darauf hingewiesen haben, es ist nicht wirklich "Verschlüsselung", sondern bleib bei mir). Der Nachteil ist, dass es in der Theorie eine geringe Möglichkeit von "Kollisionen" gibt, wenn zwei oder mehr Strings den gleichen Hash zurückgeben. Aber es ist normalerweise diesen Nachteil wert.

    
blockhead 30.06.2010 20:49
quelle
2

Ein guter Hash ist eine Möglichkeit, was bedeutet, dass Sie nicht rückwärts gehen können. Der Punkt besteht darin, einen Schlüssel einer Zeichenkette bereitzustellen, ohne die Zeichenkette zu offenbaren. Zum Beispiel ist dies eine gute Möglichkeit, Passwörter zu vergleichen, ohne ein Passwort zu speichern. Stattdessen speichern Sie einen Hash und vergleichen den resultierenden Hash der Eingaben.

    
NG. 30.06.2010 20:48
quelle
2

Nein. Zumindest nicht leicht.

SHA1 wird immer noch als kryptographisch sicher angesehen. Ein Hash-Algorithmus ist sicher, wenn es leicht ist, einen Weg zu berechnen, aber sehr schwer (erschöpfende Suche), um den anderen Weg zu berechnen. Es ist richtig, dass jedes Mal, wenn Sie eine bestimmte Phrase verschlüsseln, derselbe Hashwert entsteht, aber es gibt auch unendliche Phrasen, die ebenfalls auf denselben Wert hashen. Die Sicherheit kommt von nicht zu wissen, was diese anderen Phrasen sind, bis Sie sie alle durch die SHA1-Funktion ausführen.

    
Adam Shiemke 30.06.2010 20:49
quelle
2

Nein, du kannst nicht zurückgehen. Zählen Sie, wie viele verschiedene Hashes Sie haben können. Zählen Sie jetzt, wie viele verschiedene Strings Sie haben können. Das erste ist endlich, das zweite ist unendlich. Es gibt viele (unendlich viele, um genau zu sein) Strings, die die gleiche SHA1 Summe haben. Der Punkt ist jedoch, es ist sehr schwer, zwei Texte zu finden, die den gleichen Hash haben.

Sie können sich Hashing vorstellen, wenn Sie etwas verkürzen. Nehmen wir zum Beispiel eine Hash-Funktion, die alle ASCII-Codes der Buchstaben in einem String summiert. Sie können nicht sagen, was vor dem Hashing war, nur die Summe der ASCII-Codes der Buchstaben kennen. Es ist ähnlich mit SHA1, aber komplizierter.

Der Sinn des Hashing besteht nicht darin, etwas zu verschlüsseln. Der Sinn von Hashing ist es, etwas zu verkürzen, so dass die Überprüfung, ob zwei Dinge gleich sind, weniger Zeit in Anspruch nimmt. Nun, wie können Sie sagen, dass zwei Dinge in der Tat die gleichen sind, wenn Sie wissen, dass viele Dinge den gleichen Hash haben? Nun, du kannst nicht. Sie nehmen einfach an, dass es so selten ist, dass es nicht passieren wird.

Beim Hashing geht es jedoch nicht nur um die Überprüfung, da die Überprüfung der Gleichheit mithilfe von Hashes normalerweise nur zur Bestätigung / Validierung verwendet wird und nicht deterministisch ist. Wenn Sie sehen, dass die Hashwerte identisch sind, können Sie basierend auf den Parametern einer bestimmten Hashing-Funktion die Wahrscheinlichkeit schätzen, dass die Hash-Objekte tatsächlich identisch sind.

Und deshalb ist die Tatsache, dass eine Hash-Funktion immer dieselben Ergebnisse für die gleichen Objekte liefert, das wichtigste Merkmal einer Hash-Funktion. Sie können Objekte validieren und vergleichen.

    
Michał Trybus 30.06.2010 20:51
quelle
1

In der Kryptographie wird es als Digest bezeichnet. Ein kryptografisch starker Digest ermöglicht es nicht, Quelltext basierend auf dem Digest-Wert ohne zusätzliches Wissen zu erhalten. Ein Digest-Wert ist für denselben Text derselbe, sodass Sie den Digest des Texts berechnen und mit einem veröffentlichten Digest vergleichen können. Eine beliebte Anwendung ist die Passwortverifizierung, sodass Sie Digest anstelle des Passworts speichern können. Dies ist natürlich anfällig für einen Wörterbuchangriff, den Sie bereits erkundet haben, und deshalb wird dringend empfohlen, keine Wörterbuchwörter für Kennwörter zu verwenden.

    
Eugene Kuleshov 30.06.2010 20:51
quelle
1

Dass es immer denselben Text auf die gleiche Art und Weise verschlüsselt, ist der ganze Sinn eines Hashes. Es ist eine Funktion.

Wenn ich eine Datenbank mit Hashes von Passwörtern habe, kann ich überprüfen, ob Sie das richtige Passwort eingegeben haben, indem Sie es hashen und sehen, ob das Hash mit dem übereinstimmt, was ich in der Datenbank für Sie habe. Aber wenn jemand meine Hash-Datenbank gestohlen hat, wird er nicht in der Lage sein, herauszufinden, was Ihr Passwort ist, es sei denn, sie stolpern zufällig über einen einfachen Text, der diesen Wert enthält.

    
Paul Tomblin 30.06.2010 20:51
quelle