Sto progettando un servizio che, tra le altre cose, memorizza le informazioni sensibili. Per garantire l'accesso non autorizzato a queste informazioni, sarebbe crittografato con una chiave derivata dalla loro password (PBKDF2). La password verrà memorizzata in un hash BCrypt + formato salato nel database. Non viene mai memorizzato in testo semplice.
La natura delle informazioni salvate è tale che è necessaria una password complessa. Alcuni siti Web costringono i propri utenti a creare password con entropia estesa applicando rigorose linee guida sui caratteri. Queste password complesse possono portare al riutilizzo della password su diversi siti Web [1]. Questa è A Bad Thing ™ [2].
Preferirei che i miei utenti selezionassero una password strong e poco probabile da riutilizzare o già in uso su un altro servizio Web meno sicuro. Come tale, stavo pensando di utilizzare uno schema di password [3] simile a XKCD per i miei utenti nella loro lingua nativa.
L'utente verrebbe presentato con 4-5 parole diverse da un elenco di parole di grandi dimensioni con più di 6 caratteri (nessuna parola con caratteri speciali inclusi, solo ASCII). La finestra di dialogo per l'inserimento della password sarebbe stata formattata con 4-5 campi invece del normale campo singolo, per rinforzare il paradigma della passphrase. Al momento della registrazione la password può essere rigenerata a piacimento, per dare all'utente la possibilità di selezionare una passphrase composta da parole che possano facilmente ricordare. L'utente non può inserire le proprie parole.
So per esperienza personale che CreeperHost [4] utilizza già questo metodo, anche se con un singolo campo password con quattro parole inglesi concatenate.
Le mie domande sono le seguenti:
- Questo metodo sarebbe più sicuro / efficace rispetto a consentire agli utenti di sceglierne uno proprio?
- Qualcuno ha qualche esperienza con l'implementazione di uno schema simile? È stato efficace?
- La divisione del campo della password in più di un campo distinto è soddisfacente o espone troppe informazioni?
Sto cercando in particolare le risposte relative all'applicazione del mondo reale di questo metodo specifico, se ce ne sono. Conosco i punti di forza e di debolezza teorici di questo metodo di generazione di password.