questo schema di crittografia dei dati è valido?

1

Il mio obiettivo è riuscire a crittografare i dati in modo che nessuno possa utilizzarli se è stato rubato.

Dati utente
- quello che verrà crittografato
- Può essere qualsiasi tipo di dati

Chiave di crittografia dei dati
- la chiave per crittografare e decrittografare i dati dell'utente
- Archiviazione crittografata - non cambia
- unico per utente
- generato al momento della registrazione
- ha due copie crittografate:

  • 1st è crittografato e decrittografato utilizzando la password non criptata dell'utente
  • 2nd è crittografato e decrittografato usando l'e-mail dell'utente

Password utente
- utilizzato per crittografare e decrittografare la prima copia della chiave di crittografia dei dati
- memorizzato crittografato con bcrypt

Email dell'utente
- utilizzato per crittografare e decrittografare la seconda copia della chiave di crittografia dei dati
- ha una copia separata archiviata crittografata usando bcrypt. L'altra copia faceva parte dei dati utente

[LOGIN]
Quando l'utente esegue l'accesso, la password inviata verrà verificata utilizzando la password crittografata memorizzata. Se valido, la sua chiave di crittografia dei dati verrà decodificata utilizzando la stessa password inviata. Ora è possibile utilizzare la chiave di crittografia dei dati per crittografare e decrittografare i dati dell'utente.

[CHANGE PASSWORD]
L'utente fornisce la sua vecchia password. Questo verrà utilizzato per decodificare la chiave di crittografia dei dati che verrà crittografata utilizzando la nuova password.

[FORGOT PASSWORD]
L'utente è tenuto a fornire il proprio nome utente ed e-mail. Questo nome utente verrà utilizzato per trovare l'e-mail crittografata memorizzata separatamente che verrà utilizzata per verificare l'e-mail fornita. Se il nome utente e l'e-mail sono corretti, l'e-mail fornita riceverà una chiave di ripristino. Il tasto di reset consentirà all'utente di fornire una nuova password. La seconda chiave di crittografia dei dati verrà decodificata utilizzando l'e-mail e verrà crittografata utilizzando la nuova password. Il valore risultante sostituirà la 1a chiave di crittografia dei dati.

Mi chiedo se questo è uno schema praticabile. Non ho ancora cercato un approccio simile. Se ne conosci uno o ne hai uno migliore, fammelo sapere.

    
posta Gene Diaz 13.10.2014 - 14:44
fonte

1 risposta

1

Quindi se ho i tuoi obiettivi corretti - vuoi proteggere i dati degli utenti e vuoi che i loro dati siano recuperabili se perdono la loro password di accesso.

Le basi: ci sono cose che conosci; cose che sanno; e cose che entrambi conoscete.

Preferibilmente per la crittografia dei loro dati sul tuo sistema per avere davvero senso, deve essere protetto da qualcosa che non conosce - almeno non sempre.

Mettendo da parte la password / il recupero dell'account per il momento, il metodo più semplice è quello di mantenere e abbinare un hash salato della loro password, ma memorizzare nella cache la loro password reimmessa come dati di sessione temporanei per decrittografare / accedere / modificare il loro contenuto mentre sono loggati Ignora i dati della sessione quando si disconnettono o scadono.

Il recupero della password in cui è implicata una seria crittografia dei dati dovrebbe essere la responsabilità dell'utente, poiché la presa di mano su questo particolare problema mina la sicurezza che si spera di fornire. Il sito Web o l'applicazione devono fornire opzioni di backup per la password, ad esempio un codice QR che possono essere stampati. Avere questa opzione di recupero come password o credenziali diverse in realtà non ha alcun senso in quanto i loro dati sono solo, a cuore, crittografati da una chiave simmetrica. Puoi anche avere un canale, una credenziale o un meccanismo separato che sia one-shot o email basato sul recupero del loro account ma non sui loro dati . Questa distinzione deve essere chiarita a loro. Nessuna password, nessuna copia di backup di backup - nessun recupero di dati.

La preoccupazione principale dell'approccio iniziale che hai delineato è che i ruoli e le responsabilità della loro sicurezza dei dati sono confusi. Dovresti ospitare i loro dati in modo utile per il sito web o l'app quando sono connessi, ma dovrebbero conservare l'unica credenziale per accedere ai loro dati. Bcrypt è un modo per archiviare i propri dati sul sistema senza crittografia; poiché tutte le informazioni necessarie per craccarlo sono già persistentemente sul server.

Naturalmente, se la crittografia / decrittografia avviene sul lato client, il rischio per la sicurezza per l'utente è ancora minore, ma ciò dipende in larga misura da come il sito Web o l'app devono utilizzare i propri dati, quindi potrebbe non essere un'opzione pratica.

    
risposta data 13.10.2014 - 15:12
fonte

Leggi altre domande sui tag