Uso i seguenti input per crittografare usando AES:
- UserPassword (testo normale)
- secretkey
- RandomIV
Uso i seguenti input per crittografare usando SHA512:
- UserPassword (testo normale)
- RandomSalt
Mi piacerebbe migliorare entrambi i metodi di crittografia sopra utilizzando la funzionalità di derivazione della chiave. Userò la classe .NET Rfc2898DeriveBytes che richiede quanto segue:
- MasterPassword
- Salt
- iterazioni
Per AES:
Devo usare AES SecretKey per il parametro PBKDF MasterPassword? Attualmente sto generando un AES RandomIV e memorizzo IV + CIPHER nel DB, quando si aggiorna per usare PBKDF è corretto fare quanto segue:
- Non generare AES RandomIV
- Genera un nuovo Salt casuale per il PBKDF
- Utilizza i primi x bit di DerivedKey come AES SecretKey
- Usa i secondi x bit di DerivedKey come AES RandomIV
- Salva il "nuovo random random" + CipherText nel DB
- Sia AES Encrypt & I metodi di decifrazione avranno un parametro Salt PBKDF piuttosto che un parametro AES IV (ignorare il fatto che sono entrambi solo byte [] 's)
Per SHA512:
-
È corretto utilizzare UserPassword (testo in chiaro) per il parametro PBKDF MasterPassword (invece di memorizzare in modo sicuro una MasterPassword segreta come AES)?
-
Devo usare SHA512 RandomSalt come PBKDF Salt?
-
Quando si chiama il metodo SHA.computehash, dovrebbe essere presente solo il comando DerivedKey, o dovrebbe essere aggiunto il sale al DK?
-
Quanti byte di DerivedKey dovrebbero essere crittografati, 64?