Frage

schrieb ich ein kurzes C ++ Programm XOR-Verschlüsselung auf einer Datei zu tun, die ich für einige persönlichen Dateien verwenden (wenn es geknackt wird es keine große Sache - Ich schütze nur gegen gelegentliche Zuschauer). Im Grunde genommen, ich nehme ein Passwort ASCII und wiederholt XOR das Passwort mit den Daten in der Datei.

Jetzt bin ich neugierig, aber: wenn jemand dies knacken will, wie würde sie darüber gehen? Wäre es eine lange Zeit in Anspruch nehmen? Ist es an der Länge des Passworts abhängen (das heißt, was ist das Big-O)?

War es hilfreich?

Lösung

Das Problem mit XOR-Verschlüsselung ist, dass für lange Läufe der gleichen Zeichen, ist es sehr einfach, das Passwort zu sehen. Solche langen Läufe sind am häufigsten Räume in Textdateien. Sagen Sie Ihr Passwort 8 Zeichen, und die Textdatei hat 16 Räume in irgendeiner Zeile (zum Beispiel in der Mitte des ASCII-Grafiken Tabelle). Wenn Sie nur mit Ihrem Passwort XOR dass, sehen Sie, dass die Ausgabe wiederholende Sequenzen von Zeichen haben wird. Der Angreifer nur für solche aussehen, versuchen, den Charakter in der Originaldatei zu erraten (Raum der erste Kandidat, um zu versuchen wäre), und leitet die Länge des Passworts von Gruppen mit einer Länge zu wiederholen.

Binär-Dateien können sogar noch schlimmer sein, wie sie sich wiederholende Sequenzen von 0x00 Bytes enthalten. Offensichtlich mit denen XOR-Verknüpfung ist no-op, so dass Ihr Passwort im Klartext in der Ausgabe zu sehen sein! Ein Beispiel für eine sehr häufige Binärformat, die lange Sequenzen von Nullen haben, ist .doc.

Andere Tipps

Ich schließe Pavel Minaev der Erklärung Schwächen der XOR ist. Für diejenigen, die interessiert sind, hier ist eine grundlegende Übersicht über den Standard-Algorithmus zu brechen die triviale XOR-Verschlüsselung in wenigen Minuten verwendet:

  1. Sie fest, wie lange der Schlüssel. Diese wird durch eine XOR-Verknüpfung der verschlüsselten Daten erfolgt mit sich selbst verschoben verschiedene Anzahlen von Orten, und untersucht, wie viele Bytes gleich sind.

  2. Wenn der Bytes, die gleich sind, größer ist als ein bestimmter Prozentsatz (6% accoridng auf Bruce Schneier Applied Cryptography zweite Ausgabe ), dann haben Sie verschoben die Daten, die von einem Mehrfachen der Schlüssellänge. Durch die kleinste Menge zu finden, der Verschiebung, die in einem großen ergibt Menge gleich Bytes, Sie finden die Schlüssellänge.

  3. Verschieben Sie den Chiffretext durch die Schlüssellänge, und XOR gegen sich selbst. Dies entfernt den Schlüssel und läßt Dich mit dem unverschlüsselten Text mit der XOR-verknüpft Klartext verschoben, um die Länge des Schlüssel. sollte es genug sein, Klartext der Nachricht zu bestimmen Inhalt.

Lesen Sie mehr unter Encryption Matters, Teil 1

XOR-Verschlüsselung kann vernünftigerweise * stark sein, wenn folgende Bedingungen erfüllt sind:

  • Der Klartext und das Passwort sind etwa gleich lang sind.
  • Das Passwort wird zur Verschlüsselung von mehr als eine Nachricht nicht wieder verwendet werden.
  • Das Passwort kann nicht durch Wörterbuch oder andere mathematische Mittel erraten, IE werden. In der Praxis bedeutet dies die Bits randomisiert werden.

* Relativ starke was bedeutet, es kann nicht durch trivial, mathematische Mittel gebrochen werden, wie in GeneQ Beiträgen gehen. Es ist noch nicht stärker als Ihr Passwort ein.

Zusätzlich zu den Punkten bereits erwähnt, XOR-Verschlüsselung ist völlig anfällig für Known-Plaintext-Angriffe:

cryptotext = plaintext XOR key
key = cryptotext XOR plaintext = plaintext XOR key XOR plaintext

