Archiviazione sicura dei dati utilizzando la chiave derivata da password. Come gestire la password smarrita?

0

Per archiviare in modo sicuro i dati per un utente che ha effettuato il login, ricavo una chiave dalla sua password quando si collega e la utilizza per crittografare i dati memorizzati localmente per questo utente.

Senza la password utente, che ottengo solo quando l'utente si connette (solo un hash_mac della password è memorizzato localmente per l'accesso), non riesco a decifrare i dati memorizzati per questo utente.

Tuttavia in tale scenario, se l'utente perde la sua password, nessuno può decifrare i suoi dati più. Come gestisci questo problema?

    
posta Nicolas Manzini 28.11.2015 - 18:43
fonte

2 risposte

3

Difficile dire esattamente come si stanno crittografando le cose. Nella situazione esatta in cui hai descritto i dati dell'utente vengono persi e non è possibile eseguire nulla.

Tuttavia, se stai facendo l'intero scenario (attenzione, ci sono molte insidie, ed è facile escogitare qualcosa che appare sicuro), hai alcune opzioni /

Uno scenario possibile è che i dati dell'utente vengono crittografati utilizzando una chiave casuale. Questa chiave casuale viene quindi crittografata utilizzando la chiave derivata da password.

Buone cose su questo schema:

  • Quando l'utente cambia password, non è necessario crittografare nuovamente tutti i suoi dati, ma solo la chiave crittografata, in modo che la modifica della password possa terminare in un tempo ragionevole.
  • Puoi avere diversi "slot", ognuno contenente la chiave di crittografia reale crittografata da qualcosa di diverso - password utente, password master, qualsiasi cosa, usa la tua immaginazione.

Cose cattive:

  • È molto più facile rubare lo slot crittografato, montare una password off-line crack, e poi tornare con la chiave conosciuta e rubare tutti i dati.
  • Devi stare molto attento quando smaltisci una chiave: se "dimentichi" la password, ma non cancelli completamente i dati dallo slot, rimane aperta per la violazione delle password.
  • La tua password / chiave / qualunque è un obiettivo molto migliore delle singole password dell'utente - dopotutto avrai probabilmente una password principale, che può sbloccare tutti i dati degli utenti.
  • Sovrascrivi la fiducia nel tuo sistema - in precedenza solo l'utente ha avuto accesso ai suoi dati, ora l'amministratore ha anche lui.
risposta data 28.11.2015 - 21:21
fonte
0

Un modo per prevenire il disastro se l'utente perde la chiave è utilizzare una chiave di backup che può essere utilizzata per decrittografare i dati senza la password dell'utente. Quando l'utente esegue la crittografia con la chiave di crittografia primaria, è necessario crittografare anche la chiave di backup.

La seconda chiave potrebbe essere una coppia di chiavi asimmetriche, in modo che l'utente (o l'attaccante) abbia solo accesso alla chiave pubblica per crittografare i propri dati in modo che possa essere decifrato dalla chiave privata di backup, ma non può fornire la chiave privata stessa a chiunque altro (accidentalmente o in altro modo).

Se i tuoi dati sono grandi, puoi anche introdurre una chiave di crittografia dei dati (DEK). Invece di crittografare i dati utilizzando la chiave derivata dalla password dell'utente, si crea un DEK per crittografare i dati e crittografare il DEK con i dati con la chiave derivata dalla password dell'utente. Dovresti crittografare anche una seconda copia del DEK con la chiave di backup.

Ora il problema è come proteggere questa chiave di backup. Vari modelli di minacce forniscono varie soluzioni a questo. Alcune opzioni possibili:

  1. Utilizza un modulo di sicurezza hardware, con una registrazione di controllo avanzata. Dovresti assicurarti che l'HSM fisico si trovi in un centro dati sicuro. L'HSM garantisce che i segreti non abbandonino mai l'HSM senza che lo sappiano. Avresti bisogno di un processo organizzativo per controllare regolarmente i log.
  2. Utilizzare la divisione segreta / condivisione segreta per suddividere la seconda chiave in più persone. Una condivisione segreta come la Condivisione Segreta di Shamir ti permette di dividere un N modo segreto e richiede almeno M parti per ricostruire il segreto. È possibile assegnare una parte all'utente, una parte conservata dall'amministratore di sistema, una parte è conservata da una terza parte di cui entrambi si fidano; per decifrare senza password, hai bisogno di almeno due parti per rivelare la loro parte del segreto.
  3. O semplicemente dire all'utente di scrivere / stampare la chiave di backup e tenerla da qualche parte davvero al sicuro.
risposta data 30.11.2015 - 15:23
fonte

Leggi altre domande sui tag