->zurück zu meiner homepage

Dancing Fleas


Wer's schreibt darf es auch benennen: Ich finde den Namen "
dancing_fleas" in Anspielung auf die während der Ver- und Entschlüsselung stattfindenden Bocksprünge der Bytes passend.

Unter folgenden Links können eine Linux-Version und eine Windows-Version heruntergeladen werden(die Windows Version läuft bei mir auch problemlos in Linux unter Wine):


    dancing_fleas_2_0                        dancing_fleas_2_0_win


Das Windows-binary ist relativ groß(ca 2 MB) und enthält alle benötigten wxWidgets-Libraries (ausser der notorischen mingwm10.dll, die im gleichen Verzeichnis -oder im entsprechenden Suchpfad- vorhanden sein muss). Das zip-Archiv müssen Sie einfach in einen Ordner Ihrer Wahl entpacken. Die mingwm10.dll ist mit eingepackt. Dann können Sie dierekt das Programm starten.
Das Linux binary benötigt ein installiertes WxWidgets2.8, das leicht in den einschlägigen Repositories bezogen werden kann. (Wahrscheinlich ist es sowieso schon bei Ihnen installiert, wenn Sie Linux-user sind.)

Als IDE für die Programmierarbeit habe ich "code::blocks" verwendet und für das GUI das Plattformübergreifende Tool wxwidgets.

Es handelt sich bei den hier verlinkten Programmen um eine gegenüber der ersten Version gegen "Chosen Plaintext Attacken" "gehärteten" Version.  (Die erste Version stand bis zum 28.1.2011 auf dieser Website zum Download bereit und benutzt ein anderes Format. Falls Sie diese schon verwendet haben, um Dateien chiffriert abzulegen, sollten Sie Ihre alte Version für die Dechiffrierung nicht löschen. Wegen des frühen Stadiums der Entwicklung baue ich noch keine Abwärtskompatibilität in die aktualisierten Versionen ein.)
Weiterhin wurde zur Verbesserung der Sicherheit der Modus auf das "Cipher Block Chaining" CBC umgestellt.

Zur Benutzung:

Verschlüsselung:
Programm ausführen, "encipher" wählen, ein "Plaintext Dokument" auswählen, einen Schlüssel eingeben, OK drücken. Dancing fleas erzeugt einen "Ciphertext" mit gleichem Filenamen und fügt die beiden Zeichen "_c3" als Kennung hinten an.

Entschlüsselung:
"decipher" wählen, ein "Ciphertext"-Dokument auswählen, den Schlüssel eingeben, OK drücken. Dancing fleas erzeugt wieder den Plaintext und entfernt die "_c3"-Kennung. Der "Ciphertext" wird aber nicht geändert oder gelöscht.

Hashwert erzeugen:

Menüpunkt "hashing fleas" wählen, Quellfile auswählen, OK drücken. Dancing fleas erzeugt einen Kurzfile mit dem ursprünglichen Filenamen erweitert um ".sig". Das File können Sie im Editor anschauen. Da steht im Klartext "hashing_fleas_65: " gefolgt von einer langen Zahl, die den Hashwert im Dezimalsystem darstellt.

Zur Funktion:
Es handelt sich um eine Blockchiffre im CBC Modus (vorherige Version: ECB Modus), die in der vorliegenden Version auf eine Blockgröße von 130 Byte eingestellt ist. Basis ist ein Feistel Netzwerk(4 Runden), dessen "Rundenfunktion" auf einem nicht  effizient rückabwickelbaren diffusivem Informations-Mischprozess ohne externe Parameter beruht. Der Diffusionsalgorithmus ist selbstreferentiell. (Der Plaintext wird als Diffusionsalgorithmus interpretiert und rekursiv auf sich selbst angewandt.)
Hierbei habe ich besonders darauf geachtet, einen möglichst guten Pseudozufallsalgorithmus zu erzeugen und durch nichtlineare Operationen eintretende Entropieverluste sofort an der Quelle wieder einzusammeln.
Auch wenn die Rundenfunktion eines Feistelnetzwerkes keine statistisch ausgewogene Bytefolgen (siehe Chiquadrat Gleichverteilungstest) erzeugt, entsteht meist durch Anwendung im Feistelnetzwerk doch eine quasi gleichverteile Bytefolge mit scheinbar hoher Entropie. Diese ist jedoch durch die nur verdeckte statistische Unausgewogenheit angreifbar.
Die in "Dancing Fleas" verwendete Rundenfunktion verwendet zwei unabhängige, nicht kommutierende, selbstreferentielle Bit-Diffusionsalgorithmen. In zwei parallelen Fäden werden sie einmal in einer Reihenfolge, im anderen Faden in der anderen Reihenfolge angewandt. Beide Fäden liefern jeweils für sich bereits statistisch mit Zufallszahlen konforme Bytefolgen. Um Backtracingmöglichkeiten zu blocken, werden die Resultate der beiden Fäden per Xor miteinander verknüpft. Für die Rundenfunktion wird dies zweimal hintereinander ausgeführt, um dann in 4 Feistelrunden weiterverarbeitet zu werden.

Wer Speicherplatz sparen will, kann die zu verschlüsselnden Files vorher packen (mit 7z, winzip o.Ä.), das ist aber m.E. hier nicht für die Sicherheit nötig. 

Source Code:
Durch eine kürzliche Änderung ist die bisher hier zum download bereitgestellte Datei mit dem Quelltext der Kernroutinen nicht  mehr aktuell. Wenn die "redaktionelle" Überarbeitung zur Herausgabe (Kommentare einfügen, Entwicklerkommentare und stillgelegte Schnipsel herausnehmen,...) abgeschlossen ist, soll an dieser Stelle wieder der Link zum Quelltext erscheinen.