Crittografia utilizzando le migliori pratiche [duplicato]

1

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

    
posta Brian Whicheloe 20.12.2017 - 02:49
fonte

1 risposta

1

Una popolare libreria crittografica è libsodium , basata su NaCl , che fornisce un modo semplice per eseguire operazioni di crittografia di base come lo scambio di chiavi. Supporta pochi algoritmi, ma quelli che supporta sono moderni, sicuri e scelti per lavorare in una vasta gamma di situazioni, eliminando la necessità di comprendere i dettagli di vari primitivi crittografici. La libreria è per C, ma è stata trasferita (di solito sotto forma di associazioni C) a molte lingue diverse, incluso in Node.js .

L'installazione per Node.js è semplice:

npm install libsodium
    
risposta data 20.12.2017 - 05:56
fonte

Leggi altre domande sui tag