Webmail-Proxy mit Verschlüsselung

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
webskipper
User
Beiträge: 15
Registriert: Freitag 9. Dezember 2011, 19:11

Ich habe da eine Idee..

Und zwar würde ich gerne über einen lokalen Proxy meine Mails verschlüsseln und das web-basiert bei Webmail-Anbietern.

Was ich benötige ist ein man-in-the-middle, der die HTTPS Requests annimmt und sie z.B per cURL weiterleitet.
Ein einfaches Forwarding reicht nicht aus, da der proxy die Verschlüsselung / Entschlüsselung vornehmen muss.
D.h. der proxy muss gegebenenfalls bestimmte Textblöcke modifizieren.

Was ich brauche ist also

- Einen HTTPS Server
- Ein Zertifkat für localhost
- cURL, eventuell PyCurl
- Einen Parser der gekennzeichnete Textblöcke erkennt. Dabei muss man beachten, dass viele Anbieter die Mail-Bodies in JavaScript Code "einpacken". GoogleMail jedoch bietet auch eine vereinfachte HTML-Version an, die wahrscheinlich einfacher zu parsen ist.
- Ein Modul für die Verschlüsselung und Entschlüsselung. Erstmal simpel, symmetrisch.


Fürs Prototyping möchte ich das zunächst in Python realisieren

Ein Problem könnte beim Zertifikat entstehen. Wenn ich richtig liege, gibts keine generischen localhost-Zertifikate, die einfach so vom Browser akzeptiert werden.
D.h. ich bzw. der Endbenutzer muss dieses bei der Installation des Proxy zur Zertifikatliste des Browsers hinzufügen !?

Kommentare / Feedback erwünscht.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Was willst du denn machen und warum machst du das was ich vermute dass du machen willst nicht als Firefox-Plugin?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
webskipper
User
Beiträge: 15
Registriert: Freitag 9. Dezember 2011, 19:11

Das "was" habe ich ausreichend beschrieben oder ?

Zielsetzung ist die Entwicklung einer Proxy-Software die für den Benutzer Textblöcke im Browser verschlüsselt und entschlüsselt.
Mit Textblöcken meine ich vorrangig Bodies von E-Mails - und die sind in der Regel im Klartext auf den Servern von Google, GMX & Co. gespeichert.

Die Blöcke sollen dementsprechend gekennzeichnet sein, z.B. so:

Code: Alles auswählen

--CODE_BEGIN
Dies ist ein geheimer Text
--CODE_END
Nach dem Submit / Post verschlüsselt der Proxy die Anfrage, z.B. mit PGP:

Code: Alles auswählen

-----BEGIN PGP MESSAGE-----
dsfsff3rfsfk349fh3f4hf03hf0h30fh4
...
-----END PGP MESSAGE-----
Das "warum" kann ich beantworten. Ich mag generische Lösungen und möchte die Software zur Nutzung freigeben.
Da nicht jeder Firefox nutzt, wäre ein Proxy meiner Meinung nach die beste Lösung, da er als Schaltstelle zwischen Browser und
Webserver auftritt. Für Firefox gibt es ein Plugin namens FireGPG, allerdings wird es nicht mehr gewartet.

Durch ein bisschen Recherche bin ich auf ProxyStrike http://www.edge-security.com/proxystrike.php gestoßen.
Enthalten ist eine Script namens namens "Proxynet", dass scheinbar das Gründgerüst für meine Anforderungen bietet:

http://code.google.com/p/proxystrike/so ... roxynet.py

Einstiegspunkt für HTTPS über einen Proxy ist das Kommando CONNECT und somit die Methode do_CONNECT im Script.
Es wird eine SSL-Verbindung aufgebaut und das Resultat der ursprünglichen HTTPS-Anfrage darüber getunnelt.
Jetzt muss ich noch einen Weg finden, an die Rückgabe der Anfrage zu kommen. Irgendwie werden Requests in eine Warteschlange
eines Handlers gepackt:

Code: Alles auswählen

reqHand=RequestHandler(self.path,ssldat,sok,"https",self.connection)
Proxynet.queueRequest(reqHand)
reqHand.execute()
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

webskipper hat geschrieben:Das "was" habe ich ausreichend beschrieben oder ?
Ne, eben nicht. Ich habe *vermutet* dass du einen Verschlüsselungsproxy baust für PGP, aber *das* schreibst du erst jetzt. Davor waren es nur generische "Ersetzungen".

Generell halte ich es für einen wahnsinnigen Aufwand für etwas was deutlich einfacher als Extension für den jeweiligen Browser machbar ist. Wobei ich gar nicht weiß, wie mächtig die Chrome-Erweiterungen sind.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
webskipper
User
Beiträge: 15
Registriert: Freitag 9. Dezember 2011, 19:11

Ich behaupte der Aufwand ist deutlich niedriger. Das mit den Plugins / Extensions ist doch ätzend weil es keine gemeinsamen Standards gibt. Zudem bin ich nicht mal sicher, ob es Browser-Erweiterungen erlaubt ist, die HTTP-Pakete abzugreifen und zu verändern.

Von daher schreibt man einmal einen Proxy-Server und gut ist. Später kann man noch überlegen ob man sowas baut wie ProxTube, was letztendlich auch nur einen Proxy nutzt.

Ich melde mich nochmal wenn ich einen Schritt weiter bin.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

webskipper hat geschrieben:Ich behaupte der Aufwand ist deutlich niedriger. Das mit den Plugins / Extensions ist doch ätzend weil es keine gemeinsamen Standards gibt. Zudem bin ich nicht mal sicher, ob es Browser-Erweiterungen erlaubt ist, die HTTP-Pakete abzugreifen und zu verändern.
Du brauchst ja auch keine Pakete abfangen und verändern sondern nur den auf der Seite dargestellten Inhalt, das geht sogar mit Userscripts, und die sollten in jedem Browser gehen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten