Nel mio database, vorrei crittografare tutte le informazioni identificabili, incluso il nome utente, in modo che le persone con accesso al database non possano dedurre il nome utente effettivo (perché potrebbe potenzialmente indicare l'identità effettiva dell'utente).
Inoltre, gli utenti dovrebbero avere la possibilità di accedere.
Quale sarebbe la migliore strategia per raggiungere questo obiettivo?
Attualmente sto tagliando nome utente e password insieme (è corretto che non possa mai essere decifrato). Tuttavia, questo introduce la capacità di eseguire un attacco da tavolo arcobaleno (o?).
La mia prossima idea sarebbe quella di scartare una grossa parte dell'hash, abbastanza grande da far diventare inconcludente qualsiasi risultato di un attacco da tavolo arcobaleno. Ciò naturalmente introdurrebbe un tasso di collisione più elevato, il che è indesiderabile.
Quindi di nuovo, un attacco da tavolo arcobaleno sarebbe in grado di produrre una serie di candidati, il che non sarebbe positivo.
Esistono altre strategie conosciute per questo tipo di problema?