Qual è il modo consigliato per archiviare dati del cliente a riposo, simmetricamente criptati?

0

Ho l'obbligo di memorizzare dati del cliente a riposo, simmetricamente criptati in un database. Qual è l'ultimo modo consigliato per farlo? La mia ricerca mi ha portato a questo:

  1. Genera 8 byte casuali per un sale
  2. Genera PBKDF2-HMAC-SHA1 usando OpenSSL con il sale del passo n. 1, password del cliente, 2 ^ 16 iterazioni e una dimensione della chiave di 32
  3. Cifra i dati con AES-256-CBC usando OpenSSL usando la chiave # 2
  4. Crea un digest HMAC / SHA1 utilizzando OpenSSL dei dati crittografati dal passaggio n. 3 e la chiave dal n. 2
  5. Archivia i dati crittografati e il digest nel database come due campi separati o un singolo blob con i due elementi concatenati insieme da un delimitatore
  6. Esegui quanto sopra in ordine inverso per decrittografare
posta Kevin 16.01.2016 - 18:39
fonte

1 risposta

0

Ciò che stai proponendo sembra ragionevole.

Il sale è abbastanza piccolo ma adeguato. Aumentare il valore a 12 o 16 byte probabilmente non farebbe male (la lunghezza del sale non è strettamente correlata alle prestazioni) e potrebbe rendere il sistema un po 'più sicuro.

Per quanto riguarda il numero di iterazioni, il consiglio è il massimo che puoi tollerare. Quindi aumenta il numero di iterazioni fino a quando le prestazioni diventano un problema.

Una dimensione della chiave di 32 suona alla grande.

Non è chiaro per me se hai bisogno del digest creato nei passaggi 4 e 5. Il tuo commento menziona una preoccupazione sulla manomissione durante la trasmissione, ma se stai usando SSL (e se non lo sei, in pratica non hai alcuna sicurezza) , la trasmissione dovrebbe essere sicura. Quindi non ne vedo davvero il bisogno. Soprattutto se si memorizzano e trasmettono i dati crittografati e si digeriscono insieme. Forse se hai memorizzato il digest su un sito separato, potrebbe aiutare a dimostrare che non c'è stata manomissione (intenzionale o meno). Ma non vedo che ti aiuti nella tua situazione.

Anche se probabilmente non ti sei preoccupato di dire che stai salvando il sale nella tua domanda, ti dirò che devi salvarlo in modo da poter ricreare la chiave di crittografia a 32 byte per la decrittografia.

In generale, questo sembra ragionevole.

    
risposta data 16.01.2016 - 21:54
fonte

Leggi altre domande sui tag