Unumkehrbares Datenverwurschteln

as3jg

New member
#1
Moin,

bei dieem Mistwetter bin ich mal wieder meiner Lieblingsbeschäftigung, dem Datenverwurschteln, nachgegangen.

Dabei ist ein Stück Coding rausgekommen, welches übergebene Daten durchmischt, ähnlich wie Karten mischen durch abheben.

Jetzt meine Frage: kann man die durchgemischten Daten, oder das Kartenspiel, wieder in die ursprüngliche Reihenfolge bringen?

Dazu ein praktisches Beispiel:

Man nehme 100 Bierdeckel und numeriere sie zufällig mit ungeraden Zahlen zwischen 3 und 99 durch. Dann mische man sie und türme einen Stapel auf.

LOOP
Wir schauen uns den untersten Deckel an, er trägt die Zahl 5.
Dann nehmen wir die untersten 5 Deckel weg
Und legen sie oben auf den Stapel.
END-LOOP
Dieses führen wir eine bestimmte Anzahl Durchläufe durch, dabei verändern sich natürlich die Zahlen auf den untersten Bierdeckeln.

Läßt sich die ursprüngliche Reihenfolge wieder herstellen?
 
G

Gulliver

Guest
#2
Praktisch spielt es für die Umkehrung überhaupt keine rolle um wie viel der stapel jeweils verschoben worden ist. Du nimmst zb 4 deckel:
1. = 3 karten
2. = 2 Karten
3. = 1 Karte
4. = 3 karten

So hast du im endeffekt eine Rotation von 9 Karten. Da die letzte Karte immer oben auf liegt (in deinem Beispiel gehe ich mal davon aus) musst du also lediglich in umgekehrter Weise 9 Karten von oben nach unten legen.

Weiterhin ist dein Beispiel vom "abheben von Karten" weit entfernt, WENN du immer von genau ganz unten deckel für deckel verschiebst (kann sein dass du es so meinst, geht abe rnicht genau daraus hervor). Nimmst du hingegen blöcke von karten auf einmal so wird es schwieriger.
Um es umzukehren braucht du die Anzahl der Verschiebungen und grösse der jeweiligen Blöcke. Dann zählst du von oben die karten ab und packst sie wieder nach unten.
Also mit entsprechender informationsspeicherung kannst du es wieder umdrehen.
Als kryptoverfahren "in the wild" taugt es mit einer solchen rotation nicht.

mfg
Thomas

nachtrag: wirf mal einen BLick auf die sha* und DES/AES und Rijndael codes. Dort sind sog. one-way algorithmen vertreten.
 

as3jg

New member
#3
Moin,

in das Loch mit dem rückwärts wieder untermischen, weil die letzte Karte ja oben liegt, bin ich zwischenzeitlich auch schon gefallen.

Ich habe aber etwas anderes beschrieben (oder zumindestens gedacht):

Deckel von unten nach oben: 5 13 3 22 64 12 83 45 46 1 12
5 liegt unten, also 5 Deckel wegnehmen => [5 13 3 22 64] Rest = 12 83 45 46 1 12
Und wieder oben drauf packen = 12 83 45 46 1 12 [5 13 3 22 64]

Und siehe da, die 5 liegt nicht oben, es ist die 64. So kann man nicht rückwärts gehen, weil wenn du 64 Deckel von oben nimmst und untermischt, paßt es nicht!!!

Momentan habe ich noch folgendes gebastelt, damit es besser verwirbelt wird:

Deckel von unten nach oben: 5 13 3 22 64 12 83 45 46 1 12
5 liegt unten, also 5 Deckel wegnehmen => [5 13 3 22 64] Rest = 12 83 45 46 1 12
Den weggenommenen Stapel umdrehen [5 13 3 22 64] wird zu [64 22 3 13 5]
und den letzten und ersten Deckel tauschen [5 22 3 13 64]
und wieder obendrauf packen. 12 83 45 46 1 12 [5 22 3 13 64]

Es liegt jetzt die 64 oben und schon paßt es nicht mehr und es ist etwas besser verwurschtelt.

Allerdings ist es knackbar, denn die 5 liegt genau als 5.er Deckel von oben, und somit könnte man es wieder rückgängig machen. Nämlich, indem man prüft, ob es Deckel gibt, deren Wert ihrem Platz von oben her gesehen, entsprechen.

Aber leider liegt ebenfalls die 3 als 3.er Deckel von oben. Und schon weiß man nicht, welcher Weg zurück der richtige ist und man müßte beide ausprobieren.

Noch weitere Ideen?

Und danke für deine Stichworte, werde mich mal schlau machen.
ps: sha = society of historical archeology?
des = 17 Milliarden treffer
aes = ebenso
Hast du bessere Suchbegriffe oder vielleicht sogar Links? Mein Dank wird dir ewig nacheilen :]
 

MoD

New member
#5
Hm wie du das machen willst iss schon klar.

Wenn wir mal bei deinem "simplen" Beispiel der Zahlen bleiben, so wird es wirklich schwierig, wenn man relativ viele Zahlen benutzt.
Mit der Anzahl der Zahlen steigt auch die Anzahl der Zahlen, welche zufällig mit ihrer Nummer auch ihren Platz in der Reihenfolge beschreiben.

Das eigentliche Prob ist doch aber meiner Meinung nach folgendes:

selbst wenn ich wüßte wie die Verschlüsselung im Prinzip erfolgt, könnte ich noch nicht die Daten entschlüsseln: bei einem Zahlenstabel kennt man ja nicht den Endpunkt des Stapels (also die ursprüngliche Reihenfolge)-> wann soll ich also mit der Rückrechnung aufhören?


Bei wirklichen Nutzdaten sieht das natürlich anderes aus. Bei Text zum Beispiel kann ich so lange die verschiedenen Möglichkeiten durchspielen, bis ich auf bekannte Muster stoße -> deine Verschlüsselung wäre also in diesem Fall wenig sinnvoll. -> ich schätze mal das dauert keine 2 Stunden - je nach Länge des Textes.

Um etwas richtig gut zu verschlüsseln brauchst du erst mal einen guten Algorithmus - und den stellt man nicht in zwei Tagen auf.

Wenn du pgb hast, dann kannst du dir mal die Grundlagen durchlesen -> da steht einiges über Verschlüsselung

-Für Rechtschreibfehler übernehme ich keine Haftung-
 
#6
Moin,

@MoD
Schaue dir mal meinen neuen Post zum Thema "MixIt Verschlüsselung" an, da habe ich mehr dazu geschrieben. Was ich hier schrieb, ist nur ein Bestandteil vom Gesamtwerk, MixIt. Und das zu knacken, dauert etwas länger als zwei Stunden. Codebrecher wird auch mitgeliefert und der schafft mit Brute Force höchstens was in mehreren Monaten oder Jahren.

Schau's dir mal an und schreib deine Meinung dazu.
Mein Dank wird dir ewig nachschleichen :D
 
Oben