Criptografie cu cheie simetrică
În această lecție vom analiza criptografia cu cheie simetrică, care securizează o mare parte din datele stocate și transmise, datorită eficienței sale.
Până la sfârșitul lecției vom fi acoperit:
- Ce este criptografia cu cheie simetrică
- Exemple de cod Python care demonstrează utilizarea criptografiei cu cheie simetrică
- O privire asupra aplicațiilor criptografiei cu cheie simetrică
- Aplicații ale criptografiei cu cheie simetrică
- Securitatea criptografiei cu cheie simetrică
- Amenințările la adresa acestor algoritmi din partea calculatoarelor clasice și cuantice
Introducere în criptografia cu cheie simetrică
Criptografia cu cheie simetrică (SKC) este cea mai veche și mai intuitivă formă de criptografie. În cadrul SKC, informațiile confidențiale sunt securizate prin criptare cu cheie simetrică (SKE), adică prin utilizarea unei singure chei secrete atât pentru criptare, cât și pentru decriptare.
SKC implică:
- O funcție de criptare care transformă un text simplu dat în ciphertext folosind o cheie secretă
- O funcție de decriptare care inversează operația, transformând ciphertext-ul înapoi în text simplu folosind aceeași cheie secretă
Textul simplu poate reprezenta orice tip de date necriptate, cum ar fi text în limbaj natural sau cod binar al cărui conținut informațional este în principiu direct accesibil, în timp ce ciphertext se referă la date criptate al căror conținut informațional este destinat să fie inaccesibil înainte de decriptare.
Un algoritm care descrie operațiile de criptare și decriptare folosind o cheie secretă partajată se mai numește și cifru simetric.

