Mein Modell ist eines, bei dem ich mehrere Clients habe, die mit einigen (aber nicht allen) anderen Clients sprechen möchten.
Alle Nachrichten werden über einen Server gesendet.
Nur die beiden miteinander kommunizierenden Clients sollten die Nachricht kennen. Daher sollten der Server UND die anderen Clients nicht in der Lage sein, herauszufinden, welche Nachricht gesendet wurde.
Die Kommunikation zwischen zwei Clients kann mehrmals am Tag beginnen und enden.
Nachrichten sind Klartextnachrichten mit möglicherweise unbegrenzter Länge, aber wahrscheinlich weniger, denken Sie an Nachrichten im SMS-Stil.
Wie soll ich unter diesen Umständen die Nachrichten verschlüsseln? Es macht mir nichts aus, zusätzlichen Code zu schreiben, wenn dies zu einer besseren Geschwindigkeit oder Effizienz führt.
Ich kenne die groben Grundlagen der Funktionsweise von RSA und AES, kann aber nicht herausfinden, was am besten ist.
Wenn Sie ein öffentliches / privates Schlüsselpaar für RSA generieren, gibt es eine Situation, in der Sie ein neues Paar generieren müssten? Oder kann ein Client einen öffentlichen Schlüssel haben und jedem, der mit ihm sprechen möchte, denselben Schlüssel geben, und nur er kann (jemals) die Nachrichten lesen, aber er speichert den öffentlichen Schlüssel für alle zukünftigen Nachrichten?
Oder sollte ich einen separaten symmetrischen AES-Schlüssel für zwei Clients haben und diesen einfach teilen, wenn der Kontakt zum ersten Mal initiiert wird, und diesen für immer verwenden. Gibt es wieder Umstände, unter denen dies erneut generiert werden müsste?
Wie würde ich die Schlüssel speichern, damit sie bestehen bleiben, wenn der Client abstürzt / herunterfährt / neu startet?