Ce este criptarea AES și cum funcționează?
![](https://techrobot.com/wp-content/uploads/2021/05/01-What-Is-AES-Encryption-and-How-Does-It-Work.jpg)
Într-o lume în care hackerii răuvoitori caută oportunități de a fura sau distruge date, criptarea a devenit o parte esențială a lumii digitale. Criptarea este o metodă de protejare a datelor prin amestecarea lor astfel încât numai persoanele autorizate cu cheia secretă să poată decripta și citi datele. AES este un algoritm de criptare pe care furnizorii de servicii VPN și agențiile guvernamentale îl folosesc pe scară largă pentru a proteja datele. Acest articol se concentrează pe criptarea AES și modul în care funcționează.
Ce este criptarea AES?
Există două tipuri principale de criptare: Simetrică și Asimetrică. Criptarea asimetrică implică utilizarea a două chei diferite (privată și publică) pentru criptarea și decriptarea datelor, în timp ce criptarea simetrică implică utilizarea unei singure chei pentru criptare și decriptare. Standardul de Criptare Avansată (AES) aparține categoriei simetrice de criptare. Este un subset al familiei Rijndael de cifruri simetrice de bloc dezvoltate de Vincent Rijmen și Joan Dae în 1998, de unde și numele „Rijndael.”
AES este un cifru iterativ bazat pe algoritmul rețelei de substituție-permutare (SPN). Algoritmul SPN este o clasă de cifruri pe blocuri care implică runde ale unei serii repetate de operațiuni matematice. Datorită acestor runde de criptare, AES este un cifru de criptare formidabil. AES are trei tipuri diferite bazate pe lungimea cheilor de criptare. Acestea includ AES-128, AES-192 și AES-256.
Lungimea cheii fiecărui tip de AES determină puterea acestora; cu cât lungimea este mai mare, cu atât criptarea este mai puternică. Criptarea AES de 128-bit și 192-bit au, respectiv, 3.4 x 10^38 și 6.2 x 10^57 combinații posibile de chei. AES-256 este cifrul de criptare cel mai robust și are 1.1 x 10^77 combinații posibile de chei. În ciuda variației lungimii cheii, dimensiunea blocului AES rămâne întotdeauna aceeași–128 de biți.
De ce a fost dezvoltat AES?
Cifrele de criptare anterioare erau mai simple și, cu suficient timp și unelte, oricine le putea sparge. Pe măsură ce tehnologia a continuat să avanseze, hackerii au avut la dispoziție unelte mai bune pentru a lupta împotriva cifrelor de criptare. Era evident că cifrele de criptare trebuiau să fie mai sofisticate decât ceea ce exista în acel moment, și anume Standardul de Criptare a Datelor (DES).
La fel ca AES, și DES este un algoritm simetric. IBM a dezvoltat DES în anii 1970, iar Biroul Național de Standarde (NBS) din SUA l-a adoptat ca cifru standard de criptare pentru criptarea informațiilor sensibile ale guvernului. Datorită adoptării sale de către NBS și guvernul SUA, diferite sectoare au acceptat DES. Acesta a stârnit și interesul comunității academice, ceea ce a încurajat interesul pentru studiul criptografiei. Timp de decenii, DES s-a dovedit a fi formidabil până în iunie 1997, când grupul DESCHALL l-a spart public.
Cracker-ul DES al Electronic Frontier Foundation (EFF) a realizat aceeași performanță în 56 de ore în anul următor. În 1999, a durat mai puțin de 24 de ore pentru a sparge o cheie DES. Aceste evenimente semnificative au arătat că, cu creșterea puterii de calcul și avansul tehnologiei, ar fi doar o chestiune de timp înainte ca spargerea DES să devină ușor de realizat. În plus, lungimea cheii DES nu depășea 56 de biți comparativ cu puternicul AES de 256 de biți.
În 2001, Institutul Național de Standarde și Tehnologie (NIST) a dezvăluit adoptarea cifrului de criptare AES datorită capacităților sale complete. Este mai bun decât DES din punct de vedere al performanței, ușor de implementat și extrem de dificil de spart.
Cum Funcționează Criptarea AES pentru a Proteja Datele Tale
Înțelegerea algoritmului de criptare AES poate fi dificilă dacă nu ai o bază solidă în matematică. Totuși, vom încerca să simplificăm procesul pentru ca tu să ai o înțelegere de bază a modului în care funcționează. Algoritmul de criptare AES criptează și decriptează datele în blocuri de 128 de biți. În ciuda variației lungimii cheii, dimensiunea blocului nu se schimbă.
Algoritmul de criptare AES combină o cheie secretă (cheie de 128, 192 sau 256 de biți) cu textul clar (datele sensibile pe care doriți să le criptați) pentru a crea un cifru. Cifrul AES utilizează o serie de transformări matematice (substituție-permutare) folosind cheia secretă și textul clar. Înainte de orice operație, datele textului clar sunt separate într-o matrice de 4 x 4 de șaisprezece octeți sau 128 de biți (un octet este egal cu 8 biți) deoarece AES criptează datele în blocuri de biți.
Algoritmul AES utilizează substituție-permutare cu mai multe runde pentru a converti datele în text clar într-un text cifrat final. Dimensiunea cheii determină numărul de runde. O cheie de 128 de biți are zece runde, o cheie de 192 de biți are douăsprezece runde, iar o cheie de 256 de biți are paisprezece runde. Acum, să aruncăm o privire asupra operațiunilor implicate în procesul de conversie a datelor în text clar în text cifrat.
1. Expansiunea cheii și AdăugareaCheiiRundei
În această operațiune, AES utilizează Programarea Cheii Rijndael pentru a produce noi chei de rundă de 128 de biți (subcheie) din cheia secretă primară. Adică, implică utilizarea cheii secrete inițiale pentru a crea o serie de chei pentru fiecare rundă a operațiunii de criptare. În operațiunea AddRoundKey, fiecare octet din starea actuală a datelor este combinat cu un octet din cheia rundei curente utilizând o operație XOR pe biți.
2. SubBytes (substituire octeți)
În această operațiune, blocul de 16 octeți este trecut printr-o cutie de substituție Rijndael (S-Box) pentru a oferi o valoare alternativă pentru fiecare octet. Fiecare octet este substituit conform regulilor prescrise de cutiile de substituție Rijndael (S-Boxes) predefinite. S-box ia o valoare și o înlocuiește cu o altă valoare. Procesul este mult mai complicat, dar face ca spargerea cifrului AES să fie aproape imposibilă cu resursele de calcul existente în lume.
3. ShiftRows
Operația ShiftRows deplasează toate rândurile dintr-un bloc de 16 octeți, cu excepția primului. Este mai ușor de înțeles comparativ cu operația SubBytes. Primul rând nu se schimbă și rămâne la fel. Al doilea rând se deplasează la stânga cu un octet, al treilea rând se deplasează la stânga cu doi octeți, iar al patrulea rând se deplasează la stânga cu trei octeți.
4. MixColumns
Această operațiune transformă fiecare coloană din blocul de 16 octeți în mod liniar. Datorită complexității acestei operațiuni, nu ne vom aprofunda prea mult în ea. Folosind înmulțirea matricilor și adunarea XOR pe biți, această operațiune înmulțește fiecare coloană cu o matrice predefinită de 4 x 4, rezultând o nouă coloană și un nou bloc.
Ordinea Operațiilor
Toate datele pe care AES le criptează trebuie să treacă prin fiecare dintre operațiunile de mai sus. Aceste operațiuni sunt repetate de mai multe ori în funcție de numărul de runde necesare. O cheie de 128 de biți necesită zece runde, o cheie de 192 de biți necesită douăsprezece runde, iar o cheie de 256 de biți necesită paisprezece runde. Mai jos, vom analiza ordinea în care aceste operațiuni se execută pentru a cripta datele.
1. Expansiunea cheii
2. AdaugăRundă
3. Următoarele operațiuni vor avea loc pe parcursul a 9, 11 sau 13 runde, în ordinea de mai jos:
SubBytes
ShiftRows
MixColumns
AddRound
4. Următoarele operațiuni au loc în ultima rundă (a 10-a, a 12-a sau a 14-a, în funcție de lungimea cheii secrete):
SubBytes
ShiftRows
AddRound
Decriptarea criptării AES
Am văzut cum AES criptează datele, dar cum decriptează datele? Procesul de decriptare este simplu. Inversarea tuturor pașilor implicați în procesul de criptare va decripta datele. Să aruncăm o privire la cum ar fi procesul dacă am decripta datele.
1. Următoarele operațiuni au loc în ultima rundă (a 10-a, a 12-a sau a 14-a, în funcție de lungimea cheii secrete):
Inversează AdăugareaRundei
Inverse ShiftRows
Inverse SubBytes
2. Următoarele operațiuni vor avea loc pe parcursul a 9, 11 sau 13 runde, în ordinea de mai jos:
Inversează AdăugareaRundei
Inverse MixColumns
Inverse ShiftRows
Inverse SubBytes
Inversează AdăugareaRundei
AES Encryption are probleme de securitate?
Deși nu au fost înregistrate atacuri de succes asupra criptării AES, implementarea greșită a acesteia poate duce la descoperirea unei vulnerabilități de către hackeri și exploatarea acesteia. Deoarece criptografii sunt mereu în căutare de vulnerabilități pe AES, au existat câteva atacuri teoretice și atacuri laterale de succes. Să ne uităm la câteva dintre ele.
1. Atac de Diferențiere cu Cheie Cunoscută
În 2009, o încercare de a sparge versiunea de 8 runde a AES-128 cu un atac de distingere cu cheie cunoscută a fost reușită. Deoarece AES-128 are zece runde de criptare, este încă impenetrabil. De asemenea, un atacator trebuie să cunoască cheia de criptare înainte ca acesta să funcționeze, ceea ce este foarte puțin probabil.
2. Atacuri laterale
Atacurile laterale vor funcționa doar dacă cineva nu implementează corect criptarea AES, deoarece se bazează pe scurgerea de informații din sistem. Atacatorul acordă atenție scurgerilor de date precum informațiile electromagnetice, consumul de energie, informațiile despre timp etc., pentru a colecta informații din algoritm. AES nu este complet imun la acest tip de atac.
3. Alte Atacuri
Alte atacuri pe care criptografii au încercat să le folosească pentru a sparge criptarea AES includ atacurile de recuperare a cheii și atacurile cu chei înrudite. În ambele cazuri, atacatorul vizează cheia de criptare. Într-un atac de recuperare a cheii, atacatorul trebuie să aibă cel puțin un cuplu de mesaje criptate și decriptate. Într-un atac cu chei înrudite, atacatorul trebuie să cunoască relația dintre două chei diferite. Aceste atacuri funcționează doar pe sisteme care implementează incorect AES și nu reprezintă amenințări semnificative.
Concluzie
Motivul principal pentru care agențiile de securitate și serviciile VPN de top folosesc criptarea AES este datorită imunității sale la atacuri. Pe lângă faptul că este practic imposibil de spart, Standardul Avansat de Criptare este rapid, versatil și ușor de implementat. Comparativ cu alte tipuri de criptare, cum ar fi DES, utilizează de asemenea mai puțină memorie. Poți să-l combini și cu alte protocoale de securitate pentru a asigura un nivel înalt de securitate.