Sto lavorando con molte altre persone nello scrivere software che richiede l'autenticazione prima che acceda alle risorse. Per autenticare, abbiamo ideato la seguente strategia.
- Il client invia uno SHA1 di un nome utente al server
- Il server risponde con l'ID univoco dell'utente, che è una chiave pubblica in una coppia di chiavi RSA
- Il client crea un hash SHA256 dei dettagli di accesso di un utente e lo crittografa utilizzando l'ID univoco.
- Se l'hash corrisponde all'hash dei dettagli di accesso di un utente, il server risponde con un valore specifico e registra il timestamp del momento in cui è stata inviata la risposta.
- Il client risponde crittografando il timestamp nel momento in cui riceve la conferma e lo invia al server.
- Se il timestamp inviato dal client si trova entro x secondi dal timestamp registrato del server, il server considera il client autenticato.
Attualmente la comunicazione client-server avverrà utilizzando SSL / TLS su TCP.
La mia domanda è la seguente: questo metodo è abbastanza sicuro e, in caso contrario, cosa si può fare per migliorarlo?