QML C++ base64 verschlüsselung

isyyy

Lieutenant
Registriert
Aug. 2010
Beiträge
672
Hallo zusammen.
Hab mal ne kleine frage an auch.
Ich programmiere grad ne kleine App für Android und stehe vor einem kleinem problem.

Ich muss Daten an den Server senden und diese verschlüsseln das niemand weiß was gesendet wird.
HTTPS kommt nicht in frage da kein Zertifikat verfügbar/zu teuer etc.

Ich hab ein Array was ich mit POST in C++ an den Server schicke.
["BLA","BLA",...] etc.

Ich hab da an folgende variante gedacht:

Ich nehme das gesamte Array und pack das in ein base64 welches immer länger als 50 Buchstaben hat.

zb:

PHP:
SGF2ZSW0byBkZWFsIHdpdGggQmFzZRY0IGZvcm1hdD8gGGhlB0aGlzIHNpdGUgaXMgbWFkZSBmb3IgWW91ISBVc2UgdGhlIHN1cGIHNpbXBsZSBvbmxpbmUgZm9ybSBiZWxvdyB0byBkZWNGUgb3IgZW5jb2TlIFlvdXIgGF0YS4gSWYgWW91J3JlIGludGVyZX0ZWQJvdXQgdGhlIGlubmVyIHdvcmtpbmdzIG9mIHRoZSBCYXNlNjQgZm9ybWF0LZBqdXN0IHJlYBQgdGhlIGRldVFpbGVkIGRlc2NyaXB0aW0uIGF9IHRoZSBib3R0b20gb2YgdGhlIHBhZ2UuIFdlbGNvbWUh

Ich nehme aus dem Base64 10 feste Buchstaben zb char at 6 , char at 49, char at 44, char at 30 ,... etc
Ich nehme 10 weitere feste Buchstaben zb char at 8 , char at 48, char at 40, char at 10,... etc

und wechsel deren ihre Plätze 6 zu 8 , 8 zu 6, etc und sende das an den Server.
Auf dem Server wiederum setzte ich die Zeichen wieder zurück auf die stelle aus denen Sie kamen
und decode den base64 String wieder.

Das beispiel oben ist ein base64 string welches von mir auf diese art und weise Unleserlich gemacht wurde.

Ich weiß alles ist knackbar aber das sollte doch eigentlich reichen um meine Daten zwischen Server und Client zu verschlüsseln oder?
 
Zuletzt bearbeitet:
Base64 ist Kindergarten. Es ist KEINE Verschlüsselung! Das erkennt und "entschlüsselt" ein 12-Jähriger! Also bitte, mach dich nicht lächerlich mit sowas.

Was du da vor hast, ist echtes "security by obscurity". Das funktioniert NICHT. Gerade bei Android nicht, siehe PushTAN-App.

Besorg' dir bei letsencrypt oder StartSSL ein Zertifikat und verwende dieses.
 
Ich sehe das genauso: entweder die Daten müssen verschlüsselt werden (dann aber richtig) oder die Daten müssen nicht verschlüsselt werden (dann kann man auch Klartext senden).
 
na dann Danke.
 
Zuletzt bearbeitet:
Knackbar? Da gibt es absolut nichts zu knacken. Weil es einfach Klartext ist.

Du weißt schon, warum es Base64 gibt, ja? Weil man via Mails nur Text versenden kann. Keine Binäries, keine Bilder, nichts. Nur reinen Text. Und aus dem Grund gibt es Base64.

Hier ein Dekodierer.

https://www.base64decode.org/

Und es gibt noch Millionen anderer. zB jedes Mailprogramm.

Das ist Dein Text.

Have%´o deal with Base4 format? hen this site is made for You! Use the super simple online form below to decoe or encodه Your data. If You're interested about the inner workings of the Base64 format-گjust re` the deuQiled descriptim. a} the bottom of the page. Welcome!
 
Gib mir die App und ich entschlüssel es. Also es geht, hab aber gerade keine Lust dazu :D
 
Du hast, genauso wie viele andere Entwickler, noch nicht verstanden warum "security by obscurity" schlecht ist. Sobald man das Programm hat, das die "Verschlüsselung" macht, hat man das geknackt (Egal ob Binary oder Quelltext). Das hier zu "entschlüsseln" ist natürlich komplizierter, beweist aber mitnichten die Sicherheit deiner "Verschlüsselung". Außerdem wären 25€ ein bisschen lächerlich dafür.

Edit: Dass deine "Verschlüsselung" SO schlecht ist, war mir nicht bewusst. Die 25€ musst du BlubbsDE wohl bezahlen :D
 
Zuletzt bearbeitet:
Ganz so einfach wäre es mit der Dekodierung nicht gewesen, er hätte ja nach der Base64 Kodierung noch eine Art Substitutionsbox verwendet - allerdings ohne Permutation und nur eine einzige Runde, wodurch das ganze annähernd wirkungslos ist.
 
Die Variante die du dir überlegt hast ist nicht wirklich sicher wie hier ja schon erwähnt wurde. Man kann dann natürlich sagen, es sei besser als nichts, ein anderer Standpunkt wäre, dass es schlechter ist, da man sich in falscher Sicherheit wiegt. Daher:

Die beste Variante wäre tatsächlich SSL zu verwenden. Inzwischen kommt man ja auch relativ leicht an Zertifikate ran.

Ansonsten nimm eine etablierte Verschlüsselung, zB AES256. Du brauchst in der App und auf dem Server dann den Key, da musst du nur aufpassen dass der nicht an die Öffentlichkeit gerät.
 
Zuletzt bearbeitet:
Du brauchst in der App und auf dem Server dann den Key, da musst du nur aufpassen dass der nicht an die Öffentlichkeit gerät.
Dann aber bitte mit Unified Diffie-Hellman oder RSA für den Schlüsselaustausch. Wenn der statische Key irgendwo in der Anwendung steht, ist er ja quasi öffentlich zugänglich und damit nicht viel sicherer als base64.
 
VikingGe schrieb:
Dann aber bitte mit Unified Diffie-Hellman oder RSA für den Schlüsselaustausch. Wenn der statische Key irgendwo in der Anwendung steht, ist er ja quasi öffentlich zugänglich und damit nicht viel sicherer als base64.
Wenn die Anwendung irgendwo öffentlich verfügbar gemacht wird, klar. Ich dachte aber es handelt sich um eine privat genutzte App, da kann man sowas auch als shared secret zB über die Config ablegen.
 
Zurück
Oben