Moin Moin!
Ok. Mein Problem ist jetzt: Wie generiere ich ein solches Schlüsselpaar?
Library-Funktion oder externes Programm.
Und bekommt jeder User einen eigenen Public-Key oder ist der bei allen Usern gleich (die Anzahl der Anwender wird relativ klein sein)?
Der Key identifiziert den User. Also einer pro User.
Den Private-Key sicherst du mit einem Passwort, nur unter Verwendung dieses Passwortes lässt sich der Private-Key später verwenden, somit hast du gleichzeitig deine lokale Passwort-Funktion, also die Anwendung vor Zugriff durch Unbefugte geschützt. Wenn du alle Textdateien ebenfalls mit dem Private-Key verschlüsselst, so sind auch diese entsprechend geschützt.
Wie kann ich das verschlüsseln? Gibt es dazu Klassen, die ich in mein Programm einbinden kann? Die gleiche Frage bei der Generierung des Schlüsselpaars: Wie erzeuge ich das? Muss ich das irgendwie selber schreiben?
Public Key Verfahren sollte es als fertige Libraries geben.
Damit die Anwendung nun Zugriff auf den Server erhält, muss der Public-Key an den Server gesendet werden, dies kann automatisch geschehen, allerdings muss da noch irgendeine Instanz (z.B. DU, wucher wichtel *g*) kontrollieren, ob dies wirklich der erwartete Public-Key ist und nicht ein Man-in-the-middle dir einen anderen Public-Key geschickt hat.
Aber die Entschlüsselung funktioniert doch nur mit dem richtigen Public-Key, oder? Dann wäre es doch egal wenn ein Man-in-the-middle es mit falschen Public-Keys versucht, oder?
Du mußt EINMAL den Public Key zum Server transportieren und dabei gewährleisten, dass nicht ein Dritter den Public Key gegen *seinen* Public Key austauscht. Ein zweiter Kanal wäre hilfreich. Zum Beispiel läßt Du im Programm den Hash des Keys anzeigen und per Telefon-Hotline mit dem auf dem Server angekommenen Hash vergleichen. Oder Du benutzt eine bereits vorhandene sichere (verschlüsselte) Verbindung. Das artet leider schnell in ein Chicken-and-Egg-Problem aus.
Alexander
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".