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:
- Genera 8 byte casuali per un sale
- 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
- Cifra i dati con AES-256-CBC usando OpenSSL usando la chiave # 2
- Crea un digest HMAC / SHA1 utilizzando OpenSSL dei dati crittografati dal passaggio n. 3 e la chiave dal n. 2
- 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
- Esegui quanto sopra in ordine inverso per decrittografare