Si tratta di un metodo sicuro per l'autenticazione dei client?

0

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?

    
posta LMS 13.03.2013 - 19:44
fonte

1 risposta

9

Che cosa stai cercando di ottenere? In particolare, perché dovresti creare una nuova coppia di chiavi RSA?

Usa SSL ; quello è buono. Con SSL, il client ha una certa garanzia che dialoga con il server giusto e che ciò che il client invierà sarà leggibile solo da quel server. A quel punto , invia semplicemente l'accesso utente e la password attraverso il tunnel. Non c'è bisogno di giocherellare con timestamp e chiavi pubbliche aggiuntive e hashing e whatsnot. SSL è sufficiente.

Sul lato server, memorizza un hash della password , come seconda linea di difesa (non lo fai voglio qualcuno che abbia una rapida occhiata al database del server per ottenere immediatamente un elenco completo di password valide). Ma questo è sul server e irrilevante per il protocollo attuale. Il protocollo è: il client si connette al server con SSL, il client invia login + password nel tunnel SSL, il server verifica la password ed è felice (o meno).

Se la protezione SSL non è sufficiente per te, allora il client o il server (o entrambi) sono sotto controllo ostile e hai maggiori preoccupazioni, e non c'è altro che puoi fare per risolverlo. I tuoi giochi con chiavi extra e hash e timestamp apportano molta complessità e costi aggiuntivi, senza alcun vantaggio per la sicurezza.

    
risposta data 13.03.2013 - 19:59
fonte

Leggi altre domande sui tag