Considera il seguente algoritmo ipotetico per il login basato su password per, diciamo, SSH:
-
Il client invia
usernameeclient_auth = HMAC(password, client_timestamp)al server. -
Il server verifica
client_authe risponde conserver_auth = HMAC(password, server_timestamp). -
Il client verifica
server_authe inizia la comunicazione crittografata utilizzandokey = 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.)