Am o singură parolă, care este de octeți aleatori, care criptează o bază de date. Momentan folosesc o schemă de criptare de https://gist.github.com/jbtule/4336842. Pentru a rezuma, luăm singura noastră parolă, generăm o sare pentru o cheie de autentificare și o cheie de criptare, rulăm PBKDF2 cu 10.000 de iterații pentru a genera cheile, apoi folosim AES pentru criptare și HMAC pentru autentificare. Sărurile sunt apoi depozitate lângă textul cifrat.
Problema mea este că generația cheie devine prohibitiv de lentă. Criptarea și decriptarea au loc împreună cu alte proceduri grele ale procesorului și multe interogări și, prin urmare, multe decriptări, au loc pentru orice procedură dată. Uneori, pasul de generare a cheii poate dura ~5 secunde pentru fiecare element pe care vreau să-l decriptez.Dar, pe măsură ce citesc despre asta, se pare că funcțiile de derivare a cheilor nu sunt necesare pentru cazul meu de utilizare, deoarece parola originală este total aleatorie.
Mă gândesc să iau parola unică și să o concatenez cu săruri de criptare și auth înainte de criptarea/decriptarea AES și HMAC. De asemenea, aș putea reduce pur și simplu iterațiile PBKDF2 la ceva scăzut, cum ar fi ~ 10, care ar putea părea neglijent, dar ar implica schimbarea mai puțin cod și mai puține teste. Există o vulnerabilitate de securitate care îmi lipsește aici? Oricare dintre aceste soluții m-ar deschide către un atac, cu forță brută sau altfel? Din ceea ce citesc despre generarea cheilor, se pare că nu am nevoie de ea, dar soluțiile homebrew sunt întotdeauna proaste, așa că sunt foarte precaut în eliminarea oricărei securități pe care o avem. Multumesc pentru ajutor.