È possibile ottenere in modo sicuro password specifiche per sito da una password principale. Richiede, in particolare, una funzione unidirezionale deterministica : "deterministica" in modo che la password del sito possa essere ricalcolata, "a senso unico" in modo che non sia possibile ricalcolare la password principale da un sito - password specifica Come approssimazione del primo ordine, una funzione di hash crittografica fa il trucco.
Il sistema può essere migliorato rendendo la derivazione della password (da master a specifica del sito) configurabile slow , per evitare un attacco di dizionario efficiente (un sito malvagio potrebbe "provare" potenziali password master, a vedi se ottiene quello che hai usato). Un "hash lento" è un hash con molte iterazioni. Puoi anche aggiungere un salt : un dato che non è segreto, ma scelto casualmente in modo che due utenti distinti del tuo software di master-to-site-password non finiscano con lo stesso sito password se capita di utilizzare la password principale. I sali possono essere memorizzati in un file (non sono segreti), ma ciò impedirebbe di ricostruire tutte le password specifiche del sito dalla conoscenza della sola password principale (ad esempio il problema di ricordare , stanno aggiungendo il problema di backup dei dati ).
Questo è molto simile alla memorizzazione degli hash delle password sul lato server (per i quali le solite soluzioni sono bcrypt e PBKDF2 ). Il problema è reso più facile dal fatto che la password principale è "master". Dal momento che devi ricordare solo la password one , puoi anche renderla una password grande, grassa, casuale, ad alta entropia. Genera una sequenza di 17 lettere minuscole casuali, imparale e starai bene (perché 26 17 è circa 2 80 , e invocando 2 80 volte una funzione hash è al di là di ciò che è fattibile con la tecnologia attuale). Una password con lettere minuscole è facile da digitare, soprattutto sugli smartphone.
Altri hanno suggerito il software esistente che fa proprio questo.
Anche la tua idea di utilizzare una chiave RSA e password casuali crittografate funziona. Tuttavia, significa archiviazione . Se sei in viaggio e qualcuno ruba il tuo laptop (un evento sfortunato ma purtroppo non del tutto implausibile), allora non solo sei stato privato della tua macchina, ma hai anche perso le tue password, finché non acquisti una nuova macchina e recuperare il backup del file crittografato pieno di password. Questo può essere sconveniente. Derivare le password in modo deterministico dalla password principale significa che non le perderai mentre ricordi la password principale.
Inoltre, qualsiasi nuova password (per un nuovo sito) richiede di giocherellare con il file e i suoi backup, anche in questo caso qualcosa che potrebbe risultare difficile durante il viaggio.
L'uso di una memoria intermedia consente il rinnovo della password, ma perché lo faresti comunque? Il rinnovo della password è utile quando gestisci una grande organizzazione con centinaia di password e ritieni che alcune password siano deboli e alcune saranno interrotte. È un modo di contenere il danno e ha senso solo se è una proporzione non zero di password errate in ogni momento. Il rinnovo della password è una cosa dell'esercito di campo. Non ridimensiona : quando si scende a una singola password principale (il tuo caso), quella password è completamente non rotta o completamente infranta. Nel primo caso, non è necessario rinnovare la password principale; in quest'ultimo caso, si hanno problemi più urgenti da affrontare, compresa la modifica di tutte le precedenti password specifiche del sito.
Per dirla in breve: se la tua password principale ha bisogno di essere rinnovata, allora è stata rotta; il che significa che tutte le password del tuo sito sono brindate. Pertanto, il rinnovo della password principale senza modificare le password del sito è inutile.