2.1 Ce este PGP?
Cerintele de securitate in posta electronica au condus la realizarea
mai multor pachete de programe destinate protectiei criptografice a scrisorilor
trimise prin retele. Dintre acestea, cel mai popular este PGP (Pretty Good Privacy)
dezvoltat de Philip Zimmermann in SUA. Acest pachet de programe a starnit
serioase controverse, datorita raspandirii sale pe Internet si a folosirii
lui in toata lumea, fara sa se respecte drepturile de licenta si de export,
destul de rigide in privinta algoritmilor criptografici. Zimmerman a fost
anchetat, in 1994, de o comisie federala, pentru acuzatia de nerespectare
a legilor americane privind exportul de sisteme criptografice. FBI l-a invinuit
pe Zimmerman de punerea pe Internet a PGP-ului, in arhive publice, ceea
ce a condus la o raspandire necontrolabila a utilizarii sale. PGP-ul este
folosit astazi de categorii de utilizatori diverse, de la simpli studenti si
particulari pana la organizatii nationale, internationale si agentii guvernamentale. h1c10cv
PGP este un pachet de programe destinat protectiei postei electronice si a fisierelor,
prin cifrare clasica si cu chei publice. Cu ajutorul sau se pot stabili modalitati
sigure de comunicatie intre persoane, nefiind necesara schimbarea prealabila
a unor chei de cifrare. PGP include un sistem sigur de gestiune a cheilor, autentificarea
datelor prin semnatura digitala si compresia datelor. El functioneaza pe diferite
platforme: MS-DOS, UNIX, VAX/VMS si altele. PGP satisface trei cerinte fundamentale: a) caracterul privat al postei electronice, ceea ce inseamna ca doar destinatarul
desemnat al scrisorii poate citi continutul acesteia; b) autentificarea emitatorului; c) autentificarea mesajelor.
Iata ce poate face PGP-ul:
- criptarea fisierelor: poate fi folosit pentru a cripta fisiere proprii, folosind
algoritmul de criptare cu chei secrete IDEA; dupa criptare, fisierul poate fi
decriptat doar de cineva care cunoaste parola de criptare a fisierului;
- crearea de chei secrete si publice: aceste chei sunt necesare pentru a cripta
si semna mesajele transmise sau pentru a decripta mesajele primite;
- gestionarea cheilor: PGP-ul poate fi folosit pentru a crea si intretine
o baza de date care sa contina cheile publice ale persoanelor cu care vrem sa
corespondam;
- transmiterea si receptionarea de mesaje e-mail criptate: cu ajutorul PGP-ului
se pot trimite scrisori criptate si decripta scrisorile primite;
- folosirea semnaturilor digitale: PGP-ul poate face o semnatura electronica
a documentelor sau poate verifica semnatura oricarei persoane;
- certificarea cheilor: PGP-ul asigura aceasta prin semnarea electronica a cheilor
publice;
- revocarea, dezactivarea si custodia cheilor: daca cheile sunt compromise,
acestea pot fi revoate sau dezactivate; acestea pot fi tinute la loc sigur,
folosind facilitatile de custodie;
- configurarea dupa necesitati a PGP-ului: setarile variabilelor din fisierul
de configurare a PGP-ului pot fi schimbate;
- folosirea serverelor de chei PGP de pe Internet: va puteti adauga cheia publica
la o baza de date server sau puteti obtine alte chei publice care se afla pe
server.
2.2 Criptarea folosita de PGP
Securitatea tuturor sistemelor criptografice se bazeaza pe o cheie criptografica.
Sistemul de criptare cu chei private, numit de PGP criptografie conventionala,
foloseste o singura cheie, cheia privata, atat pentru criptare cat
si pentru decriptare. In sistemele cu chei publice, un proces matematic
genereaza doua chei inrudite matematic. Un mesaj criptat cu o cheie poate
fi decriptat doar cu perechea sa. PGP-ul nu reclama un schimb prealabil de chei
intre utilizatori. El foloseste o combintie a sistemelor criptografice
simetrice si cu chei publice:
- sistem simetric, bazat pe cifrul IDEA (International Data Encryption Standard)
cu o singura cheie K, pentru cifrarea continutului scrisorilor sau fisierelor;
- sistem asimetric RSA (cu doua chei, E si D) pentru protectia si distributia
cheii K de unica intrebuintare (numita si cheie de sesiune) cu care se
face cifrarea simetrica a scrisorii, precum si pentru autentificarea prin semnatura
digitala a mesajului si a emitatorului.
PGP-ul foloseste urmatoarele elemente in asigurarea securitatii: a) cheie publica: cheia publica a unei persoane este folosita pentru criptarea
mesajelor destinate acelei persoane; doar acea persoana va putea decripta si
citi mesajele. Cheia se numeste publica, deoarece proprietarul ei o face publica
fara compromiterea securitatii sistemului; b) cheie secreta: este folosita pentru decriptarea mesajelor care au fost cifrate
cu o cheie publica. Cheia se numeste secreta sau privata deoarece pentru a asigura
securitatea conversatiilor trebuie tinuta secreta; daca cineva obtine cheia
secreta a unei persoane, putea citi mesajele destinate acelei persoane; c) cheie sesiune: aceasta cheie este generata aleator, pentru fiecare mesaj.
Cheia de sesiune PGP este o cheie pentru algoritmul IDEA, de 128 de biti. Pasii
facuti de PGP in criptarea unui mesaj si transmiterea sa prin e-mail sunt:
1) creeaza aleator o cheie de sesiune pentru mesaj;
2) foloseste algoritmul IDEA pentru criptarea mesajului cu cheia de sesiune;
3) foloseste un algoritm RSA pentru criptarea (anveloparea) cheii de sesiune
cu cheia publica a destinatarului;
4) leaga impreuna mesajul criptat si cheia de sesiune criptata si le pregateste
pentru transmitere.
PGP-ul trateaza automat cheile sesiune, fara nici o interventie din partea utilizatorului. d) certificate de chei: PGP-ul tine fiecare cheie publica intr-un certficat
al cheii. Fiecare astfel de certificat contine:
1) cheia publica propriu-zisa;
2) unul sau mai multi identificatori de utilizator (user ID) pentru creatorul
cheii (de obicei numele persoanei si adresa de e-mail);
3) data in care a fost creata cheia;
4) optional, lista de semnaturi digitale furnizate de persoane care confirma
corectitudinea cheii. e) inele de chei: PGP-ul tine toate cheile publice ale persoanelor cu care comunica
un anumit utilizator intr-un singur fisier, numit keyring. Folosirea unui
fisier, pentru toate cheile publice, este mult mai eficienta decat tinerea
fiecarei chei in fisierul ei propriu. Majoritatea utilizatorilor folosesc
doua fisiere keyring:
- secring.pgp -; inelul de chei secrete; in acest fisier utilizatorul
isi tine toate cheile sale secrete;
- pubring.pgp -; inelul de chei publice; cu cheile persoanelor cu care
utilizatorul comunica. f) parole (pass phrases): de fiecare data cand este creata o pereche de
chei cheie publica -; cheie secreta, PGP-ul cere crearea si introducerea
unei parole. Cea mai importanta functie a acestei parole este aceea de a decripta
cheia secreta pe care PGP-ul o tine in secring.pgp. Daca nu se cunoaste
parola corespunzatoare, cheia secreta nu poate fi folosita. Se poate asocia
cate o parola pentru fiecare cheie secreta sau o parola unica, pentru
toate cheile secrete. Parola este ceruta in urmatoarele situatii:
- cand se incearca decriptarea unui mesaj;
- cand se incearca semnarea unui mesaj cu cheia secreta;
- daca se incearca criptarea unui fisier cu un sistem cu chei secrete
(IDEA), PGP-ul va cere parola de acces la fisier. g) semnaturi digitale: reprezinta modalitatea prin care se confirma autenticitatea
mesajelor electronice in PGP. Pentru obtinerea unei semnaturi digitale,
PGP-ul proceseaza mesajul cu o functie, numita functia rezumat a mesajului (hash),
care va produce un numar pe 128 de biti. Acest numar este apoi semnat cu cheia
privata, obtinandu-se un bloc PGP semnat si care va fi plasat la sfarsitul
mesajului. Cand receptionati un mesaj semnat, PGP-ul verifica semnatura,
inspectand portiunea de mesaj cuprinsa intre “---BEGIN PGP
SIGNED MESSAGE---“ si “---BEGIN PGP SIGNATURE---“ si aplica
aceeasi functie rezumat care a fost aplicata mesajului original. PGP-ul va decripta
apoi blocul semnaturii digitale, folosind cheia publica a expeditorului, si
apoi va compara rezultatele obtinute. Daca rezultatele se potrivesc, atunci
mesajul nu a fost modificat dupa ce el a fost semnat. h) semnaturi pe certificate de chei: o dificultate in criptarea cu chei
publice o reprezinta mecanismul de distribuire a insasi cheilor publice.
Ideea ar fi ca fiecare cheie publica sa poata fi pusa intr-o lista asemanatoare
unei carti de telefon. Dar nu exista nici o cale de a verifica daca o cheie
publica dintr-o astfel de lista apartine persoanei careia se presunpune ca apartine.
PGP-ul nu rezolva aceasta problema de distribuire, dar o face mai putin problematica,
permitand persoanelor sa semneze fiecare certificat de chei publice. Tehnica
folosita de PGP la crearea bibliotecilor de chei publice valide se numeste “web
of trust”.
2.3 Prelucrarea unei scrisori PGP
La emisia unei scrisori, atunci cand sunt folosite atat serviciile
de confidentialitate cat si de autenticitate, PGP executa urmatoarele
prelucrari:
? Folosindu-se algoritmul de hash MD5, se creeaza un cod de autentificare MAC
(Message Authentication Code), de 128 de biti, puternic dependent de corpul
mesajului; codul va fi folosit in procesul de autentificare:
MAC = MD5 (Mesaj)
?Prin cifrare cu cheia secreta KprivataA a emitatorului A al scrisorii, folosindu-se
algoritmul cu chei publice RSA, se creeaza semnatura digitala pentru autentificarea
mesajului si a originii sale:
Semnatura = RSA (MAC, KprivataA)
?Scrisoarea este comprimata, folosindu-se cunoscutul program pkzip. Acest lucru
asigura o reducere a volumului de date ce trebuie cifrate si apoi transmise:
Mesaj-comprimat = pkzip (Mesaj)
? Se genereaza pseudoaleator o cheie de cifrare K (folosita doar pentru acest
mesaj), numita cheie de sesiune. Ea reprezinta de fapt un numar pe 128 de biti:
Cheie-sesiune = random()
? Mesajul comprimat anterior este apoi cifrat cu ajutorul algoritmului IDEA,
folosindu-se cheia generata in pasul precedent:
Mesaj-cifrat = IDEA (Mesaj-comprimat, Cheie-sesiune)
? Folosind acelasi sistem cu chei publice (cheia publica KpublicaB a destinatarului
B al scrisorii), se pune in anvelopa cheia de sesiune pentru a putea fi
trimisa in mod sigur la receptor. Acest lucru inseamna cifrarea
cheii de sesiune cu cheia publica a destinatarului.
Cheie-sesiune-anvelopata = RSA (Cheie-sesiune, KpublicaB)
? Se creeaza scrisoarea protejata, in vederea transmiterii ei la destinatie,
folosind servicii obisnuite de e-mail:
Scrisoare-protejata = aKey-ID, Semnatura, Data-semnatura, Cheie-sesiune-anvelopata,
Mesaj-cifrati