Dove si trova l'hash delle password? [duplicare]

0

Il modo in cui comprendo la sicurezza della password è che l'utente immette una password, che viene quindi convertita utilizzando una funzione hash. Il sito Web quindi lo confronta con l'hash memorizzato per vedere se è corretto.
In questo modo viene memorizzato solo l'hash, quindi se un utente malintenzionato scopre che non ha la password originale. Dove viene convertito esattamente in un hash? Se è fatto clientide, mi aspetterei che un
l'utente malintenzionato che conosce l'hash potrebbe modificare il codice clientide per inviarlo direttamente al server.
Ma se fatto server, allora la password in chiaro deve essere inviata attraverso la rete,
che sembra un problema di sicurezza se un utente malintenzionato è in grado di ascoltare la connessione.
Quale di questi metodi viene utilizzato e in che modo vengono affrontati i potenziali problemi di sicurezza?

    
posta Carmeister 16.08.2014 - 19:53
fonte

2 risposte

2

Sì, la tua prima risposta è corretta - se fatto sul lato client, hai quindi essenzialmente l'hash della password è la password.

La pratica abituale è quella di farlo da server tramite HTTPS. Sì, le persone sul lato server possono in linea di principio vedere la tua password, ma hanno anche pieno accesso a tutti i dati che la tua password può vedere / modificare. Questo è un ottimo motivo per non riutilizzare mai le password in siti diversi e utilizzare password casuali per ogni sito mantenuto in un gestore di password crittografato (come keepass).

Nota c'è una terza opzione, il Secure Remote Password Protocol che è più complicato, ma previene entrambi gli attacchi descritto sopra. Richiede l'hashing lato client e lato server e utilizza l'esponenziazione modulare (simile a uno scambio di chiavi diffie-hellman). Certo, al momento l'SRP non è ampiamente utilizzato in quanto non è ancora integrato nei browser (e farlo in JS consente un attacco diretto dal lato server modificando il JS in qualcosa che invia la password in chiaro dal browser ).

    
risposta data 16.08.2014 - 20:15
fonte
0

Nelle webapp normalmente è fatto sul lato server. La password in chiaro viene inviata al server, quindi il codice del server si salda e lo si blocca.

Secure Remote Password è un approccio molto migliore, ma è ancora soggetto a attacchi di forza bruta con password frequenti per recuperare la password cleartext dell'utente se l'attaccante ha accesso al server.

Un approccio ancora migliore è il rafforzamento segreto multipartitico, che si traduce in una credenziale crittografica strong (basata su una password senza spazio di archiviazione lato client) che non può essere attaccata dal dizionario a meno che tutte le parti non colludano contro l'utente. Tuttavia, non sono a conoscenza di implementazioni largamente adottate.

    
risposta data 17.08.2014 - 04:39
fonte

Leggi altre domande sui tag