2 KiB
Protocollo di augmented password-based key exchange.
Sfrutta una oblivious pseudo-random function e una funzione di password hashing.
Funzionamento
Registrazione
L'user agent invia il suo username e la sua password blinded al servizio di autenticazione, che ci aggiunge un salt e la invia indietro assieme alla sua chiave pubblica.
La password salt viene poi passata a una funzione di password hashing, ottenendo una "master key".
In seguito, l'user agent genera una coppia di chiavi, e concatena la chiave privata generata alla chiave pubblica del server, per poi criptarle, usando crittografia simmetrica moderna con la "master key" come chiave.
Infine, al server viene inviata la chiave pubblica generata e il precedente dato cifrato, che vengono immagazzinati assieme al salt e all'username dell'utente.
Login
L'user agent invia il suo username e la sua password blinded al servizio di autenticazione, che ci aggiunge un salt e la invia indietro assieme alla chiave pubblica generata e al dato cifrato.
La password salt viene poi passata a una funzione di password hashing, ottenendo la stessa "master key" ottenuta in fase di registrazione.
La "master key" viene usata per decifrare il dato, riottenendo così la chiave pubblica del server e la chiave privata generata.
L'user agent è ora in grado di effettuare uno scambio di chiave basato su Diffie-Hellman con la chiave privata generata e la chiave pubblica del servizio di autenticazione.
Allo stesso modo, il servizio di autenticazione è in grado di effettuare lo stesso scambio di chiave basato su Diffie-Hellman, usando la sua chiave privata e la chiave pubblica immagazinata.
In questo modo, le due parti hanno una chiave simmetrica con cui comunicare.