Moin,
ich konnte es mal wieder nicht lassen und habe ein kleines Proggi gebastelt, welches Daten durch diverse Shift- und Vertauschungsoperationen verschlüsselt.
Wer's sich mal ansehen möchte, findet es hier: http://mitglied.lycos.de/JoergGrohne/mixit.html
Ich halte es für ziemlich sicher, aber was ist heutzutage schon sicher... Zumindest ist es neu, oder... anders.
Funktioniert wie folgt:
Übergeben werden die Eingabedatei, die Ausgabedatei, ein Passwort und ein Level (1-32766, default 1000), der die Stärke der Verschlüsselung angibt.
1. Der Key
Aus Passwort, bestehend aus max. 72 zulässigen Zeichen, einer Reihe von Konstanen und dem Level wird durch umcodierung, aneinanderhängen etc. ein langer Key erzeugt. Dieser Key ist maximal so lang wie der Level. Dieser Key wird dann durch eine Art "Karten abheben" verwirbelt und noch mal über Tabellen umcodiert.
2. Die erste Verschlüsselung
Der Key wird auf alle Bytes der Eingabedatei draufgezählt, also das 1. Byte des Keys auf das 1. Byte der Eingabedate, das 2. Byte..... etc. Also in der Form
3. Das Mischen
Wie oben erwähnt, sind für das Passwort 72 verschiedene Zeichen zulässig. Der generierte Key besteht überigens auch nur aus 72 zulässigen Zeichen. MixIt kennt 72 verschiedene Methoden, um die Daten zu vermischen. Beginnend beim 1. Byte geht MixIt durch den Key und ruft für jedes Zeichen eine Methode auf. Besteht der Key also aus 1000 Zeichen, werden die Daten 1000 mal durchgemischt.
Die Methoden sind z.B. der Art wie:
4. Das Entschlüsseln
Funktioniert rückwärts wie das Verschlüsseln. Der Key wird gebildet und umgedreht. Dann geht MixIt quasi rückwärts durch den Key, ruft die entsprechenden Methoden auf, die zurückmischen und subtrahiert zum Schluß den Original-Key von den Ausgabedaten. Das war's.
Warum glaube ich, daß es sicher ist?
Der Key ist wichtig, da die Reihenfolge der Methoden unbedingt einzuhalten ist. Und die Kombination von Passwort und Level ergeben ganz schön viele Möglichkeiten, da weder der Level noch die Länge des Passwortes, noch das Passwort selber bekannt sind.
Läßt man den Key weg und versucht, nur über die Methoden, die Daten zu knacken, hat man ebenfalls ziemlich viele Möglichkeiten. Nämlich, je nach Länge der Daten, 72**72**72**72... ähm, also ganz schön viele. Ferner genügt es nicht, nur den Anfang der Daten zu knacken, um, sagen wir mal, aus den ersten 20 Bytes auf den Schlüssel zu schließen, da durch die Misch-Methoden Bits und Bytes, die vorher am Anfang standen, evtl. jetzt am Ende stehen könnten. Ein Teil der Daten kann nicht entschlüsselt werden, immer nur alle, nur alle Daten sind in sich konsistent.
Einen Brute-Force-Knacker namens breakit habe ich beigelegt, und der braucht ewig, da die Mischmethoden und die Key-Generierung nicht wenig Zeit verbraten.
Also, wie bei anderen "modernen" Verschlüsselungsalgorithmen, die Zeit ist dein Freund. Mit den 5 Sekunden, die MixIt zum Verschlüsseln braucht, dürfen sich die Codeknacker Milliardenfach herumschlagen.
Schreibt doch mal, was ihr von dem Ding haltet.
ich konnte es mal wieder nicht lassen und habe ein kleines Proggi gebastelt, welches Daten durch diverse Shift- und Vertauschungsoperationen verschlüsselt.
Wer's sich mal ansehen möchte, findet es hier: http://mitglied.lycos.de/JoergGrohne/mixit.html
Ich halte es für ziemlich sicher, aber was ist heutzutage schon sicher... Zumindest ist es neu, oder... anders.
Funktioniert wie folgt:
Übergeben werden die Eingabedatei, die Ausgabedatei, ein Passwort und ein Level (1-32766, default 1000), der die Stärke der Verschlüsselung angibt.
1. Der Key
Aus Passwort, bestehend aus max. 72 zulässigen Zeichen, einer Reihe von Konstanen und dem Level wird durch umcodierung, aneinanderhängen etc. ein langer Key erzeugt. Dieser Key ist maximal so lang wie der Level. Dieser Key wird dann durch eine Art "Karten abheben" verwirbelt und noch mal über Tabellen umcodiert.
2. Die erste Verschlüsselung
Der Key wird auf alle Bytes der Eingabedatei draufgezählt, also das 1. Byte des Keys auf das 1. Byte der Eingabedate, das 2. Byte..... etc. Also in der Form
Code:
c=c+a;
if(c>255) c-=256;
3. Das Mischen
Wie oben erwähnt, sind für das Passwort 72 verschiedene Zeichen zulässig. Der generierte Key besteht überigens auch nur aus 72 zulässigen Zeichen. MixIt kennt 72 verschiedene Methoden, um die Daten zu vermischen. Beginnend beim 1. Byte geht MixIt durch den Key und ruft für jedes Zeichen eine Methode auf. Besteht der Key also aus 1000 Zeichen, werden die Daten 1000 mal durchgemischt.
Die Methoden sind z.B. der Art wie:
- Vertausche Bit 4 bei aufeinanderfolgenden Bytes
- Lese 7 Bytes ein, drehe die Reihenfolge um und schreib sie zurück
- Vertausche Bytes über eine Tauschtabelle
- Vertausche den Wert 37 mit 58
- Zähle einen fortlaufenden Zähler auf jedes Byte drauf
- etc...
4. Das Entschlüsseln
Funktioniert rückwärts wie das Verschlüsseln. Der Key wird gebildet und umgedreht. Dann geht MixIt quasi rückwärts durch den Key, ruft die entsprechenden Methoden auf, die zurückmischen und subtrahiert zum Schluß den Original-Key von den Ausgabedaten. Das war's.
Warum glaube ich, daß es sicher ist?
Der Key ist wichtig, da die Reihenfolge der Methoden unbedingt einzuhalten ist. Und die Kombination von Passwort und Level ergeben ganz schön viele Möglichkeiten, da weder der Level noch die Länge des Passwortes, noch das Passwort selber bekannt sind.
Läßt man den Key weg und versucht, nur über die Methoden, die Daten zu knacken, hat man ebenfalls ziemlich viele Möglichkeiten. Nämlich, je nach Länge der Daten, 72**72**72**72... ähm, also ganz schön viele. Ferner genügt es nicht, nur den Anfang der Daten zu knacken, um, sagen wir mal, aus den ersten 20 Bytes auf den Schlüssel zu schließen, da durch die Misch-Methoden Bits und Bytes, die vorher am Anfang standen, evtl. jetzt am Ende stehen könnten. Ein Teil der Daten kann nicht entschlüsselt werden, immer nur alle, nur alle Daten sind in sich konsistent.
Einen Brute-Force-Knacker namens breakit habe ich beigelegt, und der braucht ewig, da die Mischmethoden und die Key-Generierung nicht wenig Zeit verbraten.
Also, wie bei anderen "modernen" Verschlüsselungsalgorithmen, die Zeit ist dein Freund. Mit den 5 Sekunden, die MixIt zum Verschlüsseln braucht, dürfen sich die Codeknacker Milliardenfach herumschlagen.
Schreibt doch mal, was ihr von dem Ding haltet.