Sto costruendo un altro sito Web che richiede l'autenticazione dell'utente e della sessione. Questa volta voglio essere un paranoico di sicurezza completo e mi interessa se le password o le sessioni vengono rubate.
Ho pochi requisiti per la sicurezza dell'autenticazione della password:
- Le password non sono memorizzate nel server come testo in chiaro.
- L'attacco Brute Force e il dizionario offline diventano impossibili e inefficienti online.
- Proteggi contro l'attacco Man in the Middle.
- Proteggi contro l'attacco di replay.
Non sono sicuro che il seguente sistema nella foto che ho specificato soddisfi i requisiti che ho. Quindi ti sto chiedendo è sufficiente per fermare quegli attacchi?
So che questo non è sicuro contro Man nell'attacco del browser o keylogging, ma per quanto ne so è sicuro contro l'attacco Man in the Middle e penso che il nonce si occupi dell'attacco di replay. Penso che la password debba essere controllata online se è corretta e la forzatura bruta online può essere rallentata con i limiti di tempo della richiesta.
Questo elimina quasi completamente l'hacking delle password degli utenti via cavo e nel server? Dovrebbe essere usato un algoritmo di hash più strong per la memorizzazione delle password?
Una volta eseguita l'autenticazione, il server può leggere e sostituire questa chiave di sessione crittografata RSA ogni volta che lo desidera. Penso che il client non possa decrittografarlo né man in mezzo, perché non conoscono la chiave privata del server. Ovviamente la chiave di sessione richiede anche che nonce interrompa gli attacchi di replay, ma non l'ho appena scritto sulla foto.
So che SSL / TLS può essere dannatamente sicuro se configurato correttamente. Al momento ricevo A- come valutazione su ssllabs, perché dovrei rilasciare RC4 e utilizzare le suite GCM. So che SSL / TLS dovrà o dovrebbe bloccare gli attacchi man in the middle, ma voglio aggiungere RSA su di esso. Potrei anche aggiungere l'autenticazione a due o tre fattori, ma l'invio di sms non è economico.