C++ sichere Verschlüsselung
-
Zu was soll dir die .txt denn dienen? Bevor du Caesar nutzt würde ich mir mal Vigenère angucken, das ist genauso trivial zu implementieren, bietet aber ein wesentlich höheres Maß an Sicherheit. Wenn du den Key jetzt noch >= der Länge der .txt Datei wählst, ist das Verfahren sogar nicht mehr zu brechen. Nur im Endeffekt kann natürlich jeder, der ein bisschen was vom Debuggen versteht, einfach gucken was dein Programm da schönes macht und den Key auslesen.
-
Besser nicht Vigenère. Das ist ein schwaches Verfahren für Handarbeit. Für Computer kann man mit weniger Aufwand viel mehr Obfuscation erreichen. Und mehr als Abschreckung durch Obfuscation ist es nicht, wenn kein geheimer Schlüssel beteiligt ist.
-
Was würdest du denn vorschlagen? (XOR ist lame!)
Aber wie schon gesagt, das ist vermutlich eh keine gute Lösung, man müsste wissen was denn jetzt in der Textdatei stehen soll.
-
Wenns um ernsthafte Verschlüsselung geht, wäre als Alternative zu OpenSSL noch Crypto++ zu nennen:
-
cooky451 schrieb:
Was würdest du denn vorschlagen? (XOR ist lame!)
Zunächst mal unterscheide ich kaum zwischen XOR und +=. XOR gegen einen festen Wert ist nicht besser oder schlechter als die Cäsar-Chiffre. Wenn ich p XOR k schreibe, kann auch eine andere Permutierung genommen werden, sogar p*(k|1), Hauptsache, man kann es wieder entschlüsseln.
Um einfache Kyptoanalyse zu erschweren, schlage ich vor XOR gegen rand() oder sowas. Der Blick in den Code eröffnet dann zwar trotzdem alles. Ich würde mein Schätzilein den MWC nehmen, wenn da nicht auch noch das Verfahren verborgen werden sollte.Um das Verfahren zu verbergen eins nehmen, das ungewöhnlich ist und zu keinem einfachen Compilat führt, zum Beispiel wie amipro die Verschlüsselung untrennbar mit einer Kompression per Spreizbaum vermischen http://www.cs.uiowa.edu/~jones/compress/
Oder einfach XOR gegen den mersenne twister (Endlich eine Anwendung dafür gefunden hab! *hüpf*). Ist natürlich viel leichter verstanden, weil Verschlüsselung und Zufall-Generierung im Compilat so getrennt sind.Oder wie wäre es mal mit dieser seltsamen rekursiven Zufallsfolge aus Gödel, Escher, Bach?! http://www.wer-weiss-was.de/theme50/article1500847.html Und dann mal schauen, ob der Hacker daran verzweifelt, daß er zwar zwei Befehle Obfuscation findet, aber einfach nichts, was genug Kraft für Zufall hätte.
-
DWD15423 schrieb:
...leichte Bibiothek...Datei verschlüsseln...ohne ein Password...hohen sicherheit?
Kannst Du "hohe Sicherheit" näher erklären? Gegen welche Angreifer willst Du Dich schützen und was können diese Angreifer?
(Das nennt man "threat model" und ist recht wichtig, wenn es um die wahl bzw design eines krypto-protokolls geht)
-
DWD15423 schrieb:
ohne ein Password und mit einer hohen sicherheit?
Du verlangst gerne das theoretisch unmögliche, oder?
-
otze schrieb:
DWD15423 schrieb:
ohne ein Password und mit einer hohen sicherheit?
Du verlangst gerne das theoretisch unmögliche, oder?
LOL, ich habe das ohne Passwort gar nicht gesehen. Warum unmöglich? Man schreibe: ".". Das verschlüsselt jeden Text sicher.
-
Auch ein gute Obfuskation ohne großen Aufwand wäre boost::iostream mit einem zipstream:
std::iostream file("helloworld.txt", std::ios_base::in|std::ios_base::binary); boost::iostream::filtering_istream in; in.push(boost::iostream::::zlib_decompressor()); in.push(file); std::stringstream ss; boost::iostream::::copy( in, ss );
Danach hat man den kompletten stream im stringstream. Dekomprimiert.
Komprimieren geht halt andersrum.
Man müsste halt wissen wofür du das brauchst. Die Methode ist aber wie gesagt keine richtige Verschlüsselung, nur eine Obfuskation. Und dazu noch platzsparend :D.
-
Kompression würde ich nicht als Obfuskation sehen. Ein Hacker kann leicht die magic-Numbers einer komprimierten Datei erkennen. Und man brauchtg noch nicht einmal das Verschlüsselungsprogramm analysieren, um sie dann zu entpacken, weil die Datei selber alles enthält was man zum Entpacken braucht. Eventuell verschlüsselte komprimierte Dateien benutzen (unterstützen die zipstreams das?) und den Schlüssel im Programm verstecken.
Ich würde es so machen wie volkard und einen eigenen, extra obfusen Algorthmus benutzen und den Schlüssel auch extra obfus im Programm verstecken, am besten irgendwie im Algorithmus selber ganz clever eingebaut.
-
cooky451 schrieb:
otze schrieb:
DWD15423 schrieb:
ohne ein Password und mit einer hohen sicherheit?
Du verlangst gerne das theoretisch unmögliche, oder?
LOL, ich habe das ohne Passwort gar nicht gesehen. Warum unmöglich? Man schreibe: ".". Das verschlüsselt jeden Text sicher.
Das ist keine Verschlüsselung.
-
Michael E. schrieb:
Das ist keine Verschlüsselung.
Ja..
-
SeppJ schrieb:
Ich würde es so machen wie volkard und einen eigenen, extra obfusen Algorthmus benutzen und den Schlüssel auch extra obfus im Programm verstecken, am besten irgendwie im Algorithmus selber ganz clever eingebaut.
Allerdings hängt dann alles daran, dass niemand herausbekommt "wie" es gemacht wird, womit wir uns in guter Gesellschaft mit dem legendären "Krypto-Chef" bewegen.
-
Z schrieb:
Allerdings hängt dann alles daran, dass niemand herausbekommt "wie" es gemacht wird, womit wir uns in guter Gesellschaft mit dem legendären "Krypto-Chef" bewegen.
Ja, absolut.
Aber das war die Vorgabe.