Utilizzo di più chiavi per crittografare lo stesso testo con la password come chiave ma qualcuno cambia la propria password

2

Voglio creare un social network di messaggistica, ma sono preoccupato che le intercettazioni della NSA vengano intercettate tutti i miei membri contemporaneamente senza merito come volevano fare con Lavabit.

Ho trovato un modo per crittografare i messaggi utilizzando più chiavi (una chiave per ogni utente, in modo che più utenti possano vedere lo stesso messaggio), e ho pensato che il modo migliore per farlo è usare la password digitata dall'utente come una chiave che ho saltato e hash per confrontare con la versione salata e hash nel database per vedere se corrispondono, in quanto non ho accesso alla password ed è personale per l'utente.

Ma se qualcuno cambia la sua password? Quindi la loro chiave di password non sarà in grado di accedere ai loro messaggi crittografati. Qual è il modo migliore per farlo? Non è che io possa memorizzare la chiave nel database.

    
posta desbest 09.12.2015 - 12:07
fonte

2 risposte

1

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.

    
risposta data 11.12.2015 - 17:48
fonte
0

Consiglierei due chiavi. Poiché tutti i messaggi sono crittografati con la chiave A e quindi, se un utente cambia la sua chiave, tutti i messaggi devono essere crittografati (probabilmente un carico di lavoro elevato). Una soluzione diversa ha senso.

Vorrei consentire al server di generare una chiave di crittografia A per ogni utente a cui è possibile accedere tramite la chiave di crittografia personalizzata degli utenti B. Quindi, se si sceglie A abbastanza strong, tutti i messaggi rimangono intatti quando l'utente cambia la chiave. In questo modo tutto ciò che devi fare è aggiornare il valore has alla chiave di crittografia e avere una complessità molto bassa.

È utile? In caso contrario, faccelo sapere:)

Giovanni

    
risposta data 09.12.2015 - 12:45
fonte

Leggi altre domande sui tag