Sto tentando di scrivere una funzione per crittografare e decrittografare i dati utilizzando NodeJ seguendo le attuali best practice.
Per ottenere ciò, faccio quanto segue:
- Acquisizione di una password per l'utente finale e applicazione dei requisiti di sicurezza della password
- Generazione di 128 byte casuali per un sale
- Hashing della password dell'utente con pbkdf2 e salt
- Generazione di 16 byte casuali per un IV
- Crittografia dei miei dati con AES-256-CBC utilizzando IV e password con hash
- Archiviazione dei dati crittografati come una stringa nel formato
iv:salt:encryptedData
Suppongo che usare qualcosa come Argon2 per la password con hash sarebbe superiore, anche se tutto ciò che ho letto finora sulla crittografia dei file consiglia pbkdf2.
È sicuro memorizzare SAL e IV nel file crittografato? Mi piacerebbe solo richiedere una password per decifrare il file, quindi sarebbe preferibile. Ho l'impressione che questo mi protegga da un attacco stile tavolo arcobaleno. Non sono sicuro se questo aumenta in modo significativo la probabilità che qualcuno possa decrittografare i dati.
C'è qualcos'altro che potrei fare per migliorare la sicurezza del file crittografato?
Questo elenco contiene il mio codice esatto: link