Dabei gilt XORring die Klartexte gegenseitig aufheben, nur den Schlüssel zu verlassen.

Nicht in der anfällig für Known-Plaintext-Attacken ist eine erforderliche, aber nicht ausreichende Eigenschaft für jede „sicheren“ Verschlüsselungsverfahren, bei dem der gleiche Schlüssel für mehr als ein Klartext-Block verwendet wird (dh ein One-Time-Pad ist noch sichern).

Ways XOR Arbeit zu machen:

mehrere Schlüssel mit jeder Schlüssellänge gleich eine Primzahl Verwenden Sie aber nie die gleiche Länge für Schlüssel. Verwenden Sie die ursprünglichen Dateinamen als einen anderen Schlüssel aber denken Sie daran, einen Mechanismus zum Abrufen der Dateinamen zu erstellen. Dann einen neuen Dateinamen mit einer Erweiterung erstellen, die Sie wissen lassen, es sich um eine verschlüsselte Datei ist. Der Grund für mehrere Schlüssel von Primzahl Länge ist, dass sie die resultierenden XOR Schlüssel seinen Key A TIMES Key B in der Länge verursachen, bevor sie wiederholt. Komprimiert alle sich wiederholenden Muster aus der Datei, bevor sie verschlüsselt werden. Generieren einer Zufallszahl und XOR diese Zahl jedes Offset X (Denken Sie daran, muss diese Nummer auch recreatable sein. Sie einen RANDOM SEED des FileLength nutzen könnten.

Nachdem all dies tun, wenn Sie mit 5 Schlüsseln der Länge 31 und größer, würden Sie mit einer Schlüssellänge von etwa hundert Meg am Ende!

Für Tasten, Dateiname ein Wesen (einschließlich der vollständigen Pfad), STR (Dateigröße) + STR (Dateidatum) + STR (Datum) + STR (Time), Zufallsgenerierung Key, Ihren vollständigen Namen, einen privaten Schlüssel einmal erstellt .

Eine Datenbank der Schlüssel für jede verschlüsselte Datei verwendet zu speichern, aber die DAT-Datei auf einem USB-Memory-Stick und nicht auf dem Computer halten.

Dies sollte das sich wiederholende Muster auf Dateien wie Bilder und Musik, aber Filme, sind vier Konzerte in der Länge oder mehr beträgt, kann immer noch anfällig sein verhindern, so kann eine sechste Schlüssel benötigen.

Ich habe persönlich die dat-Datei selbst auf dem Memory-Stick verschlüsselt (Dat-Datei für die Verwendung mit Microsoft Access). Ich habe eine 3-Key-Methode es zu verschlüsseln, weil es wird nie so groß sein, ein Verzeichnis der Dateien mit den zugehörigen Tasten zu sein.

Der Grund für mehrere Schlüssel und nicht zufällig ein sehr große Schlüssel zu erzeugen sind, dass die Zeiten Primzahlen große schnelle Primzahlen, und ich habe eine gewisse Kontrolle über die Erstellung des Schlüssels und Sie wissen, dass es wirklich nicht so etwas wie eine wirklich Zufallszahl . Wenn ich eine große Zufallszahl erstellt, jemand anderes die gleiche Zahl erzeugen kann.

Methode die Schlüssel zu verwenden: Verschlüsseln Sie die Datei mit einem Schlüssel, dann die nächste, dann werden die nächste, bis alle Tasten verwendet. Jede Taste wird verwendet, immer und immer wieder, bis die gesamte Datei mit diesem Schlüssel verschlüsselt wird.

Da die Tasten verschiedener Länge sind, die Überlappung der Wiederholung ist für jeden Schlüssel und erzeugt so einen abgeleiteten Schlüssel die Länge der Schlüssel einmal Key zwei. Diese Logik wiederholt sich für den Rest der Schlüssel. Der Grund für die Primzahlen ist, dass auf einer Teilung der Schlüssellänge auftreten würde die Wiederholung, so dass Sie die Teilung wollen 1 oder die Länge des Schlüssels, hense, prim sein.

OK, gewährt, das ist mehr als ein einfacher XOR auf der Datei, aber das Konzept ist das gleiche.

Lance

  

Ich schütze nur gegen Gelegenheitszuschauer

Solange diese Annahme zutrifft, ist Ihr Verschlüsselungsschema ok. Leute, die denken, dass Internet Explorer „die Internets“ sind nicht in der Lage ist, es zu brechen.

Wenn nicht, verwenden nur einige Krypto-Bibliothek. Es gibt bereits viele gute Algorithmen wie Blowfish oder AES für symmetrische Krypto.

Das Ziel eines gute Verschlüsselung es mathematisch machen schwierig, ohne den Schlüssel zu entschlüsseln.
Dazu gehört der Wunsch, den Schlüssel selbst zu schützen.
Die XOR Technik im Grunde eine sehr einfache Chiffre ist leicht gebrochen, wie hier beschrieben.

Es ist wichtig, dass XOR zu beachten, innerhalb Verschlüsselungsalgorithmen .
Diese Algorithmen arbeiten an der Einführung der mathematischen Schwierigkeiten um ihn herum.

Norton Antivirus verwendet eine Technik der Verwendung des vorherigen unverschlüsselt Brief als Schlüssel für den nächsten Buchstaben zu verwenden. Das hat ihm eine zusätzliche halbe Stunde, um herauszufinden, wenn ich mich richtig erinnere.

Wenn Sie nur den lässigen Betrachter stoppen wollen, ist es gut genug; Ich habe verwendet Zeichenfolge in ausführbaren Dateien zu verstecken. Es wird nicht mehr 10 Minuten bis jemand aufstehen, die tatsächlich versucht, aber.

Das alles gesagt, in diesen Tagen gibt es viel bessere Verschlüsselungsmethoden leicht zugänglich, also warum sich nicht von etwas besser nützen. Wenn Sie versuchen, nur aus den „casual“ Benutzern zu verbergen, sogar so etwas wie gzip würde diesen Job besser machen.

Ein weiterer Trick ist es, einen md5 () Hash für Ihr Passwort zu generieren. Sie können es noch einzigartiger machen, indem die Länge des geschützten Textes als Offset oder die Kombination mit Ihrem Passwort bessere Verteilung für kurze Sätze zu liefern. Und für lange Sätze, entwickeln Sie Ihre md5 () Hash von jedem mit dem vorherigen Hash-16-Byte-Block kombiniert -. So dass die gesamte XOR Schlüssel „random“ und sich nicht wiederholender

RC4 ist im Wesentlichen XOR-Verschlüsselung! Wie viele Stromchiffren sind - ist der Schlüssel der Schlüssel, den Sie nie den Schlüssel wieder verwenden müssen (kein Wortspiel beabsichtigt!). EVER!

Ich bin ein kleine spät in der Beantwortung, aber da niemand hat es noch erwähnt: Das ist eine Vigenère-Chiffre genannt wird

.

Wikipedia gibt eine Reihe von cryptanalysis Angriffe es zu brechen; obwohl noch einfacher, da die meisten Dateiformate einen festen Header haben, wäre es, die Klar-Header mit dem verschlüsselten Header XOR, Ihnen den Schlüssel zu geben.

Die „> 6%“ GeneQ der Index des Zufalls für englische Telegraphen Text erwähnt ist - 26 Buchstaben, mit Interpunktion und Zahlen buchstabierte. Der tatsächliche Wert für lange Texte ist 0,0665.

<4% ist der Index des Zufalls für zufälligen Text in ein 26-Zeichen-Alphabet, die 1/26 oder 0,385 ist.

Wenn Sie eine andere Sprache oder ein anderes Alphabet verwendet wird, die spezifischen Werte werden anders. Wenn Sie den ASCII-Zeichensatz verwenden, Unicode oder Binärbytes werden die spezifischen Werte sehr unterschiedlich sein. Aber der Unterschied zwischen dem IC von Klar- und zufälligem Text wird in der Regel vorhanden sein. (Compressed Binärdateien ICs sehr nahe an den zufälligen haben kann, und jede Datei mit jeder modernen Computer-Chiffre verschlüsselt wird eine IC, die genau das ist von zufälligem Text.)

Wenn Sie den Text gegen mich selbst XOR-verknüpft haben, was du noch hast entspricht eine autokey Chiffre. Wikipedia hat ein gutes Beispiel für eine solche Bruch Chiffre

http://en.wikipedia.org/wiki/Autokey_cipher

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