hallo Java-forum
Ich zerbreche mir gerade über folgendes Problem den Kopf:
Es geht um die Benutzeranmeldung von Clients an einen Server. Dazu wird momentan beim Server eine Funktion aufgerufen, welche den Login-Name und Passwort übergeben bekommt und der Server fragt dies dann bei der Datenbank ab. Das Problem dabei ist, dass momentan die Kommunikation zwischen Client und Server unverschlüsselt ist und so das Passwort im Klartext übertragen wird.
Als eine erste Lösung wird das Passwort symmetrisch mit AES verschlüsselt, wobei der dazu verwendete Key (salt) fest im Code vom Server und Client verdrahtet ist. Nun ist es aber nicht gewünscht, dass der Key im Code steht.
Als erstes habe ich an ein Hybrides-Verfahren aus RSA und AES gedacht:
So... das Problem was ich bei diesem Ansatz sehe ist: Wie authentifiziert sich der Server? (um sicher zu stellen, dass wirklich mit dem Server kommuniziert wird und niemand die Passwörter klauen will = Sicherheitslücke?)
Ich habe auch schon an ein Signaturverfahren mittels PKI gedacht. Allerdings ist da, glaube ich, der Aufwand zur Verwaltung der gültigen Signaturen für die Clients und den Server zu hoch.
Das selbe Problem bei SSL-Sockets: dafür müsste man auch die gültigen Signaturen bei Client und Server verwalten.
Hat jemand vielleicht eine Idee, wie man das Problem der Verschlüsslung/Authentifizierung lösen könnte?
Ich zerbreche mir gerade über folgendes Problem den Kopf:
Es geht um die Benutzeranmeldung von Clients an einen Server. Dazu wird momentan beim Server eine Funktion aufgerufen, welche den Login-Name und Passwort übergeben bekommt und der Server fragt dies dann bei der Datenbank ab. Das Problem dabei ist, dass momentan die Kommunikation zwischen Client und Server unverschlüsselt ist und so das Passwort im Klartext übertragen wird.
Als eine erste Lösung wird das Passwort symmetrisch mit AES verschlüsselt, wobei der dazu verwendete Key (salt) fest im Code vom Server und Client verdrahtet ist. Nun ist es aber nicht gewünscht, dass der Key im Code steht.
Als erstes habe ich an ein Hybrides-Verfahren aus RSA und AES gedacht:
- der Client erfragt beim Server den PublicKey
- Server erstellt Private- und PublicKey und sendet den PublicKey an Client
- Client erzeugt zufälligen SecretKey (AES) und verschlüsselt diesen mit dem PublicKey des Servers
- Client sendet SecretKey an Server
- Server entschlüsselt den SecretKey mit seinem PrivateKey
- --> Client und Server kennen den SecretKey (AES)
- --> alte Methode vom ersten Ansatz kann genutzt werden
So... das Problem was ich bei diesem Ansatz sehe ist: Wie authentifiziert sich der Server? (um sicher zu stellen, dass wirklich mit dem Server kommuniziert wird und niemand die Passwörter klauen will = Sicherheitslücke?)
Ich habe auch schon an ein Signaturverfahren mittels PKI gedacht. Allerdings ist da, glaube ich, der Aufwand zur Verwaltung der gültigen Signaturen für die Clients und den Server zu hoch.
Das selbe Problem bei SSL-Sockets: dafür müsste man auch die gültigen Signaturen bei Client und Server verwalten.
Hat jemand vielleicht eine Idee, wie man das Problem der Verschlüsslung/Authentifizierung lösen könnte?