Hehehe, <Jean_Puetz_Stimme> "Ich hab da mal was vorbereitet" </Jean_Puetz_Stimme>.
Wie verschlüssle ich diese Passwörter, die jetzt in dem Memofeld sind.
Einfache Frage, hochkomplexe Antworten sind möglich.
Als erste Anlaufstellen hier mal zwei Links:
Wikibook "Cäsar-Verschlüsselung"
Wikipedia: Krytographie
Bzw in welche .Dateiendung sollen diese passwörter geschrieben werden, sodass es nicht möglich ist diese mit öffnen z.b. des editors abzufangen?
Also grundsätzlich würde
ich persönlich niemals mit einem simplen Notepad mit automatischer Dateiendungszuordnung versuchen, irgendwelche Passwörter zu knacken sondern schon mal grundsätzlich mit einem Hex-Editor ran gehen. Was bedeutet: Die Dateiendung ist mir vollkommen egal. Ob das eine .txt, .wwi, .bat oder .dat-Datei ist, spielt für mich keine Musik. Wenn da ein Passwort drin steht, dann sehe ich das.
Wirklich wichtig ist, dass der Inhalt verschlüsselt ist. Und da scheiden sich bereits die Geister und viele Stimmen rufen von 1024- oder 2048-Bit-Verschlüsselungen etc. pp.
Ich persönlich habe im privaten Bereich folgende Erfahrungen gemacht:
1. Die üblichste Methode, um an Passwörter zu gelangen ist "brute force". Das ist kein Algorithmus oder eine Verschlüsselungstechnik, sondern einfach eine Methode, die darin besteht, alle möglichen Kombinationen einfach auszuprobieren, bis man eine vernünftige Lösung hat. Das Vergleichen der einzelnen Entschlüsselungsversuche kann auch automatisiert werden (semantische Scanner mit angeschlossenem Wörterbuch) und irgendwann hat man eine Liste mit möglichen Lösungen, die man ausprobieren kann.
2. Voraussetzung für "brute force" ist jedoch, dass die Passwortverschlüsselung einfach erfolgte. D.h. das Passwort wurde genommen, einmal verschlüsselt (wie auch immer) und fertig. Deswegen benutze ich sehr gerne kombinierte Verschlüsselungen, also mehrere Schritte. Da braucht es dann auch gar keine supermegaausgefeilten Verschlüsselungen.
3. Wenn mit "brute force" in einem bestimmten Zeitrahmen nichts zu erreichen ist, besteht der nächste Schritt normal aus einer Sichtung der einzelnen Bytes und deren Abstand zueinander. Bei einfachen Cäsar- oder Vigenère-Verschlüsselungen geht das auch recht gut, da sich dann Byteblöcke in einem Rahmen von 26 bis 52 Differenz bewegen (siehe auch die geposteten Links). Wenn ich dann mit dem Hexeditor auf einen solchen Datenblock stosse, dann nehme ich mir den natürlich intensiv vor.
4. Wenn das alles nichts fruchtet (ich komme einfach nicht so schnell an die verschlüsselten Passwörter), dann gehe ich mit dem Hexeditor auf die .exe-Datei des Verschlüsselungsprogramms los und suche da nach den Schlüsseln der Verschlüsselung. Insbesondere im Hobbybereich wird das nämlich gerne vergessen. Da werden die Schlüssel als einfach Strings oder Charakter-Arrays im Programm definiert und stehen dann auch so hinterher im Kompilat drin. Wenn ich den oder die Schlüssel gefunden habe, erleichtert mir das die Arbeit natürlich erheblich, da ich nur noch rumknobeln muss, wie und in welcher Reihenfolge ich die Dinger auf die verschlüsselten Passwörter anzuwenden habe.
Womit ich bisher recht gute Erfahrungen gemacht habe, ist eine mehrstufige Vigenère-Verschlüsselung mit einer Abwandlung eines eingestreuten Rot13.
Nicht nur werden die Passwörter verschlüsselt sondern auch (bei passender Schlüsselwahl) "demaskiert", d.h. sie sind auch hinterher mittels Hexeditor nicht mehr ohne weiteres als verschlüsselte Passwörter zu erkennen und unterscheiden sich auch vom Aussehen her nicht mehr wirklich von Binärcode. Wenn man dann noch freundliche 5-16kb zufälligen Datenmüll dazu packt und die codierten Passwörter da drin speichert - gute Nacht, Marie, da darf dann jemand aber
richtig lange knobeln.
Ähnlich gehe ich in meinem Programm vor.
Angenommen, ich verwende als 1. Schlüssel (von mehreren) das Wort "Schluessel". Du wirst dann niemals so etwas in meinem Sourecode finden:
Code:
var
Key1: String;
...
Key1 := 'Schluessel';
Denn das lässt sich hinterher mit dem Hexeditor finden.
Viel mehr wird das Ding wohl eher so drin stehen:
Code:
var
Key1Part1: String;
Key1Part2: String;
Key1Part3: String;
KeyCoded: String;
KeyUncoded: String;
DummyInt1: Integer;
DummyInt2: Integer;
DummyInt3: Integer;
i: Integer;
...
Key1Part1 := 'Vfk';
DummyInt1 := 4354223;
Key1Part2 := 'oxv';
DummyInt2 := '12234';
Key1Part3 := 'vho';
DummyInt3 := '443254';
KeyCoded := Key1Part1 + Key1Part2 + Key1Part3;
KeyUncoded := '';
for i := 1 to Length(KeyCoded) do
KeyUncoded := KeyUncoded + Chr(Ord(KeyCoded[i]) - 3);
Das ist mit einem Hexeditor schon deutlich schwerer aufzuspüren (insbesondere bei der Grösse eines Kompilats) und natürlich kann man das auch noch weitertreiben und beispielsweise "red herrings" in den Source einstreuen.
(to be continued)