Le password di hashing nel mio caso d'uso migliorano la sicurezza e perché?

1

Sto sviluppando un'applicazione la cui architettura è organizzata come segue:

Session host <---> Central relay server <---> Session client

Tutta la comunicazione tra l'avvio di session host e il successivo collegamento di session client viene inoltrata attraverso il server centrale.

Il session host deve essere protetto in modo tale che non sia possibile accedervi senza una chiave di sessione pubblica che lo identifica e una password privata che ha stipulato in anticipo.

In effetti nessuna comunicazione che dovrebbe mai essere possibile con session host a meno che session client possa dimostrare al server centrale che è autorizzato, vale a dire che l'autenticazione dovrebbe avvenire sul server centrale stesso.

Quindi nel flusso di lavoro che ho in mente:

  1. La session host si collega al server centrale su TLS, inviando un hash della sua password scelta.

  2. Il server centrale risponde con una chiave di sessione generata che identifica l'host di sessione.

  3. La session client si connette al server centrale specificando la chiave di sessione e l'hash della password tentata.

  4. Il server centrale controlla gli hash per una corrispondenza, se c'è una corrispondenza, i messaggi di session client s possono passare a session host , se non c'è una corrispondenza, l'autenticazione ha fallito.

Quindi la mia domanda è la seguente.

L'hashing della password in questo modo fornisce una sicurezza aggiuntiva rispetto all'invio delle password dichiarate e tentate? Come devo gestire la salatura?

Sono propenso a pensare che valga la pena poiché significa che la password completa non viene mai inviata attraverso il filo, anche se su TLS. Non è nemmeno memorizzato nella RAM sul server centrale. Protegge la password degli utenti, ma non offre alcuna sicurezza aggiuntiva per la sessione in quanto l'hash diventa la password.

Grazie

    
posta user3560041 26.01.2015 - 17:22
fonte

3 risposte

1

Come hai detto tu stesso, l'hash diventa la password in questo caso. Quindi non è più o meno sicuro. E hai nuovamente identificato correttamente che l'unico vero vantaggio è che l'utente non può esporre la propria password in caso di riutilizzo. Personalmente sarei tentato di generare password per l'host e poi fornire loro i dettagli per inviare il client.

Ma in realtà, è importante solo se i tuoi utenti inseriscono le password effettive, usate e di altri luoghi nella casella della password. Quindi la soluzione migliore se non ti piace quella sopra potrebbe essere la parola un po 'in modo diverso in modo che si attaccano una frase o qualsiasi altra cosa lì invece di una password.

    
risposta data 26.01.2015 - 17:38
fonte
3

Nel tuo scenario gli hash aggiungono poca sicurezza perché il client invia l'hash al server centrale, tuttavia il client deve inviare la password tentata, il server centrale quindi verifica l'hash della password rispetto all'hash inviato.

L'hashing è molto importante in questo scenario, perché potresti avere un utente malintenzionato. L'utente malintenzionato ha un account e una password reali, quindi si connette normalmente al server host tramite il server centrale. È quindi connessa al server host e se è in grado di sfruttare una vulnerabilità in questo server, può scaricare le password in chiaro di tutti gli altri utenti. La salatura dovrebbe essere gestita normalmente, ovvero l'host invia al server centrale un hash e un salt, e il client invia una password in chiaro su TLS e il server verifica che la password e il sale corrispondano.

    
risposta data 26.01.2015 - 17:58
fonte
0

So che questa è una vecchia domanda, ma ho pensato che avrei pesato.

Normalmente il client invia "X" (password in testo semplice), che viene convertita dal server in "Y" (hash) e archiviata. Il vantaggio è che la cosa conosciuta e trasmessa dal client non è la stessa cosa che viene memorizzata nel database del server.

Quello che penso tu stia proponendo è che il cliente prenda "Y" e lo invii al server, dove è memorizzato come "Y". Quindi stai essenzialmente memorizzando le password come testo semplice, anche se quel testo in chiaro sembra essere un hash. Non è una buona pratica, anche se non penso che sia necessariamente negativo in questo caso, dal momento che la password originale dell'utente non sarà esposta nel caso di una perdita di database. Detto questo, non vedo alcun aspetto positivo di questo approccio, dal momento che la connessione TSL codifica già la password in chiaro mentre attraversa il filo. Penso che il server dovrebbe sempre fare un po 'di salatura e hashing, anche se il client esegue anche un po' di hashing.

    
risposta data 05.05.2015 - 04:55
fonte

Leggi altre domande sui tag