Cifra i dati usando PBKDF2, ma continua a fornire la funzionalità di reimpostazione della password [duplicato]

0

Nella mia applicazione vorrei crittografare i dati dell'utente in modo tale che non ho accesso ad essi. Per fare questo seguirò i seguenti passi:

  1. Genera una chiave a 256 bit
  2. Crittografa dati con chiave
  3. Ricava la seconda chiave dalla password (PBKDF2)
  4. Cripta la 1a chiave, distruggi la chiave di testo semplice
  5. Store hash + password salata e chiave crittografata

Ora il mio problema è questo: devo ancora fornire un modo per reimpostare la password quando viene dimenticata.

Mi rendo conto che seguendo questo schema di stile "trust-nessuno" direttamente si contrappone la possibilità di fornire una funzionalità di reimpostazione della password ma spero in una soluzione che possa aiutare a mantenere lo spirito dello schema attraverso un compromesso sano, senza richiedere un secondo segreto all'utente come le risposte alle domande di sicurezza o una terza parte attendibile.

Le mie idee:

  • Memorizzazione di una copia della chiave di crittografia per utente con una chiave controllata dalla mia applicazione come backup, pronta per essere nuovamente crittografata con la nuova password (ripristinata) per le operazioni quotidiane. Per essere chiari, sto bene con l'accesso ai dati da solo - invece, mirano a limitare i potenziali dati a cui un hacker di successo potrebbe accedere.
  • All'atto della registrazione, inviando un link di reimpostazione della password alla tua e-mail contenente una chiave nel link utilizzato per crittografare una versione di backup della chiave crittografata, pronta per la nuova crittografia utilizzando la nuova password.
posta sousdev 17.05.2018 - 01:04
fonte

1 risposta

2

Tutti i dati crittografati dalla chiave di crittografia dei dati andranno persi in questo caso, perché come hai detto, la password è stata dimenticata. Ora, se la password è stata semplicemente modificata, ma non dimenticata, è possibile scartare la chiave di crittografia dei dati con la chiave derivata dalla password al momento dell'accesso iniziale, archiviare quella chiave precedentemente inserita nella sessione, quindi riavvolgere e archiviare la chiave di crittografia dei dati di nuovo quando l'utente cambia la sua password. Quindi non è un problema. È solo che se la password viene mai dimenticata, lo sono anche i dati che dipendono da quella password per scartare la chiave di crittografia dei dati. Non c'è altro modo sicuro intorno a questo, a meno che non si disponga di una sorta di schema di backup, magari protetto da crittografia a livello di sito con chiavi protette, ad esempio, da un KMS. Ma in quel caso, perché non dovresti semplicemente eliminare la crittografia basata su password per cominciare, e usare invece il KMS?

    
risposta data 17.05.2018 - 15:09
fonte

Leggi altre domande sui tag