Figura 1. Criptarea cu cheie simetrică a unui text simplu dat în ciphertext și decriptarea înapoi în text simplu folosind aceeași cheie.
Proprietățile criptosistemelor cu cheie simetrică
Un criptosistem cu cheie simetrică ar trebui să asigure următoarele proprietăți pentru a securiza mesajele — atât datele stocate static, cât și/sau comunicațiile printr-un canal de transmisie:
- Confidențialitate: Se referă la proprietatea că conținutul informațional al mesajelor criptate este protejat de accesul neautorizat.
- Integritate: Se referă la proprietatea că orice alterare a mesajelor criptate în timpul stocării sau transmisiei poate fi detectată.
- Autenticitate: Se referă la proprietatea că destinatarul unui mesaj poate verifica identitatea expeditorului și poate detecta uzurparea identității de către o parte neautorizată.
Mai mult, aceste proprietăți ar trebui realizate într-un context în care algoritmii sau cifrurile folosite pentru criptare și decriptare pot fi publice, iar accesul la conținutul informațional al mesajelor criptate este controlat exclusiv prin accesul la cheia secretă.
Implementarea unui criptosistem cu cheie simetrică sigur implică, prin urmare, două sarcini principale:
- Utilizarea unui algoritm de criptare cu cheie simetrică robust, rezistent la atacuri criptografice.
- Asigurarea confidențialității în distribuția și gestionarea cheilor secrete.
În această lecție vom discuta aspecte legate de prima sarcină, care reprezintă preocuparea principală a tehnologiei SKC. A doua sarcină, însă, necesită soluții care se află în afara SKC-ului propriu-zis și va fi introdusă ulterior.
Ilustrarea criptării cu cheie simetrică folosind Python
Prezentăm un exemplu simplu al operațiilor de criptare și decriptare folosind clasicul cifru cu deplasare Caesar și modernul Standard Avansat de Criptare (AES), care este standardul pentru criptarea cu cheie simetrică din 2001. Mai întâi configurăm câteva biblioteci Python care oferă cifrurile de criptare cu cheie simetrică necesare, apoi definim textul simplu pe care dorim să îl criptăm.
# Added by doQumentation — required packages for this notebook
!pip install -q cryptography numpy secretpy
# Install the library if needed
# %pip install secretpy
# import the required crypto functions which will be demonstrated later
from secretpy import Caesar
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from functools import reduce
import numpy as np
# Set the plaintext we want to encrypt
plaintext = "this is a strict top secret message for intended recipients only"
print(f"\nGiven plaintext: {plaintext}")
Vom vedea cum să îl criptăm și să îl decriptăm folosind două metode diferite de criptare cu cheie simetrică:
- Clasicul cifru cu deplasare Caesar
- Modernul protocol Advanced Encryption Standard AES-256
Cifrul cu deplasare Caesar:
Criptarea prin deplasare Caesar implică definirea:
- Unui alfabet de caractere posibil de codificat
- Unei valori de deplasare care poate fi între 0 (necriptat) și lungimea alfabetului. Aceasta o considerăm cheia.
Este cunoscut ca un cifru de substituție monoalfabetică deoarece fiecare literă din textul simplu este înlocuită cu alta în ciphertext.
În acest exemplu vom folosi literele mici ale alfabetului.
Hai să începem prin a configura lucrurile.
# initialize the required python object for doing Caesar shift encryption
caesar_cipher = Caesar()
# Define the shift, ie the key
caesar_key = 5
print(f"Caesar shift secret key: {caesar_key}")
# Define the alphabet
alphabet = (
"a",
"b",
"c",
"d",
"e",
"f",
"g",
"h",
"i",
"j",
"k",
"l",
"m",
"n",
"o",
"p",
"q",
"r",
"s",
"t",
"u",
"v",
"w",
"x",
"y",
"z",
" ",
)
print(f"alphabet: {alphabet}")
Criptează textul simplu pentru a obține ciphertext-ul pentru cifrul Caesar.
caeser_ciphertext = caesar_cipher.encrypt(plaintext, caesar_key, alphabet)
print(f"Encrypted caeser shift ciphertext: {caeser_ciphertext}")
Decriptează ciphertext-ul înapoi la textul simplu original folosind aceeași cheie utilizată pentru criptare.
caeser_plaintext = caesar_cipher.decrypt(caeser_ciphertext, caesar_key, alphabet)
print(f"Decrypted caeser shift plaintext: {caeser_plaintext}\n")
Cifrul Advanced Encryption Standard (AES)
Acum criptăm textul clar folosind AES, un algoritm popular de criptare cu cheie simetrică.
Începem prin crearea cheii, în acest caz un șir aleatoriu de 16 litere.
# lambda defines an inline function in this case that takes two values a,b with the resulting expression of a+b
# reduce uses a two-argument function(above), and applies this to all the entries in the list (random alphabet characters) cumulatively
aes_key = reduce(lambda a, b: a + b, [np.random.choice(alphabet) for i in range(16)])
print(f"AES secret key: {aes_key}")
AES suportă mai multe moduri de operare și necesită să specificăm care dintre ele îl vom folosi.
Alegem modul Cipher Block Chaining (CBC) furnizat de clasa modes.CBC din biblioteca cryptography. Modul CBC al AES utilizează aleatoriu pentru securitate suplimentară. Acest lucru necesită specificarea unui Vector de Inițializare (IV) aleatoriu, numit și nonce. Vom folosi și pentru aceasta un șir aleatoriu, la fel cum am procedat pentru cheie.
aes_initialization_vector = reduce(
lambda a, b: a + b, [np.random.choice(alphabet) for i in range(16)]
)
print(f"AES initialization vector: {aes_initialization_vector}")
Putem acum să instanțiem un cifru AES în numele expeditorului mesajului secret. Observă că vectorul de inițializare este transmis clasei modes.CBC pentru a configura modul de operare CBC.
Vom cripta apoi textul clar pentru a-l trimite.
# The encryptor is setup using the key and CBC. In both cases we need to convert the string (utf-8) into bytes
sender_aes_cipher = Cipher(
algorithms.AES(bytes(aes_key, "utf-8")),
modes.CBC(bytes(aes_initialization_vector, "utf-8")),
)
aes_encryptor = sender_aes_cipher.encryptor()
# update can add text to encypt in chunks, and then finalize is needed to complete the encryption process
aes_ciphertext = (
aes_encryptor.update(bytes(plaintext, "utf-8")) + aes_encryptor.finalize()
)
# Note the output is a string of bytes
print(f"Encrypted AES ciphertext: {aes_ciphertext}")
Pentru a-l decripta, să instanțiem un cifru AES în numele receptorului. Observă că receptorul intenționat are acces atât la cheia secretă, cât și la vectorul de inițializare, dar acesta din urmă nu trebuie să fie secret.
# Similar setup of AES to what we did for encryption, but this time, for decryption
receiver_aes_cipher = Cipher(
algorithms.AES(bytes(aes_key, "utf-8")),
modes.CBC(bytes(aes_initialization_vector, "utf-8")),
)
aes_decryptor = receiver_aes_cipher.decryptor()
# Do the decryption
aes_plaintext_bytes = aes_decryptor.update(aes_ciphertext) + aes_decryptor.finalize()
# convert back to a character string (we assume utf-8)
aes_plaintext = aes_plaintext_bytes.decode("utf-8")
print(f"Decrypted AES plaintext: {aes_plaintext}")
Aplicații ale criptografiei cu cheie simetrică
Deși cifrurile clasice precum cifrul Caesar au căzut în desuetudine cu mult timp în urmă, criptosistemele simetrice moderne, cum ar fi AES, sunt folosite într-o gamă largă de aplicații, printre care:
-
Criptarea și decriptarea datelor: SKC este utilizat pe scară largă pentru a proteja datele sensibile, fie că sunt stocate static pe un dispozitiv, fie că sunt transmise printr-o rețea. Exemple includ protejarea credențialelor utilizatorilor, criptarea mesajelor de e-mail și securizarea tranzacțiilor financiare, printre altele.
-
Comunicare securizată: Protocoalele de comunicare comune, cum ar fi SSL/TLS, folosesc o combinație de criptare cu cheie simetrică și asimetrică pentru a asigura confidențialitatea și integritatea datelor schimbate între două părți. Aceste mesaje sunt criptate și decriptate folosind criptarea cu cheie simetrică, care utilizează o cheie partajată. Cheia folosită în criptarea cu cheie simetrică este schimbată în siguranță prin criptarea cu cheie asimetrică, care utilizează o pereche de chei public-privat. Criptarea cu cheie simetrică este mult mai rapidă și, prin urmare, poate fi folosită pentru criptarea mesajelor de dimensiuni mari.
-
Verificarea autenticității: În anumite contexte, SKC este utilizat prin tehnici precum codurile de autentificare a mesajelor (MAC) și MAC-urile cu hash cu cheie (HMAC) pentru a verifica autenticitatea și integritatea mesajelor, asigurând o comunicare rezistentă la manipulare.
-
Criptarea fișierelor și a discurilor: Software-ul de criptare a întregului disc și instrumentele de criptare a fișierelor folosesc SKC pentru a proteja datele sensibile stocate pe hard disk-uri sau dispozitive de stocare portabile.
-
Rețele private virtuale: Tehnologiile VPN, care urmăresc să ofere canale de comunicare confidențiale, ferite de interceptare, pot folosi criptare cu cheie simetrică sau asimetrică pentru a conecta utilizatorii la distanță, precum și rețelele corporative.
Gama diversă de aplicații în care SKC este folosit impune, la rândul ei, ca criptosistemele simetrice să satisfacă un anumit set de criterii.
Principii ale criptografiei cu cheie simetrică
În această secțiune vom discuta câteva dintre principiile de bază care stau la baza securității algoritmilor de criptare cu cheie simetrică.
Rezistență la atacul prin forță brută: Cerința de bază pentru securitatea unui cifru de criptare este că dimensiunea spațiului de chei — cu alte cuvinte, numărul de chei distincte posibile din care cineva care folosește algoritmul ar fi putut alege — să fie foarte mare.
Rezistență la atacul criptanalitic: A doua cerință de bază pentru un cifru, simetric sau nu, este că poate genera texte cifrate care sunt imposibil de descifrat din punct de vedere informațional. În acest scop, o condiție necesară, dar nu suficientă, din perspectiva teoriei informației este că textele cifrate ar trebui să fie caracterizate de entropie ridicată, făcându-le indistinguibile de textul aleatoriu, fără tipare sau corelații perceptibile. Astfel, un atacator nu poate obține nicio informație despre textul clar sau cheia secretă încercând să analizeze textul cifrat prin analiză de frecvență sau alte tehnici statistice.
Rezistența la formele generale de atacuri criptanalitice, suficientă pentru a asigura securitatea semantică, este formalizată prin noțiunea de indistinguibilitate. Deși există mai multe variante de indistinguibilitate cu cerințe distincte, un criptosistem simetric este considerat sigur din punct de vedere semantic dacă satisface criteriul de Indistinguibilitate sub Atac cu Text Clar ales (IND-CPA). Aceasta înseamnă că un atacator nu poate distinge între criptările a două mesaje diferite, chiar dacă i se permite să trimită mai multe texte clare la alegerea sa algoritmului și să vadă textele cifrate corespunzătoare.
Așa cum vom discuta ulterior, IND-CPA necesită de obicei utilizarea aleatoriului pentru a garanta că de fiecare dată când un text clar dat este criptat cu o cheie secretă dată, textul cifrat rezultat este diferit în mod imprevizibil pentru fiecare criptare.
Moduri de eșec ale cifrurilor clasice: Înainte de apariția criptografiei moderne în anii 1970, majoritatea cifrurilor clasice utilizate în practică nu reușeau să satisfacă una sau ambele cerințe de mai sus. De exemplu, cifrurile de substituție timpurii, cum ar fi cifrul Caesar cu decalaj monoalfabetic, se caracterizau atât prin dimensiunea mică a spațiului de chei (a se vedea Tabelul 1), cât și prin entropie redusă a textului cifrat, făcându-le nesigure împotriva unei varietăți de atacuri criptanalitice, cum ar fi atacurile prin forță brută, analiza de frecvență și atacurile cu text clar cunoscut (KPT).
Cifrurile de substituție poliafabetice ulterioare, cum ar fi cifrul Vigenère și cifrul mașinii Enigma, aveau dimensiuni efectiv mari ale spațiului de chei, făcându-le rezistente la atacurile prin forță brută, dar erau susceptibile la analiza de frecvență și, respectiv, la atacurile KPT. Similar cifrurilor de substituție, cifrurile clasice de transpoziție, care rearanjează literele dintr-un mesaj în loc să le substituie, sunt și ele compromise de o varietate de atacuri, cum ar fi anagramarea, analiza statistică, forța brută și atacurile KPT, printre altele.
Teoretic, un cifru de substituție poliafabetică cunoscut sub numele de pad de unică folosință (OTP) este cunoscut ca fiind sigur din punct de vedere criptografic. Un OTP prezintă o cheie secretă care trebuie să fie (1) compusă din litere sau biți aleși aleatoriu, (2) cel puțin la fel de lungă ca textul clar original și (3) folosită o singură dată. Un OTP este impracticabil pentru aplicații reale deoarece, dacă cheia secretă — care trebuie să fie la fel de lungă ca textul clar și poate fi folosită o singură dată — ar putea fi partajată în siguranță, atunci la fel ar putea fi și textul clar original. OTP-ul ilustrează în schimb utilitatea aleatoriului în generarea textelor cifrate sigure.
Un atacator care încearcă să efectueze o căutare prin forță brută în spațiul de chei pentru a găsi o cheie care să decripteze mesajul trebuie să efectueze un număr de operații proporțional cu dimensiunea spațiului de chei.
Prin urmare, o dimensiune mare a spațiului de chei oferă rezistență împotriva atacurilor prin forță brută, făcându-le imposibil de realizat din punct de vedere computațional. Tabelul 1 listează dimensiunile spațiului de chei ale unor cifruri bine cunoscute.
Tabelul 1: Dimensiunile spațiului de chei pentru unele cifruri simetrice
| Cifru | Lungimea cheii | Dimensiunea spațiului de chei |
|---|---|---|
| Caeser shift | 1 | alphabet-size |
| Vigenere | n | alphabet-size |
| One-time-pad | plaintext-length | alphabet-size |
| DES | 56 | 2 |
| AES-128 | 128 | 2 |
| AES-192 | 192 | 2 |
| AES-256 | 256 | 2 |
| ChaCha20 | 256 | 2 |
| Schemele moderne de criptare cu cheie simetrică depășesc în mare măsură limitările cifrurilor clasice. Acestea produc text cifrat rezistent la criptanaliză și dispun de spații de chei mari, fiind totodată mult mai eficiente în practică decât un OTP. |
Cifruri bloc: O clasă de cifruri moderne — cum ar fi DES și AES — asigură securitatea combinând principiile confuziei și difuziei introduse inițial de Claude Shannon. Discutăm aceste noțiuni într-un context în care schemele de criptare lucrează cu reprezentări binare ale mesajelor:
-
Confuzie: Confuzia este caracteristica prin care fiecare bit din textul cifrat depinde de mai mulți biți ai cheii secrete. Aceasta asigură că o modificare mică a cheii secrete schimbă aproape toți biții textului cifrat, ascunzând relația dintre textul cifrat și cheia secretă.
-
Difuzie: Difuzia este caracteristica prin care inversarea unui singur bit în textul simplu ar trebui să modifice aproximativ jumătate dintre biții din textul cifrat și invers. Difuzia ascunde relațiile statistice dintre textul simplu și textul cifrat. Cifrurile cu difuzie adecvată satisfac așa-numitul criteriu avalanșă al criptografiei.
Cifrurile bloc implementează confuzia și difuzia folosind structuri criptografice cunoscute sub numele de rețele de substituție-permutare (SPN-uri) care operează pe blocuri discrete de date. Un SPN acceptă ca intrări un bloc de text simplu și cheia secretă și efectuează un număr specificat de runde de transformări pentru a produce un bloc de text cifrat. Fiecare rundă este compusă din structuri matematice alternative cunoscute sub numele de cutii de substituție (S-box-uri) și cutii de permutare (P-box-uri) sau operații echivalente.
Acestea implementează respectiv transformări neliniare complexe și liniare pe blocurile de intrare, conducând la efecte de avalanșă în textul cifrat.
SPN-urile sunt proiectate astfel încât creșterea numărului de runde să crească de obicei securitatea cifrului. Aceasta conduce la noțiunea de marjă de securitate. Marjă de securitate: Marja de securitate a unui cifru criptografic bazat pe SPN este diferența dintre numărul de runde din implementarea completă a cifrului și numărul maxim de runde cunoscut a fi atacabil folosind cel mai bun atac din lumea reală cunoscut.
De exemplu, în prezent, cele mai bune atacuri cunoscute mai rapide decât forța brută împotriva AES-256 pot sparge până la 9 runde din totalul de 14 runde ale cifrului complet atunci când este utilizat în modul standard cunoscut sub numele de modul Electronic Codebook (ECB). Prin urmare, în prezent marja de securitate a AES-256 este de 5 runde.
Cifruri flux: Ca alternativă la cifrurile bloc, criptologii moderni au proiectat și cifruri flux practic sigure, cum ar fi Chacha20. Aceste cifruri utilizează aleatorietatea ca parte fundamentală a designului lor și operează pe fluxuri de chei pseudoaleatoare de biți, în loc de blocuri discrete de date.
Astfel, cifrurile flux combină o cheie secretă și un vector de inițializare (IV) pentru a iniția un generator de numere pseudoaleatoare (PRNG) care produce un flux de chei de biți aleatori, care sunt ulterior combinați cu textul simplu dat pentru a produce textul cifrat. În acest sens, cifrurile flux sunt similare cu un one-time pad (OTP), dar au lungimi mai scurte ale cheilor secrete și chei reutilizabile, ceea ce le face mai practice. Cu toate acestea, din același motiv, nu garantează secretul perfect, spre deosebire de un OTP.
Securitate semantică: Încheiem această subsecțiune revenind la noțiunea de securitate semantică sau securitate la nivel IND-CPA introdusă mai sus. Operațiile de bază implementate de cifrurile bloc, cum ar fi S-box și P-box, sunt deterministe. Aceasta înseamnă că în modurile de operare standard, cum ar fi modul ECB, o pereche cheie-text simplu dată produce întotdeauna același text cifrat, o situație care este susceptibilă la atacuri cu text simplu ales.
Pentru a atinge securitatea la nivel IND-CPA, cifrurile bloc trebuie să opereze într-un mod care utilizează aleatorietatea introdusă printr-un vector de inițializare pseudoaleator (IV), cu cerința suplimentară că nicio două operații de criptare să nu folosească aceeași pereche cheie-IV. AES suportă mai multe moduri de operare, cum ar fi înlănțuirea blocurilor cifrate (CBC), care sunt sigure la nivel IND-CPA. O cerință similară se aplică și cifrurilor flux, prin care aceeași pereche cheie-IV nu trebuie folosită pentru a iniția PRNG-ul mai mult de o dată dacă se dorește IND-CPA.
Algoritmi populari de criptare cu cheie simetrică
Acum că am prezentat câteva principii de bază ale SKC, vom enumera câțiva algoritmi populari de criptare cu cheie simetrică pentru a ilustra varietatea abordărilor folosite în criptosistemele moderne. Atât cifrurile bloc moderne, cât și cifrurile flux moderne sunt utilizate în contexte diferite, după cum este ilustrat mai jos.
-
Advanced Encryption Standard: AES, introdus deja mai sus, este în prezent standardul de facto pentru SKC datorită caracteristicilor sale de securitate, eficiență și performanță. AES are dimensiuni fixe ale cheii de 128, 192 și 256 de biți și utilizează o rețea de substituție-permutare (SPN) cu mai multe runde. AES este cunoscut ca fiind rezistent la o gamă largă de atacuri criptanalitice. AES a fost anunțat ca Standard Federal de Procesare a Informațiilor (FIPS) pentru criptarea cu cheie simetrică în Statele Unite în 2001.`
-
Data Encryption Standard (DES) și Triple Data Encryption Standard (3DES): DES a fost un cifru bloc inventat inițial de Horst Feistel și colaboratorii săi de la IBM® în anii 1970 și utiliza un SPN cu o cheie relativ scurtă de 56 de biți. DES a fost adoptat ca FIPS pentru criptarea cu cheie simetrică în Statele Unite până la sfârșitul anilor 1990, când s-a demonstrat că poate fi spart prin atacuri de forță brută cu hardware specializat, din cauza dimensiunii mici a spațiului de chei. Ulterior, 3DES a fost introdus ca înlocuitor și aplică algoritmul DES de trei ori cu chei diferite, crescând lungimea cheii la 168 de biți. Cu toate acestea, 3DES este în mare parte depășit de AES.
-
Blowfish și Twofish: Blowfish și succesorul său, Twofish, sunt cifruri bloc propuse de criptograful Bruce Schneier în anii 1990. Blowfish și Twofish permit lungimi variabile ale cheii de până la 448 de biți, respectiv 256 de biți, oferind o anumită flexibilitate în compromisul dintre securitate și performanță. Spre deosebire de AES, aceștia includ și S-boxes dependente de cheie. Twofish a fost unul dintre finaliștii în competiția NIST pentru selectarea Advanced Encryption Standard, dar în cele din urmă nu a fost ales. Ambii algoritmi sunt în prezent considerați siguri.
-
Rivest Ciphers (RC2, RC4, RC5 și RC6): Familia de algoritmi cu cheie simetrică Rivest Cipher (RC) a fost proiectată de Ron Rivest începând cu anii 1980. RC2 a fost un cifru bloc timpuriu pe 64 de biți, în timp ce RC4 a fost un cifru flux utilizat pe scară largă în protocoalele de securitate legate de traficul web, datorită simplității și vitezei sale. Niciunul nu este în prezent considerat sigur. RC5 și RC6 sunt cifruri bloc bazate pe SPN, proiectate cu dimensiune de bloc, dimensiune a cheii și număr de runde personalizabile. La fel ca Twofish mai sus, RC6 a fost finalist în competiția NIST AES și este considerat sigur.
-
Salsa20 și ChaCha20: Salsa20 și ChaCha20 se referă la o familie înrudită de cifruri flux proiectate de criptograful Daniel Bernstein în anii 2000. Salsa20 face parte din portofoliul profil-1 al proiectului de validare criptografică eSTREAM al Uniunii Europene. ChaCha20, o modificare a Salsa20, a fost proiectat pentru a crește caracteristicile de difuzie și performanța. În prezent, ChaCha20 este considerat sigur și oferă performanțe mai bune în absența accelerării hardware dedicate AES. Prin urmare, ChaCha20 găsește utilizare în anumite contexte, cum ar fi protocoale de rețea precum QUIC și dispozitive mobile cu procesoare ARM.
Avantajele criptografiei cu cheie simetrică
După ce am descris proprietățile criptosistemelor cu cheie simetrică și unele dintre principiile care stau la baza dezvoltării lor, enumerăm acum câteva dintre principalele avantaje ale SKC față de criptografia cu cheie asimetrică. Aceasta din urmă va fi discutată în lecțiile următoare.
-
Viteză și eficiență: Algoritmii cu cheie simetrică sunt mai potriviți pentru criptarea unor volume mari de date sau pentru utilizarea în scenarii de comunicare în timp real, deoarece sunt în general mai rapizi și mai puțin intensivi în resurse decât omologii lor asimetrici. Algoritmii SKC, cum ar fi AES, scalează liniar cu dimensiunea textului simplu și nu implică operații matematice algebric intensive. Consultă Tomoiaga et al. pentru o analiză detaliată a caracteristicilor de performanță ale AES.
-
Scalabilitate: Datorită supraîncărcării computaționale relativ reduse, algoritmii cu cheie simetrică scalează bine cu numărul de utilizatori și cu cantitatea de date criptate.
-
Simplitate: Protocoalele de criptare simetrică sunt adesea mai ușor de implementat și de înțeles față de abordările cu cheie asimetrică, ceea ce le face atractive pentru dezvoltatori și utilizatori.
Provocări și limitări ale criptografiei cu cheie simetrică
În ciuda avantajelor, criptografia cu cheie simetrică are și câteva provocări și limitări:
-
Distribuirea și gestionarea cheilor: În SKC, atât expeditorul, cât și destinatarul unui mesaj trebuie să aibă acces la aceeași cheie, care trebuie păstrată confidențială față de părțile neautorizate. Dacă cheia este cumva interceptată sau compromisă de o terță parte, securitatea datelor criptate se pierde și ea. Distribuirea și gestionarea în siguranță a cheii secrete reprezintă, prin urmare, o provocare majoră. Cu toate acestea, soluția la această provocare se află în afara SKC-ului în sine.
-
Lipsa nerepudierii: Nerepudierea se referă la capacitatea de a dovedi că o anumită parte a trimis un mesaj. În SKC, deoarece aceeași cheie este folosită atât pentru criptare, cât și pentru decriptare, nu este posibil să se determine care parte a creat un anumit text cifrat. În contrast, criptografia cu cheie asimetrică oferă nerepudiere prin utilizarea semnăturii digitale.
Pentru a aborda aceste provocări, criptografia cu cheie simetrică este adesea folosită în combinație cu criptografia cu cheie asimetrică. De exemplu, se folosește frecvent criptarea cu cheie asimetrică pentru a transmite în siguranță o cheie secretă partajată relativ scurtă între expeditor și destinatar. Aceasta permite utilizarea ulterioară a criptării cu cheie simetrică pentru a transmite eficient date și mesaje mult mai mari.
Calculul cuantic și criptarea cu cheie simetrică: riscuri și atenuare
Criptografia cuantică oferă o cale promițătoare pentru atenuarea riscurilor în era digitală, adoptarea produselor cuantic-sigure urmând să protejeze informațiile noastre împotriva amenințării iminente a progreselor în calculul cuantic.
În cele ce urmează, discutăm riscurile pe care calculatoarele cuantice le prezintă pentru schemele de criptare cu cheie simetrică introduse în secțiunea anterioară și conturăm câteva căi potențiale de atenuare a riscurilor.
Atacuri criptografice cuantice
Există două clase distincte de amenințări cuantice la adresa algoritmilor criptografici tradiționali:
-
Atacuri cuantice de tip brute force: Acestea se referă la situații în care atacatorul folosește un calculator cuantic pentru a executa un algoritm cuantic specializat pentru a efectua o căutare brute force prin spațiul cheilor unui cifru simetric. Primitiva cuantică cea mai relevantă pentru a permite acest tip de atac este algoritmul lui Grover.
-
Atacuri criptanalitice cuantice: Acestea se referă la situații în care calculatoarele cuantice sunt utilizate pentru a executa atacuri criptanalitice care vizează recuperarea cheii secrete sau a textului simplu într-un mod mai eficient decât o căutare brute force. Posibilitatea de a executa cu succes atacuri criptanalitice cuantice depinde de mulți factori legați de structura matematică a cifrului analizat, precum și de potențiale slăbiciuni în implementări specifice.
Strategii de atenuare a riscurilor pentru atacurile cuantice
Înainte de a discuta strategiile de atenuare a riscurilor pentru atacurile cuantice, hai să introducem noțiunea de nivel de securitate al unui cifru criptografic:
Nivelul de securitate este o măsură a dificultății de a sparge un cifru, exprimată în termenii numărului de operații computaționale pe care le-ar necesita spargerea cu succes a cifrului.
În mod obișnuit, nivelul de securitate este exprimat în biți; adică, în general, un cifru oferă securitate de N biți dacă necesită operații pentru a-l sparge. Pe calculatoarele clasice, presupunând că un cifru simetric este altminteri criptografic sigur, nivelul de securitate este aproximativ sinonim cu lungimea cheii.
De exemplu, nivelul de securitate al AES-128, care are o cheie de 128 de biți, este considerat în general a fi de 128 de biți, deoarece ar necesita de ordinul 2 operații pentru ca un atacator care folosește un calculator clasic să încerce toate cheile posibile de 128 de biți din spațiul cheilor.
Atacuri de tip brute force și măsuri de atenuare
Riscul atacurilor cuantice de tip brute force: Un atac cuantic de tip brute force schimbă evaluarea de mai sus, deoarece algoritmul lui Grover îi permite unui atacator care dispune de un calculator cuantic adecvat să caute în spațiul de chei al unui cifru de patru ori mai rapid decât orice calculator clasic.
De exemplu, același atac brute force asupra AES-128 cu algoritmul lui Grover ar putea fi realizat cu doar 2 operații. Prin urmare, nivelul de securitate al AES-128 scade de la 128 de biți la 64 de biți în fața unui adversar cuantic care rulează căutarea Grover. Deoarece puterea de calcul a crescut în mod tradițional exponențial în timp, în prezent un nivel de securitate de 64 de biți este considerat nesigur, ceea ce înseamnă că, odată ce calculatoarele cuantice suficient de capabile vor deveni realitate, AES-128 va trebui abandonat.
Același tip de calcul se aplică și altor cifruri de bloc sau de flux simetrice, prin care nivelul de securitate pentru o lungime dată a cheii este efectiv redus la jumătate de algoritmul lui Grover.
Atenuarea riscului atacurilor cuantice de tip brute force: Considerațiile de mai sus implică faptul că o modalitate evidentă de a rezista atacurilor cuantice de tip brute force este să dublezi cel puțin lungimile minime ale cheilor utilizate pentru criptarea cu cheie simetrică.
Prin urmare, pentru a asigura o securitate de 128 de biți față de atacurile cuantice de tip brute force, ar trebui pur și simplu să folosești cifruri precum AES-256 sau ChaCha20 care utilizează chei de 256 de biți. Aceasta este considerată sigură deoarece, chiar și cu calculatoare cuantice, efectuarea a 2 operații pentru a sparge cifrurile nu este fezabilă în viitorul previzibil.
Deși teoretic simplu, această soluție propusă de dublare a dimensiunilor cheilor nu este lipsită de costuri, deoarece cheile mai lungi implică un cost de calcul suplimentar pentru sarcinile de rutină de criptare-decriptare, împreună cu performanțe mai lente, cerințe mai mari de memorie și un consum suplimentar de energie.
Atacuri criptanalitice și măsuri de atenuare
Riscul atacurilor cuantice criptanalitice: Riscul pe care atacurile cuantice criptanalitice îl reprezintă pentru sistemele criptografice cu cheie simetrică este în prezent cercetat activ de criptografi. Combinația dintre calculul clasic și cel cuantic extinde potențial gama de instrumente disponibile atacatorilor pentru a sonda slăbiciunile din structura matematică a cifrurilor, iar o gamă largă de noi atacuri cuantice criptanalitice sunt în prezent propuse. Acestea includ cuantizări ale tehnicilor clasice cunoscute, cum ar fi criptanaliza liniară și diferențială, precum și noi moduri de atac fără corespondent clasic.
Un studiu recent de criptanaliză cuantică a Standardului de Criptare Avansată (AES) a constatat că cifrul a rămas rezistent la diverse atacuri cuantice criptanalitice cunoscute și a continuat să prezinte o marjă de securitate post-cuantică adecvată. Cu toate acestea, unele studii au constatat că diverse cifruri simetrice considerate sigure din punct de vedere clasic sunt ușor compromise de așa-numitul atac cuantic cu text simplu ales. Prin urmare, au fost propuse și noi primitive pentru criptarea cu cheie simetrică, concepute special pentru era post-cuantică.
Atenuarea riscului atacurilor cuantice criptanalitice: Dat fiind că criptanaliza cuantică ca disciplină se află la început, este posibil ca criptografia simetrică post-cuantică să evolueze rapid pe măsură ce apar noi atacuri cuantice criptanalitice și pe măsură ce sunt propuse și evaluate noi cifruri rezistente la acestea. Prin urmare, cea mai bună strategie pentru a atenua riscul atacurilor cuantice criptanalitice în viitorul previzibil este agilitatea criptografică (sau crypto-agilitatea). Agilitatea criptografică se referă la capacitatea unui sistem informațional de a adopta rapid și ușor primitive criptografice alternative fără modificări perturbatoare ale infrastructurii sistemului.
Agilitatea criptografică necesită capacitatea de a înlocui algoritmii obsoleti utilizați pentru criptare, decriptare, semnături digitale sau alte funcții criptografice cu efort și perturbare minime. Sistemele crypto-agile vor fi bine poziționate pentru a gestiona tranziția la criptografia post-cuantic ă cu cheie simetrică.
Rezumat
Criptografia cu cheie simetrică oferă soluții robuste și eficiente pentru securizarea informațiilor digitale. Simplitatea utilizării aceleiași chei atât pentru criptare, cât și pentru decriptare permite performanțe ridicate și scalabilitate, făcând SKC potrivit pentru o gamă largă de aplicații.
Securitatea SKC se bazează pe rezistența algoritmică la atacurile criptografice, precum și pe gestionarea corespunzătoare a cheilor secrete. Sistemele criptografice moderne cu cheie simetrică combină principiile de confuzie, difuzie și aleatorie, împreună cu dimensiuni adecvate ale cheilor, pentru a obține securitate semantică. Gestionarea cheilor secrete, deși crucială, nu poate fi realizată cu SKC singur.
Înțelegerea proprietăților și limitărilor SKC va permite dezvoltatorilor să proiecteze, să implementeze și să desfășoare soluții de tehnologie a informației sigure, utilizând abordări care includ dimensiuni mai mari ale cheilor după cum este necesar, și utilizarea de noi algoritmi.
Avansarea calculului cuantic și a învățării cuantice introduce o nouă dimensiune în criptografia cu cheie simetrică. Calculatoarele cuantice au potențialul de a submina securitatea oferită de algoritmii clasici cu cheie simetrică, generând necesitatea unor abordări criptografice rezistente la cuantum pentru a asigura confidențialitatea și protecția datelor în fața peisajelor tehnologice în continuă evoluție.