È sicuro avere un sale o generarlo e inviarlo via etere?

2

Per autorizzare l'utente sto mandando un hash salato over-the-air. La mia domanda è più sicura per ottenere sale generati casualmente (ma inviare non crittografati), o avere un salt sul client (applicazione desktop) e server?

    
posta pixel 16.03.2012 - 03:38
fonte

2 risposte

8

Per sicurezza, nessuno dei due è sicuro. L'invio di un hash dal client al server di autenticazione non fa nulla per proteggersi dallo sniffing della password perché l'hash funge da password. L'unica cosa che invia un hash consiste nel mitigare gli attacchi di riutilizzo della password (ad esempio impedire a un utente malintenzionato di utilizzare la stessa password sul sito A per il sito B).

Tieni presente che salare una password attenua gli attacchi dei tavoli arcobaleno e nulla più. Salt non è considerato informazione privata, quindi crittografare il sale è un'operazione inutile che non fa nulla per aumentare la sicurezza del processo di autenticazione.

Senza usare la crittografia, o avendo una linea dedicata, non è possibile inviare token di autenticazione in chiaro e mantenere la sicurezza. Attiva SSL per creare un ambiente infinitamente più sicuro.

    
risposta data 16.03.2012 - 04:09
fonte
5

Questo non è un buon approccio per autenticare l'utente. Se si desidera utilizzare le password per autenticare l'utente, è necessario innanzitutto stabilire una connessione sicura tra il client e il server, utilizzando SSL o TLS. (Assicurati che il client stia verificando l'identità del server, utilizzando il certificato del server.) Ad esempio, potrebbe utilizzare HTTPS . Quindi, trasmettere la password dal client al server su questo canale sicuro. Il server può quindi verificare se la password è valida.

Per memorizzare la password, il server deve utilizzare bcrypt, scrypt o PBKDF2 su hash la password prima di memorizzarla . Includere un sale casuale. Scegli il numero di iterazioni per fare in modo che l'operazione di hashing della password richieda un certo periodo di tempo: ad esempio, 10 ms o 100 ms. Ciò garantisce che la ricerca delle password per tentativi ed errori richiederà più tempo.

Quando l'utente seleziona inizialmente la propria password, potresti prendere in considerazione l'inclusione di un misuratore della forza della password, per incoraggiarli a scegliere una password sicura. Potresti anche fornire un piccolo widget che pre-genera automaticamente una password casuale strong per loro e suggerisce di usarlo. Includi un pulsante (magari etichettato "Usalo!") Per copiarlo nel campo della password, per facilitare all'utente l'adozione della password suggerita che hai generato per loro.

Inoltre, potresti prendere in considerazione l'inclusione di alcuni limiti di velocità per rendere più difficile trovare le password delle persone provandole. Vedi qui e qui e qui per la discussione di questo argomento.

    
risposta data 16.03.2012 - 07:50
fonte

Leggi altre domande sui tag