Die Kenntnis des Klartexts, wie das Verschlüsselungsschema verwendet entdecken? [geschlossen]

StackOverflow https://stackoverflow.com/questions/231592

  •  04-07-2019
  •  | 
  •  

Frage

Ich habe einige char () Felder in einer DBF-Tabelle, die von einer Vergangenheit Entwickler im Projekt verschlüsselt gelassen wurden.

Ich weiß jedoch, den Klartext Ergebnis der Entschlüsselung mehrerer Datensätze. Wie kann ich die Funktion / Algorithmus / Schema bestimmen die ursprünglichen Daten zu entschlüsseln? Dies sind einige Beispiele für Felder:

Für Cryptext:

b5 01 02 c1 e3 0d 0a

sollte Klartext sein:

3543921 or 3.543.921

Und für Cryptext:

41 c3 c5 07 17 0d 0a

Klartext sollte

1851154 or 1.851.154

Ich glaube, 0d 0a nur padding ist. War von Daten win-1252-Codierung versammelten sich in (weiß nicht, ob Angelegenheiten)

EDIT: Es ist im Interesse der Neugier und des Lernens. Ich möchte die Verschlüsselung undestand in der Lage sein verwendet (scheint ein einfaches, obwohl binäre Daten), um den Wert der Felder für die Tupel, deren Klartext Ich weiß nicht, sich zu erholen.

EDIT 2:. Added ein paar Proben

War es hilfreich?

Lösung

Es gibt keine einfache Möglichkeit, im allgemeinen Fall. Diese Frage ist zu allgemein. Versuchen Sie diese Ebene + verschlüsselten Strings veröffentlichen.

EDIT:

  • zum Zwecke des Lernens Sie diesen Artikel lesen können: Cryptography auf Wikipedia
  • Wenn Sie wirklich die Verschlüsselung ist einfach glauben - überprüfen, ob es sich um ein Byte (oder Wort) Ebene XOR ist - siehe folgende Pseudo-Code

    for (i in originalString) {
    newString[i] = originalString[i] ^ CRYPT_BYTE;
    }
    

Andere Tipps

Unter der Annahme, es ist nicht etwas so einfaches wie eine Substitutions-Chiffre (Frequenzanalyse versuchen) oder eine schlecht angelegte XOR (zB den Schlüssel wiederverwendet, versuchen XORing zwei Chiffriertexte mit bekannten Klartexten und dann sehen, ob das Ergebnis der XOR der Klartexte; oder versuchen, eine XOR-Verknüpfung der verschlüsselten Text mit sich selbst durch eine bestimmte Anzahl von Bytes) verschoben wird, sollten Sie wahrscheinlich davon ausgehen, es ist wohl bekannt Strom / Blockchiffre mit einem unbekannten Schlüssel (die höchstwahrscheinlich aus ASCII-Zeichen besteht). Wenn Sie eine ausreichend große Stichprobe von Chiffretext-Paaren Klartext haben, können Sie durch Prüfen, ob Klartexte mit den gleichen ersten Zeichen / Bytes haben Chiffriertexte mit dem gleichen ersten Zeichen / Bytes beginnen. siehe dort könnten Sie auch, ob es ein Block oder ein Stromchiffre und ob es ein Feedback-Mechanismus beteiligt. Padding, falls vorhanden, könnte darauf hindeuten, dass es sich um eine Blockchiffre ist eher als ein Stromchiffre.

Je nachdem, wie viel Aufwand Sie in sie setzen, sollten Sie in der Lage sein, irgendwo zu bekommen. Beginnen Sie mit dem Lesen auf cryptanalysis , insbesondere die Methoden der Kryptanalyse .

Die Dinge, die bestimmen, wie leicht wird diese Aufgabe sind:

  • , wie gut die Verschlüsselungsmethode verwendet wird; wenn es ein aktuelles, gut angesehen Verfahren wie RSA oder AES, sind Sie wahrscheinlich kein Glück
  • , wie viel Geheimtext und Klartext Sie haben - je mehr desto besser
  • , welche Art von Daten es ist - einfach Text ist die einfachste, während Zufallsdaten die härteste
  • wären
  • , ob die Daten alle mit dem gleichen Schlüssel verschlüsselt, oder ob mehrere Schlüssel verwendet wurden.

Der Schlüssel zum Erfolg ist, wird nicht entmutigt; die Geschichte der Kryptoanalyse ist mit Geschichten von angeblich unzerbrechlich Codes gefüllt geknackt werden; vielleicht der berühmteste die Enigma-Maschine aus dem Zweiten Weltkrieg ist, das Knacken von denen auf die Entwicklung von modernen Computern beigetragen.

Wir können ein paar Dinge aus sagen, was Sie haben zu finden:

  • Mit einer verschlüsselten Text Länge von 7 Bytes in jedem Fall ist es unwahrscheinlich, dass ein Blockchiffre zu sein (da Blockchiffren einen Block zu einem Zeitpunkt, zu verschlüsseln, deren Länge ein Vielfaches der Blockgröße sein, und eine Blockgröße von 56 Bit ist ziemlich unwahrscheinlich *).
  • Die Länge des chiffrierten Textes und die Anzahl der Zeichen im Klartext ist das gleiche in jedem Fall, so könnte es einfach Codierung von Zahlen als ascii mit einer Stromchiffre angewandt werden.
  • XORing Klar- (als ascii) und der verschlüsselte Text gibt zusammen weder ein einzelnes wiederholtes Oktett noch die gleichen Crypto für jeden, also ist es keine triviale Chiffre ist. Es ist auch keine einfache Stromchiffre den gleichen Schlüssel für beide verwenden, es sei denn, einige der Chiffretext-Bytes sind ein IV.
  • Die letzten beiden Bytes sind identisch in verschlüsseltem Text, aber nicht in Klartext. Dies könnte ein Zufall sein, aber auch einen Hinweis auf padding sein könnte, wie Sie vorschlagen. Wenn sie Polsterung, ein anderer Codierung Mechanismus sind, muß verwendet werden.

Wissen Sie, ob alle verschlüsselten Werte ganze Zahlen sind, oder sind auch andere Werte möglich?

den Algorithmus ohne den entsprechenden Schlüssel verwendet Bestimmung möglicherweise nicht ganz nützlich.

Wenn der Text ist klein genug, und Sie haben den Klartext, warum sollten Sie Ameise, es herauszufinden? Anders als, natürlich, für Neugier willen?

Es gibt keine deterministische Art und Weise zu sagen, aber oft gibt es Hinweise in dem Chiffretext. Ist es wirklich verschlüsselt (mit irgendeiner Art von Schlüssel)? Oder ist es nur gehasht und (möglicherweise) gesalzen.

Wenn es gehasht ist, könnten Sie Glück haben und nur google nach einem passenden Paar (vorausgesetzt, Sie welche haben, die Wörter aus dem Wörterbuch sind), weil es pre-gehasht Wörterbücher bereits online.

Wenn Sie ein Beispiel für den verschlüsselten Text haben, können Sie es schreiben könnte, könnte jemand das Chiffre-Format erkennen ...

Ich denke, es ist ein Irrglaube, dass XOR ist ein leicht entschlüsselbar Schema. Die theoretisch stärkste Form der Verschlüsselung ist ein One-Time-Pad: einfach eine Reihe von vorgegebenen Bits, die Sie Ihren Klartext xor mit ...

Finite XORs, auf der anderen Seite ...

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