# Java E-Mail Client mit End-to-End-Verschlüsselung



## ZoOo4 (30. Nov 2013)

Guten Tag liebe Gemeinde,

ich habe mir anlässlich meiner Bachelor Thesis überlegt, dass ich gerne einen E-Mail Clienten mit Java schreiben würde, der E-Mails mit RSA end-to-end verschlüsselt. Ich bin gerade in der Ideenfindung und habe mit E-Mail Clienten (auch in Zusammenhang mit Java) nicht viel Erfahrung. Aus diesem Grund wollte ich in diesem Forum fragen, ob es überhaupt möglich wäre einen einfachen E-Mail Clienten in Java zu schreiben oder es bessere Wege gibt. Dabei würde ich gerne in Java programmieren, da ich mit Java bisher relativ viel Erfahrung sammeln konnte.

Der mathematische Teil, die die Texte mit RSA verschlüsselt, kann in diesem Kontext vernachlässigt werden.

Wenn dies ohne horrenden Aufwand möglich wäre, würde ich gerne fragen, ob es irgendwo gute Literatur (vllt. sogar wissenschaftlich zitierbare) oder Internetlinks gibt. 

Ich hoffe ihr könnt mir weiterhelfen :toll:


Grüße
ZoOo4


----------



## rme (30. Nov 2013)

> Der mathematische Teil, die die Texte mit RSA verschlüsselt, kann in diesem Kontext vernachlässigt werden.



Das halte ich für eine schlechte Idee, denn das RSA-Verfahren ist zur Verschlüsselung von Nachrichten gar nicht geeignet, da es unsicher ist. Mit RSA darf man nur zufällige Daten verschlüsseln.

Zur Verschlüsselung von E-Mails gibt es bereits verschiedene Standards, beispielsweise S/MIME und PGP/GPG. Es gibt auch fertige Java-Bibliotheken dafür, beispielsweise JavaMail-Crypto: JavaMail-Crypto Homepage

Es gibt auch schon Mail-Clients, die in Java geschrieben sind und auf obiger Bibliothek aufsetzen. Du würdest also etwas entwickeln, das es schon zuhauf gibt :/ Beispiel: SnowMail, Pooka: A Java email client


----------



## ZoOo4 (1. Dez 2013)

rme hat gesagt.:


> Das halte ich für eine schlechte Idee, denn das RSA-Verfahren ist zur Verschlüsselung von Nachrichten gar nicht geeignet, da es unsicher ist. Mit RSA darf man nur zufällige Daten verschlüsseln.



Danke schonmal für deine Antwort. Wie kommst du darauf, dass RSA unsicher ist? Meiner Meinung nach gibt es noch keine schnellen und guten Algorithmen um eine schnelle Primfaktorzerlegung durchzuführen. Solange sollte RSA weitestgehend sicher sein. Außerdem wird bei den hybriden Verschlüsselungen regelmäßig RSA benutzt 

Die Links fand ich sehr interessant. Die werde ich mir genauer angucken :toll:.


----------



## rme (1. Dez 2013)

In der Kryptographie gilt ein Verfahren nicht erst als unsicher, falls man an den Klartext gelangen kann. Denn das wäre ja fatal und das Verfahren wäre dann eh völlig tot. Nein, man hat heutzutage einen sehr starken Sicherheitsbegriff: Ein Verfahren gilt bereits als unsicher, wenn einem Angreifer auf das Verfahren beispielsweise folgendes Experiment mit einer Wahrscheinlichkeit > 0.5 gelingt:

* der Angreifer darf sich zwei beliebige Klartexte gleicher Länge ausdenken und gibt sie dem Verteidiger
* der Verteidiger verschlüsselt zufällig gewählt einen der Klartexte und gibt dem Angreifer den verschlüsselten Text
* der Angreifer muss entscheiden, welcher seiner beiden Klartext verschlüsselt wurde

Dieser Sicherheitsbegriff nennt sich CPA-Sicherheit

RSA gilt als unsicher, weil es das Jacobi-Symbol des Klartexts verrät. Der Angreifer kann das obige Spiel immer mit Wahrscheinlichkeit 1 gewinnen, indem er einfach einen Text mit Jacobi-Symbol 1 und einen mit Jacobi-Symbol -1 wählt. Da RSA das Jacobi-Symbol des Klartexts verrät, kann er aus dem verschlüsselten Text dann sehen, welcher Klartext gewählt wurde. Dass das in der Praxis relevant ist, hat Daniel Bleichenbacher eindrucksvoll gezeigt.

Bei hybrider Verschlüsselung macht man genau das, was ich im ersten Post schon gesagt habe: Man verschlüsselt zufällige Texte. Bei hybrider Verschlüsselung wird doch ein zufälliger Schlüssel für ein symmetrisches Verfahren bestimmt, meinetwegen ein AES-Schlüssel. Da die Jacobi-Symbole gleichverteilt sind, ist die Wahrscheinlichkeit, das Jacobi-Symbol richtig zu raten, bei einem Zufallstext genau 0.5. Deshalb hilft es dem Angreifer nicht. Der eigentliche Klartext wird bei hybriden Verfahren eben nicht mit RSA, sondern mit TwoFish, AES oder sonstwas verschlüsselt.

Ergo: Ein Mail-Client verschlüsselt niemals Nachrichten mit RSA, sondern nur zufällig bestimmte Schlüssel für ein ganz anderes Verfahren, mit dem die Nachricht dann verschlüsselt wird.


----------



## ZoOo4 (3. Dez 2013)

Puh, danke für die ausführliche Antwort. Den Stoff muss ich erstmal durchdringen . Morgen habe ich einen Termin mit meinem Prof. Dann werde ich das erstmal mit ihm besprechen.


----------

