PKI – Definitie si use case-uri
Organizatiile de pretutindeni depind de o infrastructura PKI pentru a obtine securitate prin criptare. Mai exact, securitatea este obtinuta printr-o forma de criptare asimetrica, in care orice poate cripta un mesaj folosind o cheie publica, insa numai o singura persoana poate decripta mesajul folosind cheia privata corespunzatoare. Aceste perechi de chei pot fi folosite de oameni, dispozitive si aplicatii in mai multe scenarii printre care si:
- sesiuni web securizate prin SSL/TLS
- S/MIME sau email criptat
- semnaturi digitale pentru fisiere, documente legale si software
- conexiuni remote de tip SSH
- tehnologii de tipul blockchain
PKI a aparut in anii 1990 pentru a ajuta organizatiile, in special pe cele din zona de comert electronic, cu emiterea si managementul certificatelor digitale. Aceste certificate PKI verifica identitatea sau cheia publica a unei entitati care detine o anumita cheie privata pereche. Certificatele sunt similare cu o carte de identitate sau cu un pasaport, in sensul ca exista o autoritate terta in care ambele capetele ale unei conexiuni au incredere numita autoritate de certificate, pentru a evita cazurile de certificate “contrafacute” care pot pune in pericol securitatea datelor.
PKI – Elemente componente
Criptarea asimetrica
In centrul unei infrastructuri PKI se afla criptografia pe baza de chei publice sau criptarea asimetrica. Aceasta forma de criptare rezolva o problema majora a criptarii simetrice si anume cum schimba cele doua capete ale conexiunii cheia folosita la criptare si decriptare daca mediul de comunicare dintre este unul nesigur. Solutia este reprezentata de folosirea a doua chei criptografice diferite (de unde numele de criptare asimetrica): o cheie privata si o cheie publica. Mesajul care trebuie transmis catre destinatie va fi criptat de catre sursa cu cheia publica a destinatiei, iar destinatia va putea decripta mesajul transmis de sursa folosind cheia sa privata care este stiuta doar de ea.
Pentru a intelege mai bine procesul sa ne imaginam o conversatie intre Alice si Bob (cele mai populare personaje din retelistica 🙂 ) care vor sa isi transmita mesaje intr-un mod sigur pentru ei.
Atunci cand Alice vrea sa ii comunice ceva lui Bob, Alice va folosi cheia publica a lui Bob pentru a cripta mesajul. Mesajul va putea fi decriptat doar de Bob pentru ca doar el are cheia privata corespunzatoare. Alice are siguranta ca nimeni altcineva nu poate sa citeasca mesajul, chiar daca acesta este interceptat, atat timp ca Bob isi pastreaza in siguranta cheia sa privata.
Criptarea asimetrica face posibila si alte functii pe care criptarea simetrica nu le poate oferi, cum ar fi autentificare unui mesaj, integritatea unui mesaj, non-repudierea unui mesaj, functii care in practica sunt implementate prin semnaturi digitale:
Daca Bob ii transmite ceva lui Alice, Bob poate anexa la finalul mesajui o semnatura criptata cu cheia lui privata. Cand Alice primeste mesajul lui Bob ea poate folosi cheia publica a lui Bob pentru:
- a verifica autentificarea sursei mesajului – Bob sau cineva cu cheia lui privata a transmis mesajul
- a se asigura ca mesajul nu a fost modificat in transit – daca mesajul a fost modificat, verificarea semnaturii lui Bob esueaza
- non-repudierea mesajului – Bob nu poate pretinde ca nu a fost el cel care a transmis mesajul lui Alice, pentru ca doar el are acces la cheia privata (in conditii normale, cand Bob nu este hack-uit 🙂 )
Autoritatea de certificate
Mai ramane o problema, destul de importanta, cea de “man in the middle”. Cum se poate asigura Alice ca cheia publica a lui Bob este chiar a lui si nu a unui actor malitios interpus intre ei? Actorul malitios poate intercepta cheia publica a lui Bob, si poate sa isi creeze propria pereche de chei si sa ii transmita lui Alice cheia sa publica. Cand Alice vrea sa ii transmita ceva lui Bob, va cripta mesajul folosind de fapt cheia publica a atacatorului, care va putea decripta mesajul transmis de Alice.
PKI rezolva aceasta problema prin existenta unei entitati terte numita autoritate de certificate. (Certificate Authority-CA). Un CA valideaza legitimitatea unei entitati (persoana fizica, dispozitiv, aplicatie) care doreste sa foloseasca un certificat digital pentru a securiza o conversatie sau o tranzactie online. CA-ul semneaza cheile publice ale lui Alice si Bob cu cheia sa privata pentru a le confirma acestora autenticitatea si identitatea fiecaruia dintre ei. Alice are incredere in cheia publica a lui Bob, pentru ca aceasta cheie este semnata de o autoritate in care Alice are incredere. Viceversa este valabil si pentru Bob. Atat Alice, cat si Bob trebuie sa aiba cheia publica a CA-ului care a semnat certificatul corespondentului pentru a valida acel certificat.
Pentru a putea avea certificatul semnat de un CA, atat Alice, cat si Bob trebuie sa genereze un document numit Certificate Signing Request-CSR, in urma caruia rezulta perechea de chei: cheia privata si cheia publica. Cheia publica este trimisa catre CA, care verifica informatiile completate de persoana care solicita certificatul si daca totul este ok, CA-ul semneaza certificatul emis cu cheia sa publica si il trimite catre solicitant. Certificatul obtinut are urmatoarele proprietati:
- este similar cu un act de identitate
- contine informatii despre o persoana sau organizatie
- este emis de o autoritate terta de incredere
- este criptografic rezistent
- are o perioada de valabilitate
- contine informatii care ii pot atesta autenticitatea
- este prezentat cuiva pentru a fi validat
PKI ne ajuta sa securizam lumea digitala in care ne desfasuram vietile, atat la serviciu, cat si acasa prin protejarea datelor noastre si a modului in care transmitem aceste date peste Internet sau peste orice retea nesecurizata si prin verificarea identitatilor digitale cu care “conversam”. Pe masura ce devenim din ce in ce mai conectati, mai digitali si folosim mai multe aplicatii, aceasta securitate conferita de PKI devine din ce in ce mai critica. O infrastructura PKI nu este simplu de creat si de gestionat, dar este un must pentru organizatiile care vor sa ofere servicii sigure pentru clientii lor, pentru parteneri si pentru colaboratori.
Mihai Dumitrascu, Sr Systems Engineer