Frage

Kann jemand erklären, dass dieser Algorithmus sicher ist oder nicht? Gibt es Angriff, um das zu brechen? Dieser Algorithmus verwendet gemeinsame XOR -Kryptographie, hat jedoch einige Unterschiede:

M (1) = Schlüssel XOR -Nachricht (1)
M (2) = H (Schlüssel) xor Nachricht (2)
M (3) = H (H (Schlüssel)) xor Nachricht (3)
usw

Anmerkungen:

  1. M (i) ist ein Verschlüsselungstext
  2. Nachricht (i) ist die Nachricht, dass wir sie abschließen werden
  3. Schlüssel und Nachricht (i) haben die gleichen Längen **
  4. Der Angreifer hat nur den Verschlechterungstext und kennt das Schlüsselbildungsprogramm (Fortsetzung Hashing) und Xor Cryptography
  5. Hash-Algorithmus ist SHA-512
War es hilfreich?

Lösung

Das Studium der Verschlüsselungsalgorithmen macht einen großen Spaß. Denken Sie daran, Sie spielen und produzieren nichts Ernstes. Solange Sie nur Dinge wie Ihr persönliches Tagebuch (oder vielleicht sogar Ihr Passwörter) verschlüsselt haben und Sie die Daten sicher halten, werden Sie wahrscheinlich in Ordnung sein. Diese Art von Sicherheit als Sicherheit durch Dunkelheit. Ich würde nicht empfehlen, Massenmengen von Daten zu verschlüsseln, die Sie haben JA WIRKLICH Müssen privat oder alles, was verfügbar ist und für die Außenwelt von Interesse ist.


In diesem Fall, wenn Ihre Nachricht kürzer als die Schlüsselgröße und die Hash-Blockgröße ist und der Schlüssel einzelne Verwendung und zufällig ist, verwenden Sie effektiv ein Ein-Use-Pad, sodass alles in Schwell. Vorausgesetzt, Ihre Zufallszahlen -Schlüsselgenerierung ist perfekt, haben Sie einen unzerbrechlichen Verschlüsselungsmechanismus. Wenn Sie jeden Block zur Nachricht hinzufügen, berechnen Sie neue Schlüssel mithilfe von SHA-512 effektiv, ohne einen bestimmten Wert hinzuzufügen. Wenn ein Angreifer davon ausgehen kann, dass die Nachricht aus druckbarem Text besteht und die Länge der Nachricht lang ist oder der Schlüssel wiederholt verwendet wird, wäre es nicht zu schwierig, den ursprünglichen Schlüssel zu finden.

Es wäre effektiver zu berechnen:

M(1)=h(N + key) XOR Message(1)
M(2)=h(M(1)) XOR Message(2)
M(3)=h(M(2)) XOR Message(3)

(wobei n die Häufigkeit ist, mit der der Schlüssel verwendet wurde, der in klarem Text übergeben wird.)

Auf diese Weise können die Bösen Ihre Schlüsselsequenz nicht im Voraus berechnen und Ihre Nachricht entschlüsseln, bevor Sie es können. Durch die Verwendung eines gesalzenen Hashs des Schlüssels kann der Angreifer die Schlüsselsequenz, die beim nächsten Mal verwendet wird, nicht vorhersagen.


Ich habe irgendwo gelesen:

  • Die erste Regel der Kryptographie ist „Kryptographie sollte Experten überlassen werden“.
  • Die zweite Regel lautet "Sie sind kein Experte."

Es gibt einen Grund, warum Menschen in Dingen wie Informatik und Mathematik promovieren. Es gibt viel zu lernen und zu entdecken. So etwas sieht für mich gut aus, aber zweifellos hat es ein klaffendes Loch, durch das ein Angreifer einen Lastwagen fahren könnte.

Viel Spaß und lass dich nicht mürrische Leute wie ich runterbringen. /Bob Bryan

Andere Tipps

Wenn der Angreifer jemals ein Klartext-Ciphertext-Paar kennengelernt hat, kann er den entsprechenden Schlüssel berechnen. Und daraus kann er alle späteren Schlüssel berechnen. dh es ist trivial anfällig für einen bekannten einfachen Textangriff.

Beachten Sie, dass ich, wenn ich sage, dass der Angreifer die Nachricht erraten, nicht, dass er sicher ist, dass seine Vermutung korrekt ist. Er könnte ein paar Billionen Vermutungen machen, und wenn einer von ihnen korrekt ist, ist Ihr gesamtes Schema gebrochen.

Und natürlich dürfen Sie niemals einen Schlüssel wiederverwenden.


Ein sichererer (aber doppelt so langsamer) Algorithmus wäre:

Key(i+1) = h("A"+key)
M(i) = h("B"+key) XOR Message(i)

Oder eine Konstruktion ähnlich dem CTR -Modus:

M(i) =  h(i+key) XOR Message(i)

Aber ich würde es auch immer noch nicht verwenden.


Es gibt jedoch keinen Grund, einen solchen Homebrew -Algorithmus zu verwenden. Es gibt viele vorhandene Algorithmen, die gut funktionieren. Wenn Sie beispielsweise ein Stream -Cipher -Design mögen, können Sie AES im CTR -Modus verwenden.

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