O bună practică implică stocarea cheii criptate sub un cifru simetric autentificat precum AES-256-GCM, cu o cheie derivată folosind Argon2 sau scrypt dintr-o frază de acces introdusă de utilizator și sare aleatorie stocată de-a lungul criptogramei. PBKDF2 era obișnuit în loc de Argon2 sau scrypt, dar nu mai este considerată cea mai bună practică.
Argon2 este stadiul tehnicii, cripta ar putea fi încă mai frecvent disponibile. Nu există o bună practică definitivă, în special unii preferă ceva standard decât ceva maxim sigur, unii adaugă piper pe deasupra sare. Actualizare: și din ce în ce mai mult, autentificarea cu doi factori devine cea mai bună practică.
Dacă definiți ceva bazat pe frază de acces/parolă, vă recomand Argon2id cu parametri gândiți cu atenție: ceva care funcționează confortabil pe toate platformele țintă, dar oferă un obstacol serios în calea căutării prin forță brută a parolelor.
Este Argon2 un standard NIST sau ceva?
Argon2 a fost câștigătorul concursului competiție pentru hashing parole. Asta nu a fost organizat de NIST. Argon2 nu este aprobat de NIST, dar este citat de NIST Aici (împreună Balon, ca si mie imi place; dar se pare că și-a pierdut impulsul după ce a realizat că avantajul pretins față de Argon2 nu este clar:
- Q-B17: Â SP 800-63B Secțiunea 5.1.1.2, Verificatori secreti memorați, spune că TREBUIE folosită o derivare a parolei de memorie. PBKDF2, care este utilizat pe scară largă, nu este greu de memorie. Care sunt exemplele de funcții cu memorie dure care îndeplinesc această cerință?
- A-B17: Â Textul recomandă, dar nu necesită, utilizarea unei funcții cu memorie durabilă pentru derivarea parolei.
  NIST consideră că securitatea funcției hash (unidirecțională) utilizată în derivarea cheilor este de importanță primordială și, prin urmare, necesită utilizarea unei funcții unidirecționale aprobate (verificate în detaliu) în derivarea cheilor. BALLOON este un algoritm de memorie și de durată care permite utilizarea unei funcții unidirecționale de bază aprobate, dar, din păcate, nu a fost implementat pe scară largă.Alți algoritmi, cum ar fi ARGON2, sunt greu de memorie și de timp, dar nu folosesc o funcție unidirecțională subiacentă care a fost analizată amănunțit.
În timp ce PBKDF2 este greu de timp, dar nu de memorie, este atât de larg implementat încât nu este practic (în acest moment, oricum) să se introducă o cerință pentru o funcție de derivare a tastei de memorie, așa că am prezentat aceasta ca o recomandare (adică âTREBUIEâ).
  Funcția de derivare a cheii este considerată mai puțin critică decât funcția unidirecțională care stă la baza acesteia, astfel încât specificația este mai puțin prescriptivă în acest domeniu și nu specifică algoritmi anumiți pentru derivarea cheii.
Prin urmare, NIST nu își renunță încă fostul oficial recomandare a PBKDF2-HMAC-SHA-1. Asta chiar dacă oferă puțină protecție într-o eră în care atacatorii bine finanțați pot folosi ASIC-uri, sau cel puțin FPGA-uri sau GPU-uri, pentru căutarea parolelor. Nu este clar că această poziție insuportabilă din punct de vedere tehnic este rău intenționată; asta este contrar poziției anterioare a NIST despre Dual_EC_DRBG, care era în mod clar destinat să promoveze cripto informațiile americane ar putea rupe.