Considera il seguente algoritmo ipotetico per il login basato su password per, diciamo, SSH:
-
Il client invia
username
eclient_auth = HMAC(password, client_timestamp)
al server. -
Il server verifica
client_auth
e risponde conserver_auth = HMAC(password, server_timestamp)
. -
Il client verifica
server_auth
e 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.)