Gegenseitig ergänzende Verschlüsselung?

Ja... ich habe einen Film geguckt...

Die Idee eine Funktion zu haben, die aus einem Datenblock zwei Datenblöcke gleicher Größe generiert, die nur dann einen Sinn ergeben, wenn man sie zusammenlegt, reizt mich irgendwie. Also ich will jetzt nicht jedes zweite Byte oder Bit oder sowas in den zweiten Block verschieben, sondern eher suche ich sowas wie n normalen Algorithmus, der aber zwei statt einem Block ausspuckt.
Gibt es sowas überhaupt? Also auch etwas, das einigermaßen sicher ist? :D
Die Idee finde ich iwie auf jeden Fall interessant...
 
Du könntest zu jedem Byte x eine zufälliges Byte y generieren und ein Byte z := x ^ y. y ginge dann in den ersten Block und z in den zweiten. Das Originalbyte erhieltest du dann über y ^ z = x. ( ^ = xor)

Dies ist auch sicher, die einzelnen Blöcke jeweils OTPs sind(Ein Block ist jeweils der Chiffretext und der andere der Schlüssel. Beide haben die gleiche Länge und der Schlüssel ist ohne Kenntnis der Ausgangsnachricht zufällig).
 
Okay quasi ein erweitertes OTP. Sehr genial. Sowas in der Art habe ich mir inetwa auch vorgestellt.
Dankenderweise braucht man dafür nur einen guten Zufallsgenerator.
Das hilft mir bei meinem Projekt sehr weiter.
Thx. :)
 
Gibt es eigentlich einen Algorithmus, der das so realisert, dass bereits ein gekipptes Bit in einen der beiden Blöcke (egal welcher) dafür sorgt, dass beim Entschlüsseln nur noch vollkommener Quark rauskommt?
 
Original von csde_rats
Gibt es eigentlich einen Algorithmus, der das so realisert, dass bereits ein gekipptes Bit in einen der beiden Blöcke (egal welcher) dafür sorgt, dass beim Entschlüsseln nur noch vollkommener Quark rauskommt?
Nun ja, gut Krypto-Verfahren sollten eine hohe "Diffusion" besitzten, d.h. das Ändern eines kleinen Teils des Klartextes (z.B. ein Bit) ändert einen großen Teil des Ciphertextes.
Im Optimalfall eines Algorithmus ändert ein einziges Bit im Klartext im Durchschnitt die Hälfte der Bits des Ciphertextes (siehe auch: Avalanche-Effekt).
Vermutlich wird das Ändern eines Cipher-Bits bei solchen Verfahren auch den Klartext massiv verändern (so dass nur noch Quatsch rauskommt), allerdings muss dieser Umkehrschluss nicht immer korrekt sein.

Wenn du deinen Algorithmus so konzipierst, dass du zuerst einen Algorithmus mit guter Diffusion als Basisverschlüsselung nimmst und dann aus diesem Block einen Block A durch XOR mit einem Zufallsblock B erzeugst, kriegst du wieder zwei Blöcke (A und B), die nur zusammen einen Informationswert haben. Wenn du in einem der Blöcke ein Bit kippst, hast du auch genau ein Bit im Block A XOR B gekippt.

mfg, metax.
 
Hallo,
für gewöhnlich will man genau das Verhalten vermeiden, denn das ein Bit kippt, ist gar nicht so unwahrscheinlich. Dies passiert leicht wenn die Datei auf deiner Festplatte o.ä. liegt.
 
Das stimmt Elderan. In meiner Applikation habe ich aber quasi unendlich viel Bandbreite um alle Daten sooft ich will erneut zu senden.
Dann verschlüssel ich die Daten erstmal mit AES um sie danach dann mit diesem Verfahren in zwei Blöcke "umzuwandeln".
 
Hallo.

Ehrlichgesagt verstehe ich nicht ganz, was an dem Verfahren so sicher sein soll.
Das einzige, das mir einfällt, als Möglichkeit, die Sicherheit dadurch zu erhöhen, ist, dass man die Blöcke getrennt speichert.Man muss also 2 Systeme knacken und die Daten ergattern statt 1.

Ist denn das gemeint?Ist das die einzige Sicherungssteigerung?
Ich denke das ist den Aufwand nicht wert.
 
Nein ich habe zwei physisch getrennte Übertragungswege, die auch noch auf einem anderen Medium basieren.
Die Daten dürfen gar nicht gespeichert werden, es geht mir hier nur um den Transport.

btw.
Gibt es irgendeine schnelle Methode Bytes zu "interleaven"
Damit meine ich die Bits in den Byte(s) zu vertauschen.
Bit 0 Byte A <-> Bit 0 Byte B
Bit 1 Byte A <-> Bit 1 Byte B
Bit 2 Byte A <-> Bit 2 Byte B
Bit 3 Byte A <-> Bit 3 Byte B
Bit 4 Byte A <-> Bit 4 Byte B
Bit 5 Byte A <-> Bit 5 Byte B
Bit 6 Byte A <-> Bit 6 Byte B
Bit 7 Byte A <-> Bit 7 Byte B

Also ich denke mal, dass man diesen Prozess bildlich als "verzahnen" bezeichnen kann....
Hab da grade nen knoten im Kopf. Ich bin mir 100% sicher das man das mit binären Ops machen kann...
 
Ups hab wohl es falsch erkärt. Nein ich wollte nicht A und B tauschen, sondern jedes zweite Bit durch das entsprechende Bit im anderen Byte "ersetzen"...
 
Hallo,
und was soll das bringen?

Ansonsten ca. so (ungtestestet):
tmp := a
a &= 0xAA (0xAA = 1010 1010)
a ^= (b & 0x55) (0x55 == 0101 0101)

b &= 0x55;
b ^= (tmp & 0xAA)

Kann man natürlich auch mit 32 oder 64 Bit Wörtern machen
 
Zurück
Oben