Criptare Simetrică
Criptarea simetrică implică folosirea unei singure chei atât pentru criptarea cât și pentru decriptarea datelor. Astfel, pentru orice mesaj M și pentru orice cheie K, trebuie să se respecte următoarea egalitate:
D(E(M, K), K) = M
Presupunem că Alice și Bob au aceeași cheie secretă K, iar Alice vrea să-i trimită mesajul M lui Bob:
- Alice folosește algoritmul de encriptie pentru a obține un cifru C = E(M, K)
- Alice trimite C către Bob. Oricine interceptează acest mesaj, nu poate obține mesajul original M
- Bob primește C și aplică algoritmul de decriptie pentru a recupera mesajul original M = D(C, K)
Exemple de algoritmi de criptare simetrică:
AES, DES, 3DES, IDEA, Blowfish
Notă
În cazul criptarii simetrice dificultatea provine din necesitatea existenței unui mecanism de securitate pentru distribuirea cheii secrete. În plus, nu este fezabil ca orice pereche de entități care doresc să comunice criptat să împărtășească un secret (e.g. google ar trebui să aibă câte o cheie pentru fiecare client).
Există protocoale de schimbare de chei (key exchange), astfel încât două entități să poată alege împreună o cheie privată peste un canal de comunicare nesigur, astfel încât nimeni altcineva care poate vedea informația transmisă să nu poată determina cheia (și, deci, nici mesajele ulterioare, criptate cu cheia aleasă). Cel mai cunoscut astfel de protocol este DiffieHellman. Acesta este totuși nesigur în cazul atacurilor de tipul Man-in-the-Middle când atacatorul poate intercepta mesaje și produce propriile mesaje.