Registrazione: hash email e verifica di un solo account per email

1

Sto usando una funzione di registrazione che blocca l'e-mail in PBKDF2 con un Salt casuale e unico ogni volta. L'email hashes e il suo salt vengono salvati nel DB. Nessun problema. Il problema è che ora voglio assicurarmi che gli utenti creino un solo account per email. Ovviamente per verificare che ho bisogno di controllare il mio DB ed è qui che inizia il problema. Perdo in sicurezza o in tempo.

Perché come vedo io ho 2 scelte:

1 - Modifico il mio metodo di hash e uso un comune Salt per tutte le email. Il che mi fa perdere un po 'di sicurezza.

o

2 - Ho cancellato l'e-mail con tutti i Sali dal DB e controllo le corrispondenze. La mia ipotesi è che questo sarà terribilmente lento.

Quindi la mia domanda è:

  • Che cosa dovrei fare? Ottimizza la sicurezza o il "tempo"?
  • Forse le email di hashing con sali unici e casuali in PBKDF2 sono troppe? Se sì, quale metodo di hashing dovrei usare?
  • C'è qualche altra soluzione?

PS: non ho inserito alcun codice perché penso che sia più una discussione teorica, ma se il codice è necessario fammelo sapere, lo aggiungerò.

    
posta user1606963 17.08.2012 - 15:28
fonte

2 risposte

2

Memorizza un "riassunto" di testo chiaro di ciascun indirizzo e-mail accanto all'email effettiva con hash. Il digest dovrebbe contenere abbastanza informazioni per ridurre il numero di candidati a una manciata ragionevole (direi che un fattore di 1000 o più non è irrealistico), ma non abbastanza da indovinare l'intero indirizzo email. Ad esempio, è possibile utilizzare i primi due caratteri della parte utente dell'indirizzo, due caratteri dal nome dominio e la parte TLD; ciò trasformerebbe '[email protected]' in '[email protected]'.

Trovare le collisioni diventa ora un processo in due fasi: innanzitutto, trova tutte le voci con i digest corrispondenti, quindi esegui il confronto dell'hash reale solo su quelle. Invece di scaricare tutti gli hash dal DB per ciascun controllo, li pre-filtrare fino a circa 1/1000. Questo è un miglioramento significativo, e mentre scambi una qualche sicurezza per questo, è meglio di entrambe le alternative.

    
risposta data 17.08.2012 - 16:30
fonte
0

Se il tuo scopo è semplicemente quello di proteggere le e-mail, è sufficiente un semplice algoritmo di hashing. Non ha senso aggiungere anche un salt casuale per rendere il sistema più sicuro, poiché non si memorizzano informazioni sensibili.

Per la maggior parte degli algoritmi di hashing, la possibilità di una collisione è negligente. Quindi nessuna email dovrebbe essere in grado di creare lo stesso hash. In questo modo, devi solo rendere tale colonna univoca per rilevare e-mail duplicate.

    
risposta data 13.05.2013 - 15:29
fonte

Leggi altre domande sui tag