->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.