Oscillazione password in una configurazione di bilanciamento del carico

3

Ho svolto alcune ricerche sulle implementazioni di hashing delle password e vorrei sapere se è possibile avere due hash delle password dei server nello stesso database?

Mi sono imbattuto nella libreria Bcrypt.net, che fornisce 2 metodi per l'hash e la verifica. Quello che mi intriga è ciò che fa nella fase di hashing. Avevo l'impressione che il sale dovesse essere casuale, e con questa libreria il sale è memorizzato nella stessa stringa della password con hash. Tuttavia, ho provato a fare hashing sul mio desktop, quindi a verificare su un'altra macchina, e sembra controllare. Quindi cosa sta succedendo?

Dovrei pensare di usare un'altra implementazione hashing per questa configurazione di bilanciamento del carico?

    
posta Esteri 28.08.2012 - 13:45
fonte

1 risposta

2

Questo dovrebbe andare bene.

Ho intenzione di dividere la domanda in due parti:

1. Come funziona bcrypt in termini di utilizzo di sale e amp; archiviazione?
I sali vengono utilizzati per una serie di motivi, principalmente per prevenire attacchi da tavolo arcobaleno e creare hash unici per password non univoche.

Le tabelle arcobaleno sono enormi dizionari di hash e il loro testo in chiaro. L'idea è di cercare l'hash e trovare il testo in chiaro associato. Per rendere questo difficile, ogni password viene salata con un valore univoco, assicurando che ogni password deve essere crackata separatamente.

Se due utenti hanno la stessa password, senza sale, gli hash saranno gli stessi. Questo ci apre agli attacchi casuali. Se due utenti hanno la stessa password, ma diversi sali, gli hash saranno diversi.

Il problema dei sali è che puoi memorizzarli in testo semplice , perché non è necessario che siano più segreto dei tuoi forti hash delle password. In quanto tale, bcrypt salva semplicemente il sale in testo semplice all'interno dell'hash:

$2a$05$TwentyTwoCharsForASalt$e2uDLvp1Ii2e./U9C8sBjqp8I90dH6hi

Questo è diviso nei seguenti token:

  • Il prefisso 2a per identificare l'hash come una cripta blowfish (cioè bcrypt)
  • Un fattore di lavoro a due cifre (in genere limitato da 04 a 31)
  • Un valore salato di 22 caratteri, dai valori a-z A-Z 0-9 . /
  • Il valore hash.

Come tale, i parametri necessari per verificare l'hash (incluso il salt) sono memorizzati all'interno della stringa hash stessa. Quando viene chiamata la funzione di verifica, convalida il prefisso, estrae il fattore di lavoro e sale, calcola l'hash della password specificata (utilizzando il fattore di lavoro e il sale) e confronta il risultato con l'hash memorizzato nella stringa hash specificata.

2. Posso farlo in uno scenario di bilanciamento del carico? Sì. Non ci sono problemi qui. Basta calcolare l'hash su una macchina e inserirla nel database. Non ha senso cercare di distribuire una singola operazione di hash su più macchine usando il cloud voodoo. Basta modificare il tuo fattore di lavoro per adattarlo alle tue prestazioni e ai requisiti di sicurezza e farne a meno. Se il tuo server (s) non può prenderlo, rilasciare il fattore di lavoro nel codice di creazione hash. Poiché è memorizzato nell'hash, i nuovi hash utilizzeranno automaticamente il valore più basso e gli hash precedenti non saranno interessati.

Se davvero è veramente necessario farlo su più server, configura un sistema di distribuzione del lavoro in modo che ogni hash sia calcolato su una casella disponibile. Tuttavia, a quel punto direi che hai problemi più grandi delle semplici password di hashing.

I problemi di concorrenza nel tuo sistema di database non sono correlati alla funzione di hash che stai usando, quindi se hai problemi con questo ti suggerisco di pubblicare una domanda su Amministratori di database .

    
risposta data 28.08.2012 - 15:34
fonte

Leggi altre domande sui tag