Sto lavorando su un sito Web con account e desidero uno schema di accesso che non esponga le password o gli hash degli utenti in caso di un errore di sicurezza totale. Apprezzerei molto il feedback su questo schema di autenticazione:
- Il client recupera la richiesta di autenticazione dal server
- La password viene sottoposta a hash su 32 byte interi sul client
- Integer viene utilizzato per creare una coppia di chiavi, PK, utilizzando il generatore di coppie di chiavi statiche
- Viene generata la chiave di sessione temporanea, SK
- La sfida è firmata con PK
- SK.public e la firma della sfida sono crittografati con PK.private e la chiave pubblica del server
- Il cifrario viene inviato al server con nome utente
- Il server decrittografa il codice utilizzando la chiave pubblica associata per il nome utente, controlla la firma della sfida e consente di utilizzare SK.public per x time
Modifica: sono pazzo, questo non aggiunge alcun livello di sicurezza. Se il generatore è statico, non ha letteralmente alcun vantaggio su un hash. Questo era super ovvio e avrei dovuto prenderlo, ma è comunque un buon promemoria per non provare a creare nuovi protocolli a meno che tu non sappia davvero cosa stai facendo.