mirror of
https://github.com/Steffo99/appunti-magistrali.git
synced 2024-11-24 11:14:18 +00:00
29 lines
2 KiB
Markdown
29 lines
2 KiB
Markdown
[[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|salted]] viene poi passata a una [[funzione di password hashing|password-based key derivation function]], 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|salted]] viene poi passata a una [[funzione di password hashing|password-based key derivation function]], 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.
|