Derivarea unei chei criptografice

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

Derivarea unei chei criptografice înseamnă derivarea uneia sau mai multor chei criptografice dintr-o cheie master (în engleză numită de obicei cheie master ) sau din alte informații disponibile, cum ar fi o parolă sau o expresie de acces . [1] [2] Acest lucru se face pe baza unei funcții adecvate de derivare a cheii (în engleză sau Key derivation function KDF) care derivă cheia derivată din date cunoscute. O aplicație obișnuită a derivării cheii este în HMAC .

Un algoritm de derivare a cheii (a se vedea de exemplu PBKDF2), pornind de la o valoare de intrare arbitrară (un șir sau o matrice mare) calculează într-un mod securizat criptografic (adică nu este posibilă scurtarea calculului cu o scurtătură) o dimensiune a cheii potrivită pentru criptare. Acest lucru face posibilă impunerea unui anumit timp de calcul pentru a genera o cheie, notați parola (sau orice informație secretă), astfel încât un atacator care încearcă un atac de forță brută sau chiar un atac de dicționar să fie încetinit. mod) în operațiuni. Prin combinarea parolei cu o valoare pseudorandom, care nu trebuie să rămână secretă (seed sau salt), la intrarea funcției de derivare a parolei, adversarul nu poate nici măcar precalcula cheile corespunzătoare celor mai dovedibile parole, deoarece vor să fie diferit pe măsură ce sarea se schimbă și, prin urmare, diferit pentru fiecare fișier criptat.

Utilizări ale derivării cheii

  • Funcțiile de derivare a cheilor sunt funcții hash criptografice , utilizate adesea împreună cu parametrii nesecreti pentru a obține una sau mai multe chei din aceleași informații secrete. Utilizarea acestuia poate împiedica un atacator care intră în posesia cheii derivate să învețe informații sensibile cu privire la valoarea secretă de fapt introdusă. Un KDF poate fi, de asemenea, utilizat pentru a se asigura că cheile derivate au alte proprietăți dorite, cum ar fi evitarea cheilor slabe în unele sisteme criptografice specifice.
  • Funcțiile de derivare a cheilor sunt adesea utilizate ca componente ale protocoalelor de acord de chei multipartite. Exemple de funcții de derivare a cheilor includ KDF1, definit în IEEE P1363 și funcții similare în ANSI X9.42.
  • Funcții cheie de derivare sunt de asemenea folosite pentru chei provin dintr - un secret de parolă sau frază de acces .

Funcții de derivare a cheilor bazate pe parolă

Funcțiile de derivare a cheilor sunt, de asemenea, utilizate în aplicații pentru a obține chei din parole secrete sau expresii de acces, care de obicei nu pot fi utilizate direct ca chei criptografice. În anumite aplicații, se recomandă în general ca funcția de derivare a cheii să genereze încet cheia derivată pentru a descuraja forța brută sau atacurile de dicționar asupra parolei de intrare sau a expresiei de acces.

O utilizare particulară a unei funcții de derivare a cheii poate fi următoarea:

unde este:

  • este cheia derivată
  • este funcția de derivare a cheii
  • este cheia sau parola originală
  • este o valoare aleatorie care joacă rolul de sare criptografică
  • se referă la numărul de iterații ale funcției

Cheia derivată este utilizată în locul cheii sau parolei originale, ca cheie de sistem. Valoarea de sare și numărul de iterații (dacă nu sunt fixate) sunt stocate în valoarea hash a parolei sau trimise ca text plat împreună cu mesajul criptat.

Dificultatea forțării cheii cu un atac de forță brută crește odată cu creșterea numărului de iterații. O limitare practică a numărului de iterații este reticența utilizatorilor de a tolera o întârziere perceptibilă în conectarea la sistem sau în vizualizarea mesajului decriptat. Utilizarea unei sări criptografice împiedică, așa cum s-a menționat mai sus, să calculeze în prealabil un dicționar de chei derivate.

Primul mod deliberat computațional lent funcția de derivare cheie bazată pe parolă a fost numită „criptă“ ( „crypt (3)“ în om Unix pagini ) și a fost inventat de Robert Morris în 1980 la criptați parolele. Unix . Cu toate acestea, în acel moment a existat și o creștere a vitezei procesoarelor, ceea ce a făcut fezabil un atac de forță brută împotriva criptelor, iar creșterea capacității de memorie a făcut ca un salt de 12 biți să fie inadecvat. Funcția criptă a limitat și parola de utilizator la 8 caractere, limitând astfel și dimensiunea spațiului cheii și împiedicând definirea expresiilor de acces „puternice”.

Funcțiile moderne de derivare a cheilor bazate pe parolă, cum ar fi PBKDF2 (specificată în RFC 2898) utilizează o funcție hash criptografică, cum ar fi MD5 sau SHA1 , săruri foarte mari (de exemplu, pe 64 de biți) și o valoare de iterație mare (adesea 1000 sau mai mult). Au existat propuneri de utilizare a algoritmilor care necesită amintiri foarte mari și alte resurse de calcul, pentru a contracara atacurile hardware personalizate .

Notă

  1. ^ Bezzi, Michele, Confidențialitatea datelor , în Camenisch, Jan (ed.), Managementul confidențialității și identității pentru viață , Springer, 2011, pp. 185–186, ISBN 978-3-642-20317-6 .
  2. ^ Kaliski, Burt și RSA Laboratories , RFC 2898 - PKCS # 5: Specificație de criptografie bazată pe parolă, versiunea 2.0 ( TXT ), în IETF .

Elemente conexe