C# Chat mit RSA Verschlüsselung

Tech-Essen

Mitglied
Hallo,
ich möchte mit C# ein Peer-To-Peer Chat erstellen, der mit RSA gesichert ist. Leider war ich nicht in der Lage in mein Chat-Programm die RSA-Verschlüsselung einzubauen. Am besten wäre es, wenn zwei Personen an zwei Computern Textnachrichten senden, empfangen, sowie ver-/ und entschlüsseln könnten. Wenn man eine Nachricht erhalten hat, soll ein Event ausgelöst werden, bei dem alle aktiven Chatfenster überprüfen können, ob die IP zu deren Kommunikation passen, und dann den Text anzeigen.

Freue mich über schnelle und hilfreiche Antworten!
 

sheel

I love Asm
Hi

Mal unabhängig von der Verschlüsselung:

Man soll also bestimmten IPs Nachrichten senden können, und beim Empfänger sollen die Nachrichten gruppiert nach Sender-IP angezeigt werden. Zentralen Server gibt es keinen. Und Gruppenchats auch nicht. Oder...?
Falls ja, hoffentlich ist dir bewusst dass mehrere Leute die selbe IP haben können; eine Person auch mehrere, und dass die IPs sich über die Zeit ändern können/werden.
(Und etwas mit Benutzernamen, Kontaktanfragen, ignorierliste usw. wird bei dem System nie was werden, falls es mal ausgebaut werden soll)

Dann, zu den Events usw., es klingt dass da auch noch einige Fragen offen sind....?

Und zur Verschlüsselung...
Würde sehr von reinem RSA abraten. Weil:
a) Bevor zwei Benutzer chatten können müssen sie beide Keys generieren (das kann das Programm) und den Publicteil über einen verlässlichen (fälschungssicheren) Weg austauschen (das muss der Mensch selbst machen). Wenn eine Person mehrere Chatpartner hat wird für jeden ein eigener Key gebraucht.
Ist das akzeptabel...?
Als Benutzer würde mich das jedenfalls ärgern
b) RSA ist sehr langsam. Niemand verschlüsselt Nutzdaten mit RSA. (sondern mit zB. AES, und nur den Key dann mit RSA).
c) Verschlüsselung ist nicht alles. Was ist mit Fälschungssicherheit (MACs/Signs)? PFS? usw.usw.
...

Kurz, solange man keine speziellen Bedürfnisse und einige Erfahrung hat, eher eine der existierenden bekannten Protokolle nehmen. zB. TLS