Per impostare un canale sicuro con il server, utilizzo la seguente configurazione nella mia applicazione:
1.Generare una chiave AES casuale e una IV casuale
2.Encrypt AES Key, IV e le credenziali del cliente con chiave pubblica RSA
3.Invia al server
4. Il server decodifica usando la chiave RSA privata
5.Server verifica le credenziali
6.Server risponde con [(OK o FAIL) + salt casuale] crittografato con il tasto AES
7. Client verifica la risposta
8. Il canale di comunicazione è designato come autentico e la sessione è valida
9.Tutte le altre comunicazioni aziendali passano tramite lo stesso tasto AES fino alla fine della sessione (Disconnessione)
Ulteriori dettagli:
1.Le chiavi RSA pubbliche e private sono hardcoded e costanti per tutta la durata dell'applicazione, ovvero non avviene l'acquisizione di chiavi pubbliche da fonti esterne
2. Tutti i testi in chiaro noti come OK FAIL ecc. vengono inviati saltosamente
Credo che questa configurazione dovrebbe essere praticamente infallibile a meno che qualcuno non abbia accesso alle operazioni client o server (o interrompa RSA)
Esistono potenziali fori di loop in questa configurazione che non sono riuscito a realizzare o ignorare?