Questo documento propone il concetto di honeywords per rilevare se un database di password è stato compromesso.
Per quanto ho capito funziona così:
Si salvano n hash per ogni utente, uno che contiene effettivamente la vera password e n-1 che contengono le cosiddette honeywords (false password). L'hash della password corretta è memorizzato in un indice casuale tra gli hash di honeyword.
Se ora una di queste honeywords viene utilizzata in un tentativo di accesso invece della vera password, il server può vietare l'account, attivare un avviso silenzioso o reindirizzare l'attaccante a un honeypot di qualche tipo. In entrambi i casi il server saprà che il database delle password è stato compromesso.
Per verificare se la password è reale, il server determina l'indice dell'hash della password e contatta un altro server "sicuro" che conferma se questo è l'indice corretto per questo utente (o un indice honeyword).
Questo metodo aggiunge davvero vantaggi per la vita reale?
Questo è lo scenario di attacco dal documento, in cui si suppone che honeywords aiuti:
Stolen files of password hashes: An adversary is somehow able to steal the files of password hashes, and solve for many passwords using offline brute-force computation. He may more generally be able to steal the password hash files on many systems, or on one system at various times.
In questo scenario l'attaccante ha ovviamente già ottenuto l'accesso al sistema.
- Avrebbe davvero bisogno dei dati della password, comunque?
- Se è stato in grado di accedere all'archivio delle password, non sarebbe probabilmente in grado di accedere anche all'archivio "sicuro", che identifica le password reali? La semplice distrtibuting dell'autenticazione su due server non mi sembra molto più sicura.
- Se il sistema compromesso può scoprire qual è l'indice giusto, sicuramente anche l'attaccante può.
Forse mi manca qualcosa nel concetto, ma non sarebbe più utile assicurarsi che le password siano state cancellate in modo sicuro e il primo livello di sicurezza tenga l'attaccante al primo posto?
Le parole d'ordine sono degne di considerazione per inserirle in un'applicazione web reale?