È una buona idea fare una doppia crittografia AES con 2 chiavi diverse, quando una è detenuta dall'utente e una memorizzata sul server?

3

Sto costruendo un'app web. L'app deve mantenere certi dati all'interno del database molto sicuri.

Supponiamo per il momento che non disponga di un servizio HSM o di gestione delle chiavi e non posso permettermi di implementarne uno.

Quando si memorizzano i dati di un utente, voglio generare una chiave casuale e fornirla all'utente. Questo non verrà memorizzato da nessuna parte sul mio server. Questa chiave verrà utilizzata per crittografare i dati.

Non mi sento a mio agio con l'utente che ha l'unica chiave necessaria per decodificare il testo cifrato, poiché non so come lo memorizzeranno, se lo invieranno via email, ecc.

Come tale, intendevo applicare qualche ulteriore forma di crittografia sul lato server.

Quindi, per prima cosa, crittograferei i dati usando la chiave casuale fornita all'utente e quindi cripteremo di nuovo, usando una chiave statica o una seconda chiave casuale che memorizzerò sul server / db.

Non memorizzando la chiave casuale fornita all'utente, i dati rimangono protetti se il server è compromesso, poiché non vi è nulla nel server o componenti associati che un hacker possa ottenere tutte le chiavi necessarie per decrittografare i dati. Potrebbero accedere alla chiave statica o alla seconda chiave casuale, ma questo non sarà sufficiente.

Stavo pensando di utilizzare AES sia per la prima che per la seconda crittografia.

  • È una cattiva idea?
  • Dovrei invece creare una chiave di crittografia che è una formula della chiave casuale dell'utente e la chiave memorizzata dal server, e quindi cifrare solo una volta?
  • Devo fare qualcosa di completamente diverso?
posta Baraka 24.10.2014 - 10:41
fonte

1 risposta

2

Se il server decodifica i dati quando viene presentato con la chiave dell'utente, quel secondo livello di crittografia non protegge dalla chiave di un utente non divulgato. Chiunque abbia quella chiave può decifrare i dati.

Un secondo livello di crittografia fa rende più duro un attacco di forza bruta, ma se la chiave per il secondo livello è memorizzata con i dati, anche questo vantaggio svanisce.

Infine, la più grande preoccupazione non è l'utente che perde la chiave, è l'utente che perde l'accesso alla chiave. "Ho un nuovo computer, per favore invia di nuovo la mia chiave segreta."

    
risposta data 24.10.2014 - 13:04
fonte

Leggi altre domande sui tag