But what if someone changes their password? Then their password key
won't be able to access their encrypted messages. What's the best way
to go about this?
Quando qualcuno cambia la propria password, ogni sistema con cui ho familiarità richiede all'utente di digitare sia la vecchia password che la nuova password.
semplice
Se c'è solo una piccola quantità di dati crittografati e vuoi che il tuo utente sia in grado di accedere a quei dati con solo la nuova password, l'approccio più semplice è quello di decifrare tutti i dati con la vecchia password per recuperare il testo in chiaro, e quindi crittografare il testo in chiaro usando la nuova password.
indirezione
La mia comprensione è che molti sistemi hanno diversi livelli di riferimento indiretto.
Quando qualcuno vuole leggere il testo in chiaro di un documento, dietro le quinte ciò che realmente accade è che la password digitata viene utilizzata per decrittografare un portachiavi che memorizza (in forma crittografata) una chiave master.
(in genere il file "~ / .ssh / id_rsa" o il file "~ / Library / Keychains /").
Il documento crittografato viene solitamente archiviato in RFC 4880 OpenPGP Formato messaggio o qualcosa di simile.
La chiave master viene utilizzata per decrittografare uno dei blocchi nell'intestazione corrispondente a quella chiave master, fornendo la chiave simmetrica univoca utilizzata solo per il corpo di questo documento.
Quindi quella chiave simmetrica viene utilizzata per decodificare il corpo del documento crittografato, producendo il testo in chiaro.
Quando qualcuno cambia in una nuova password, in genere viene utilizzata la vecchia password per decrittografare l'intero keyring, quindi il sistema crittografa il portachiavi con la nuova password.
Tutti i file sono ancora accessibili a quell'utente, perché per decodificare quel file viene utilizzata la stessa chiave master.
In alternativa, per ogni documento che l'utente ha il permesso di accedere, si potrebbe aggiungere un altro blocco all'intestazione di quel file crittografato che contiene una versione crittografata della stessa chiave simmetrica unica del documento, crittografata da una nuova chiave master nuova.
Idealmente, l'utente avrebbe portato con sé il proprio portachiavi e nessun altro avrebbe mai potuto accedervi.
In pratica, molti sistemi memorizzano un portachiavi (crittografato) per ciascun utente.