Questo schema password è sicuro come l'autenticazione a chiave pubblica?

-1

Considera il seguente algoritmo ipotetico per il login basato su password per, diciamo, SSH:

  1. Il client invia username e client_auth = HMAC(password, client_timestamp) al server.

  2. Il server verifica client_auth e risponde con server_auth = HMAC(password, server_timestamp) .

  3. Il client verifica server_auth e inizia la comunicazione crittografata utilizzando key = HMAC(HMAC(password, client_auth), server_auth) condivisa.

Un'altra cosa: supponiamo che password sia calcolato da un segreto nascosto appartenente al client, come segue: password = HMAC(private_secret, public_server_address) .

Il client utilizza questo unico segreto nascosto per generare password per tutti i servizi che utilizza.

La mia domanda è:

Questo schema è sicuro come l'autenticazione a chiave pubblica? E se no, qual è il vantaggio dell'autenticazione a chiave pubblica?

(Ovviamente, supponiamo che private_secret sia stato generato con sufficiente entropia.)

    
posta Mehrdad 06.12.2017 - 14:16
fonte

2 risposte

4

Il vantaggio dell'autenticazione della chiave pubblica è che il server ha solo bisogno della chiave pubblica per verificare se il client è quello richiesto, ovvero quello con la chiave privata che corrisponde alla chiave pubblica. Inoltre, poiché la chiave privata non può essere praticamente derivata dalla chiave pubblica, un utente malintenzionato che compromette il server non può utilizzare le informazioni acquisite per identificarsi come client.

Nella proposta invece il server e il client necessitano di una password condivisa in modo che il server possa validare il client. Mentre si tenta di proteggere questa password durante il trasporto, deve comunque essere memorizzata in qualche modo sul server. Pertanto, un utente malintenzionato che compromette il server può estrarre la password. Poiché la password è tutto ciò che è necessario a un utente malintenzionato per identificarsi come client, lo schema proposto è molto meno sicuro dell'autenticazione basata su chiave pubblica.

    
risposta data 06.12.2017 - 14:32
fonte
1

Questo è uno schema di hashing della password lato client che utilizza i peperoni invece dei sali e non fa nulla per proteggere la password memorizzata sul server.

E l'uso dello stesso segreto su tutti gli accessi dell'utente non rende questo diverso dall'usare la stessa password su tutti i siti. Questo solo dettaglio presenta numerosi problemi di usabilità e implementazione, se si desidera cambiare questo segreto, ad esempio.

Se si rilascia il dettaglio della "password globale", viene lasciato uno schema di hashing della password che sarebbe meglio sostituire con un processo di hashing della password standard.

    
risposta data 06.12.2017 - 16:00
fonte

Leggi altre domande sui tag