Criptografia
Criptografia este o știință care aplică matematică complexă și logică pentru a proiecta
mecanisme puternice de criptare. Această știință este asociată cu procesul transformării textului
în clar în text neinteligibil și vice-versa. Reprezintă o metodă prin care doar cel căruia îi este
destinat conținutul să poată să citească și să îl proceseze. Realizarea unei criptări puternice şi
ascunderea sensului real al datelor, necesită de asemenea aplicarea unor metode cunoscute sau
noi pentru ca acest proces să poată fi realizat cu succes, astfel criptografia devenind o artă.
Aceasta nu protejează doar datele pentru a nu fi alterate, ci poate fi de asemenea utilizată pentru
autentificarea utilizatorilor.
Inițial criptografia a fost sinonimă cu criptarea, dar odată cu nevoia crescută de securitate
aceasta a început să se dezvolte în altă direcție utilizând teoria matematică și practica din
computer science.
Conceptele moderne pe care se bazează criptografia în ceea ce priveşte obiectivele de
securitate care trebuie asigurate în sistem variază într-o gamă destul de largă. În ceea ce priveşte
criptografia în general şi nu securitatea în ansamblu, putem distinge patru obiective majore de
securitate care sunt recunoscute la nivel general în domeniu: confidenţialitate, integritate,
autenticitate și non-repudiere.
Confidențialitatea - înseamnă asigurarea faptului că informaţia rămâne accesibilă doar
părţilor autorizate în acest sens. Acesta este cel mai vechi obiectiv al criptologiei. În rândul
necunoscătorilor este încă larg răspândită opinia că noţiunea de criptografie este sinonimă cu cea
de confidenţialitate. Sigur opinia este eronată pentru că criptografia se ocupă şi de asigurarea
obiectivelor ce sunt enumerate în continuare şi care nu au nici o legătură cu păstrarea secretă a
informaţiei. În ceea ce priveşte asigurarea acestui obiectiv prin tehnici criptografice, el este
îndeplinit cu ajutorul funcţiilor de criptare. În general datorită eficienţei se folosesc funcţii
simetrice (cu cheie secretă), dar scenarii practice conduc în general la orchestrarea acestora cu
funcţii asimetrice (cu cheie publică).
Integritatea - se referă la asigurarea faptului că informaţia nu a fost alterată pe parcursul
transmisiei sau de către un posibil adversar. Funcţiile criptografice utilizate în acest scop sunt
funcţiile hash care fac ca modificarea unui singur bit de informaţie să poată fi detectată.
Menţionăm că în principiu este greşită utilizarea funcţiilor de criptare simetrice şi asimetrice în
acest scop, instrumentul criptografic dedicat fiind funcţiile hash (şi codurile MAC sau
semnăturile digitale în contextul mai larg al autentificării). Desigur, există și funcţii simetrice şi
asimetrice de criptare care pot asigura şi integritatea dar alegerea lor pentru acest scop trebuie
făcută cu precauţie.
Autentificarea are două coordonate distincte: autentificarea entităţilor şi autentificarea
informaţiei. Autentificarea entităţilor se referă la existenţa unei garanţii cu privire la identitatea
unei anume entităţi. Autentificarea informaţiei se referă la determinarea sursei de provenienţă a
informaţiei – în mod implicit aceasta garantează şi integritatea informaţiei deoarece dacă
informaţia nu mai are integritate, deci un potenţial adversar a alterat-o, atunci nici sursa ei de
provenienţă nu mai este aceeaşi. Însă doar integritatea informaţiei nu implică şi autenticitatea ei
deoarece nu garantează identitatea sursei de proveniență. Autentificarea se realizează în general
prin protocoale care pot avea la bază întreg arsenalul de funcţii criptografice: funcţii hash, MAC,
criptări simetrice şi asimetrice, semnături digitale. Autentificarea include de cele mai multe ori și
un factor temporal care implică o garanţie cu privire la momentul de timp la care entitatea de
care este legată a depozitat-o (deoarece în absența unei garanții temporale, informaţia putea fi
replicată şi depusă de orice altă entitate pierzându-se astfel o valență a autentificării).
Non-repudierea - (sau nerepudierea) previne o entitate în a nega o acţiune întreprinsă
(acţiune materializată desigur în transmisia unei informaţii). Aceasta înseamnă că dacă la un
moment dat o entitate neagă ca ar fi emis o anume informaţie, entitatea care a primit informaţia
respectivă poate demonstra unei părţi neutre că informaţia provine într-adevăr de la entitatea în
cauză. Non-repudierea se realizează prin utilizarea semnăturilor digitale.
Principalele elemente utilizate în realizarea unor mecanisme criptorafice puternice pot fi
clasificate astfel:
Plaintext (text în clar): reprezintă mesajul care va fi transmis. De obicei acesta mai este
cunoscut ca şi cleartextul.
Ciphertext (text cifrat): acesta este rezultatul criptării plaintextului.
Criptarea: reprezintă procesul de transformare a mesajului (cleartext) în ciphertext.
Decriptarea: acesta este procesul invers criptării prin care ciphertext-ul se transformă în
plaintext.
Algortim de hash: reprezintă metoda prin care se transformă un text de lungime
variabilă într-un text de lungime fixă cu ajutorul unor funcții de hash.
Key (cheia): reprezintă cuvântul sau cifrele utilizate pentru a cripta cleartextul.
Criptanaliza: este știința spargerii codurilor și cifrurilor.
O schema generală a modelului de criptare este următoarea:
1. Un expeditor dorește să trimită un mesaj "Hello" unui destinatar.
2. Mesajul original, plaintext, este transformat în biți aleatorii cunoscuți sub numele de
ciphertext. Utilizând o cheie și un algoritm. Algoritmul utilizat poate produce o ieșire
diferită de fiecare dată când este utilizat, pe baza valorii cheii.
3. Ciphertext-ul este transmis pe mediul de transmisie.
4. La destinatar, textul cipher este convertit înapoi în plaintext folosind același algoritm și
cheie care au fost utilizate pentru a cripta mesajul.
În funcție de modul în care algoritmii criptografici sunt utilizați, aceștia sunt împărțiți în
două mari categorii:
Criptografie cu chei simetrice: care utilizează o singură cheie pentru realizarea criptării și
decriptării
Criptografie cu chei asimetrice: care utilizează o pereche de chei, una publică și una
privată pentru realizarea procesului criptografic
Criptografia cu chei simetrice
Procesul de criptare și decriptare a informațiilor prin utilizarea unei singure chei este
cunoscut sub numele de criptografie cu chei simetrice. În criptografia cheilor simetrice, aceeași
cheie este folosită pentru criptarea și decriptarea datelor. Principala problemă cu algoritmii cheie
simetrică este că expeditorul și receptorul trebuie să convină asupra unei chei comune. De
asemenea, este necesar un canal securizat între expeditor și receptor pentru a schimba cheia
secretă.
În următorul exemplu va fi reprezentat procesul de criptare cu chei simetrice.
Alice dorește să trimită mesajul "Hello" lui Bob și dorește să se asigure că numai Bob
poate citi mesajul. Pentru a asigura transmisia, Alice generează o cheie secretă, criptează
mesajul cu această cheie și trimite mesajul lui Bob.
Acum, pentru a citi mesajul criptat, Bob are nevoie de cheia secretă care a fost generată
de Alice. Alice poate da cheia secretă lui Bob în persoană sau poate trimite cheia lui Bob
prin orice alte mijloace disponibile. Dacă Alice trimite cheia către Bob în persoană, ar
putea consuma mult timp, în funcție de distanța fizică dintre cei doi sau de alte
circumstanțe, cum ar fi disponibilitatea lui Bobs. După ce Bob primește cheia secretă, el
poate decripta mesajul pentru a prelua mesajul original
Au fost dezvoltați mulți algoritmi pe baza conceptului de criptare cu cheie simetrică.
Cei mai utilizați algoritmi ultilizați sunt:
Data Encryption Standard (DES)
Triple−DES (3DES)
International Data Encryption Algorithm (IDEA)
RC4
CAST−128
Advanced Encryption Standard (AES)
Criptografia cu chei publice
Abordarea numită criptografie asimetrică a evoluat pentru a aborda problemele de
securitate reprezentate de criptografia simetrică. Această metodă rezolvă problema criptografiei
cheilor secrete utilizând două chei în locul unei singure chei. Criptografia asimetrică utilizează o
pereche de chei. În acest proces, o cheie este folosită pentru criptare, iar cealaltă este folosită
pentru decriptare. Acest proces este cunoscut ca și criptografie asimetrică deoarece ambele chei
sunt necesare pentru a finaliza procesul. Aceste două chei sunt colectiv cunoscute sub numele de
pereche de chei. În criptografia asimetrică, una dintre chei este distribuită liber. Această cheie
este numită cheia publică și este utilizată pentru criptare. Prin urmare, această metodă de criptare
este denumită de asemenea criptarea cheii publice. A doua cheie este cheia secretă sau privată și
este folosită pentru decriptare. Cheia privată nu este distribuită. Această cheie, așa cum
sugerează și numele, este privată pentru fiecare entitate care comunică.
În criptografia cu chei publice, datele care sunt criptate cu cheia publică pot fi
decriptate numai cu cheia privată corespunzătoare. În schimb, datele criptate cu cheia privată pot
fi decriptate numai cu cheia publică corespunzătoare. Datorită acestei asimetrii, criptografia cu
chei publice este cunoscută sub denumirea de criptografie asimetrică.
În următorul exemplu va fi reprezentat procesul de criptare cu chei asimetrice:
Alice dorește să trimită un mesaj criptat lui Bob. În această situație, Bob ar obține o
pereche de chei și acesta ar trbui să păstreze cheia privată și să distribuie cheia publică.
Alice, prin urmare, are o copie a cheii publice a lui Bob.
Alice criptează mesajul utilizând cheia publică a lui Bob și trimite mesajul criptat lui
Bob. Deoarece perechile de chei sunt complementare, numai cheia privată a lui Bob
poate decripta acest fișier. Dacă altcineva interceptează mesajul, acesta nu îl va putea
decripta deoarece numai cheia privată a lui Bob poate fi utilizată pentru decriptare.
RSA
RSA reprezintă o implementare specială a criptografiei cu chei publice. RSA a devenit
standardul de facto în acest domeniu, ajungându-se la punctul în care RSA și criptarea cu chei
publice să fie folosite ca sinonime.
Într-un sistem criptografic cu chei publice, fiecare obiect, persoană sau entitate trebuie
să dețină o cheie publică, accesibilă public tuturor celorlalte părți și o cheie privată, care trebuie
păstrată în secret. Prin urmare, comunicarea la nivel global necesită numai chei 2n, unde n este
numărul de utilizatori. Procedura de trimitere a unui mesaj de la utilizatorul A la utilizatorul B
este efectuată în felul următor:
Utilizatorul A obține cheia publică a utilizatorului B de la un loc accesibil publicului.
Utilizatorul A criptează apoi mesajul său utilizând această cheie publică.
Utilizatorul B primește mesajul și îl decriptează cu cheia sa privată.
Acest mod de lucru a fost inventat de Whitfield Diffie și Martin Hellman și este de
asemenea utilizat algortimul RSA.
Avantajele RSA
RSA oferă câteva avantaje care au contribuit la realizarea unor tranzacții mai ușor de
gestionat și mai sigure. Aceste avantaje includ:
Simplificarea problemei gestionării cheilor: În criptarea simetrică, numărul de chei
necesare pentru a permite n entităților să comunice este proporțional cu n2. În timp ce în
criptarea asimetrică fiecare participant are nevoie de două chei; prin urmare, numărul
total de chei necesare este pur și simplu 2 * n. Creșterea numărului de chei cu creșterea
numărului de utilizatori este liniară și prin urmare este ușor de gestionat chiar și atunci
când există un număr mare de utilizatori.
Securitate sporită a tranzacțiilor: nu numai că numărul cheilor este redus, dar securitatea
oferită de aceste chei este foarte mare. Fiecare utilizator trebuie să aibă o pereche de chei
pe care le generează pentru sine. Cheia secretă nu trebuie să fie împărtășită cu nimeni și
prin urmare nu apare problema transmiterii acesteia, nici problemele canalelor sigure și
ale gestionării acestora; cheia secretă este într-adevăr secretă, deoarece nu este
împărtășită cu nimeni. Cu toate acestea, cheia publică este cunoscută de toată lumea, ca
într-un catalog care poate fi transmis prin metoda cea mai convenabilă și prin urmare nu
ridică probleme legate de confidențialitatea acestuia.
Combinarea celor două tipuri de criptări
Dezavantajul utilizării criptării cu chei publice este că este un proces lent, deoarece
lungimile cheie sunt mari (1024 biți până la 4094 biți). Când se compară ambele procese,
criptarea cu chei secrete este semnificativ mai rapidă, deoarece lungimea cheii este mai mică (40
biți până la 256 biți). Pe de altă parte, există o problemă în transferarea cheii în criptarea cu chei
simetrice. Ambele tehnici pot fi utilizate împreună pentru a oferi o metodă mai bună de criptare.
În acest fel, se vor folosi avantajele combinate și se pot depăși dezavantajele.
Pașii utilizați pentru a combina cele două metode sunt:
1. Se criptează fișierul utilizând o schemă de criptare simetrică.
2. Se utilizează criptarea asimetrică pentru a cripta cheia simetrică utilizând cheia publică a
destinatarilor. Se va trimite cheia criptată destinatarului. Destinatarul poate decripta cheia
simetrică folosind cheia privată a sa.
3. Apoi se trimit datele criptate reale. Acestea pot fi decriptate folosind cheia care a fost
criptată inițial prin utilizarea cheii publice a destinatarului.
Tehnica combinării cheilor de criptare este folosită pe scară largă, în principal pentru
Secure Shell (SSH), care este folosit pentru a asigura comunicațiile între client și server, dar și în
PGP (Pretty Good Privacy) pentru trimiterea mesajelor. Aceasta este și principalul factor de
securitate în Secure Sockets Layer (SSL), care este utilizată pe scară largă de către browserele
Web și serverele Web pentru a menține un canal de comunicare securizat.
Funcții Hash
O funcție hash, H, este o metodă de conversie care primește la intrare m, reprezentând
mesajul și returnează un șir de dimensiune fixă, care se numește valoarea hash h ( adică
h = H(m)) sau digestul mesajului . Această ieșire este fixă în mărime și este ireversibilă, ceea ce
înseamnă faptul că mesajul original nu poate fi recuperat. Dacă două funcții hash produc același
set de valori hash în orice moment, acest lucru se numește coliziune. O funcție hash este
considerată a fi în standard, numai dacă riscul de coliziune este minim. Funcțiile Hash sunt
utilizate în mod normal pentru a furniza amprentele digitale ale fișierelor pentru a se asigura
faptul că fișierul nu a fost modificat în timpul transportului.
Utilizarea funcțiilor hash este evidențiată în exemplul următor:
Alice dorește să trimită un mesaj lui Bob. Bob ar trebui să știe că mesajul vine de la
Alice. Astfel, Alice va adăuga semnătura digitală la mesaj și va cripta întregul mesaj utilizând
cheia secretă. Bob va folosi cheia corespunzătoare pentru a decripta mesajul.
Exemple de funcții hash utilizate:
Secure Algorithm Hash (SHA): De asemenea, cunoscut sub numele de Secure Hash
Standard (SHS), acest algoritm hash a fost publicat de guvernul Statelor Unite. Există 4
variante dezvoltate fiecare în funcție de numărul de biți pe care îl generează ca ieșire.
SHA-0 și apoi SHA-1 cu output de 160 de biți. SHA-2 și SHA-3 cu output de 256 și 512
biți.
MD5: Algoritm care are ca output 128 de biți și cu succesorul MD6 cu output pe 256 biți.
Semnături digitale
Orice proces de autentificare protejează două părți împotriva unei terțe părți. Cu toate
acestea, acest proces nu protejează părțile împotriva celuilalt. Acest lucru înseamnă că în
situațiile în care nu există încredere între expeditor și destinatar este nevoie de ceva mai mult
decât autentificarea. Această problemă poate fi rezolvată utilizând o semnătură digitală. O
semnătură digitală este echivalentul unei semnături scrise de mână și verifică autorul, data și ora
semnării. Semnătura ar trebui, de asemenea, să poată autentifica conținutul în momentul
semnării. Principalele cerințe ale unei semnături digitale sunt:
Este unică pentru pentru expeditor.
Trebuie să fie recunoscută și verificabilă
Semnaturi digitale directe
O semnătură digitală directă poate fi formată prin criptarea întregului mesaj cu cheia
privată a expeditorului sau prin criptarea unei valori hash a mesajului cu cheia privată a
expeditorului.
Outputul este numit semnătura digitală și este atașată mesajului. Pentru a verifica
semnătura, destinatarul efectuează un calcul care implică cheia publică a expeditorului, mesajul
și semnătura. Dacă rezultatul este conform, semnătura este considerată autentică. În caz contrar,
semnătura este considerată fie a fi falsă, fie mesajul a fost modificat. Acest lucru se datorează
faptului că valoarea calculată se bazează pe semnătura și pe conținutul mesajului. Orice
modificare a valorilor semnăturii digitale sau a conținutului mesajului duce la o nepotrivire între
valoarea calculată și valoarea primită. Acest lucru indică faptul că fie semnăturile au fost false,
fie conținutul mesajului a fost modificat.
Semnături digitale arbitrate
Schema de semnătură digitală arbitrată este utilizată pentru a depăși problema non-
repudierii întâlnite într-o semnătură digitală directă. În cadrul acestei scheme fiecare mesaj
semnat de expeditor, care a fost trimis destinatarului, se adresează mai întâi unui arbitru care
verifică semnătura, originea și conținutul său. Mesajul este apoi datat și trimis destinatarului.
Prezența arbitrului rezolvă problema expeditorului care renunță la semnătură. De exemplu,
atunci când Alice trimite un mesaj semnat digital către Bob, un arbitru validează mai întâi
semnătura lui Alice. După ce semnătura a fost validată, mesajul este trimis apoi lui Bob
împreună cu data de validare și se observă că semnătura aparține lui Alice.
PKI
Descriere generală
Public Key Infrastructure reprezintă un set de roluri care constau în politici de
securitate, mecanisme de criptare și aplicații care generează, stochează și gestionează chei. PKI
oferă de asemenea proceduri pentru generarea, distribuirea și utilizarea cheilor și certificatelor,
dar și un mecanism de publicare a cheilor publice. Acesta ilustrează ansamblul de aplicații,
politicile, standardele și programele software care sunt utilizate pentru a genera certificatele,
cheile publice și cheile private. Scopul unui PKI este de a facilita transferul electronic sigur de
informații pentru o serie de activități de rețea, cum ar fi comerțul electronic, internet banking și
e-mail confidențial. Este necesar pentru activitățile în care parolele simple sunt o metodă
inadecvată de autentificare și sunt necesare probe mai riguroase pentru a confirma identitatea
părților implicate în comunicare și pentru a valida informațiile transferate
În criptografie, PKI este sistemul care leagă cheile publice de identitățile respective ale
entităților (oameni și organizații). Legarea este stabilită printr-un proces de înregistrare și
eliberare a certificatelor de către o autoritate de certificare (CA). În funcție de modul de eliberare
al certificatelori, acest lucru poate fi realizat printr-un proces automatizat sau sub supravegherea
unui operator.
Componente
Componentele care intră în alcătuirea PKI și care asigură buna funcționare a sistemului
sunt:
Autoritatea de certificare (CA)
Autoritatea de Înregistrare (RA)
Clienții PKI
Certificatele digitale
Autoritatea de certificare
CA este o parte de încredere care autentifică entitățile și care participă la o tranzacție
electronică. Pentru a autentifica o entitate, CA emite un certificat digital. Acest certificat este un
document digital care stabilește identitățile entităților care participă la o tranzacție. Certificatele
digitale emise de CA cuprind informații cum ar fi numele entității, cheia publică și privată a
acestuia și cheia publică emise de autorități publice. Aceste informații depind de politica
companiei care emite certificatele.
Înainte de a emite un certificat digital, CA verifică cererea pentru un certificat cu o
autoritate de înregistrare (RA). Pentru validarea solicitărilor de certificate, un CA utilizează
propriile proceduri. Aceste proceduri depind de politica de organizare și de infrastructura
disponibilă pentru a valida cererea. Dacă cererea este validată, CA emite certificatul.
Autoritatea de înregistrare
Autoritatea de înregistrare (RA) este responsabilă pentru interacțiunea dintre clienți și
CA. Deseori, datorită majorității cererilor de certificate, nu este posibil ca CA să accepte cererile
de certificate, să valideze cererile și să emită certificatele. În astfel de cazuri, RA acționează ca
intermediar între CA și client. Sarcinile îndeplinite de RA sunt prezentate mai jos:
Primește solicitările de la entități și le validează
Trimite cererile către CA
Primirește certificatului procesat de la CA
Trimite certificatul entității cara a înregistrat cererea
RA-urile sunt utile în special pentru scalarea aplicațiilor PKI și accesarea acestora din
diferite locații geografice. De exemplu, un CA poate delega responsabilitățile sale la diferite RA-
uri și poate atribui o zonă de operare fiecărei RA, cum ar fi o RA pentru regiunea de nord,
regiunea de sud și regiunile de est și vest.
Clienții
Entitățile care solicită CA-ului sau RA-ului să emită certificate sunt denumite în mod
obișnuit clienți PKI. Pentru a obține un certificat digital de la un CA, un client PKI trebuie să
efectueze următorii pași:
1. Trimite o solicitare de generare a unei perechi de chei publice-private. CA-ul sau clientul
pot face această sarcină. Perechea de chei conține detaliile clientului.
2. După generarea perechii de chei, se trimite o cerere la CA pentru generarea certificatului.
Această solicitare poate fi direcționată printr-un RA.
3. După ce clientul primește certificatul de la CA, poate utiliza certificatul pentru a se
identifica ca fiind un deținător de certificat autentic.
Toată comunicația dintre client și CA este în siguranță. În plus, clientul este responsabil
pentru asigurarea siguranței cheii private. Dacă cheia privată este pierdută, mesajul criptat nu
poate fi decriptat. În plus, dacă cheia privată este compromisă, orice persoană neautorizată poate
folosi această cheie privată pentru a decripta mesajele. În astfel de situații, nevoia de a asigura
cheia privată devine cu atât mai evidentă. Se poate asigura siguranța cheii private utilizând mai
multe componente hardware disponibile cum ar fi token-urile sau smart cardurile. Un token este
un dispozitiv fizic asemănător unui stick de memorie și se poate utiliza pentru a autentifica un
utilizator într-o rețea. Un smart card este un dispozitiv fizic, la fel ca un card de credit, care
conține un microprocesor pentru stocarea informațiilor de securitate. Acest microprocesor nu
funcționează decât după ce ați specificat numărul personal de identificare (PIN). În acest fel, se
pot asigura cheile private.
După cum se poate observa, o componentă importantă a implementării PKI sunt
certificatele digitale. Aceste certificate constituie baza implementării unei soluții PKI.
Certificatele digitale
Un certificat digital reprezintă o structură de date care conţin cheia publică şi datele de
identificare ale unei entităţi. Această structură de date este semnată digital de căre o autoritate de
certificate (CA) care garantează faptul că datele din certificat sunt autentice. Certificatele digitale
reprezintă modalitatea prin care cheile publice sunt asignate entităţilor. Certificatele includ, în
general, următoarele informații:
Subiectul certificatului (persoana sau dispozitivul)
Autoritatea emitentă a certificatului
Cheia publică a perechii de chei
Algoritmii folosiți de certificat
Informațiile utilizate pentru determinarea valabilității sau a stării de revocare a
certificatului
X.509 este un standard definit de ITU, bazat pe ASN.1, care definește formatul
certificatelor cu chei publice. Certificatele X.509 sunt utilizate în multe protocoale, inclusiv TLS
/ SSL, care este baza pentru HTTPS, protocolul securizat pentru navigarea web. Atunci când un
certificat este semnat de o autoritate de certificare de încredere sau validat prin alte mijloace,
cineva care deține certificatul respectiv se poate baza pe cheia publică pe care o conține pentru a
stabili comunicații sigure cu o altă parte sau pentru a valida documentele semnate digital de
cheia privată corespunzătoare. În formatul X.509 se specifică de asemenea şi lista de certificate
revocate sau informaţii despre modul de obţinere a acestora de la autoritatea de certificare.
Câmpurile care intră în structura unui certificat digital:
Numărul versiunii/Version – indică versiunea formatului de certificat(1, 2 sau 3 );
Numărul serial/Serial number - reprezintă un identificator numeric unic al
certificatului, relativ la mulțimea tuturor certificatelor emise de o autoritate de certificare.
Atunci când certificatul este revocat, numărul său serial este trecut în lista de certificate
revocate (CRL – Certificate Revocation List), emisă de autoritatea de certificare
respectivă. Din acest motiv numărul serial al fiecărui certificat emis de o autoritate de
certificare trebuie să fie unic.
Algoritmul de semnare/Signature Algorithm - identifică algoritmul folosit de
autoritatea de certificare pentru a semna digital certificatul. Identificarea algoritmului se
face folosind identificatori de obiect (OID - Object Identifier). Un OID este o
reprezentare unică a unui obiect sub forma unei secvenţe de numere întregi separate prin
punct. OID-urile sunt organizate ierarhic şi trebuie înregistrare la autorităţile de
înregistrare internaţionale, naţionale sau organizaţionale. De exemplu, OID-ul pentru
cazul în care semnătura digitală este realizată folosind funcţia hash SHA-1 şi algoritmul
RSA este 1.2.840.113549.1.1.5.
Emitent/Issuer Name – reprezintă numele autoriăţii emitente
Perioada de valabilitate ( Data de început/Data de sfârşit)
Subject( conţine datele de identificare ale entităţii)
Cheia publică/Public Key - conţine valoarea cheii publice a subiectului precum şi
identificatorul algoritmului cu care acesta poate fi folosită
Identificator entitate/Subject Unique Identfier - este un identificator unic al
proprietarului certificatului. Acest câmp este opţional şi a fost introdus odată cu versiunea
2 a certificatelor X.509 pentru a putea face distincţie între cazurile în care acelaşi nume
X.509 a fost atribuit mai multor entităţi de-a lungul timpului. El este însă rar întâlnit în
implementările practice, iar RFC 3280 nu recomandă folosirea lui.
Identificator autoritate emitentă/Issuer Unique Identifier - este un identificator unic
al autorităţii de certificare care a emis certificatul. Acest câmp este opţional şi a fost
introdus odată cu versiunea 2 a certificatelor X.509 pentru a putea face distincţie între
cazurile în care acelaşi nume X.509 a fost atribuit mai multor autorităţi de certificare de-a
lungul timpului. El este însă rar întâlnit în implementările practice, iar RFC 3280 nu
recomandă folosirea lui.
Aplicaţiile criptografice unde poate fi utilizat
O listă extinsă cu aplicaţii criptografice unde poate fi utilizat
Extensii ale certificatelor digitale:
.pem – Privacy-enhanced Mail codat Base64 ("----- BEGIN CERTIFICATE -----" "-----
END CERTIFICATE -----")
.cer, .crt, .der – format DER binar
.p7b, .p7c - Structura SignedData PKCS # 7 fără date, doar certificat sau CRL
.p12 - PKCS # 12, pot conține chei publice și chei private (protejate prin parolă)
.pfx - PFX, predecesorul PKCS # 12 (de obicei, conține date în format PKCS # 12, cu
fișiere PFX generate în IIS)
Funcţii ale PKI
Principalele funcţii pe care o infrastructură cu chei publice le îndeplineşte sunt:
Generarea de chei publice și perechile private pentru crearea și autentificarea
semnăturilor digitale;
Furnizarea autentificării pentru controlul accesului la cheia privată;
Crearea și emiterea de certificate pentru utilizatori;
Înregistrarea de noi utilizatori;
Menținerea istoricului cheilor pentru referințe viitoare;
Revocarea certificatelor care nu sunt valide;
Actualizarea și recuperarea cheilor în cazul compromiterii acestora;
EJBCA
Descriere
Enterprise Java Beans Certificate Authority, sau EJBCA, este un PKI open-source
sponsorizat de compania suedeză PrimeKey Solutions AB, care deține drepturile de autor pentru
cea mai mare parte a codului sursă. Proiectul este disponibil sub termenii Lesser GNU General
Public License GNU. PrimeKey dezvoltă şi oferă contra cost soluţii enterprise cu multiple
opţiuni pentru clienţii care au anumite cerinţe sau doresc doar suport.
EJBCA este soluţia software a unui PKI, dezvoltată folosind tehnologia Java (JEE).
EJBCA reprezintă un PKI scalabil, de înaltă performanță independentă de platformă și bazată pe
componente care poate fi utilizat în mod autonom sau integrat cu alte aplicații. Este potrivit
pentru a construi o infrastructură PKI completă pentru orice instituţie sau organizație mare.
EJBCA respectă cu stricteţe în implementare standarde generale precum X.509 și
IETF-PKIX. Administrarea EJBCA are câteva concepte specifice cum ar fi:
Certificate profile - Un profil de certificat determină conținutul și comportamentul pe
care îl are un certificat. Cea mai importantă parte este extinderea și aici fiecare
administrator va decide care câmpuri sunt necesare şi dacă acestea sunt critice sau nu.
Unele extensii sunt populate cu o valoare, aceeaşi pentru toate certificatele, cum ar fi
CRL Distribution Point. Pentru alte extensii este specificată numai prezența, iar valoarea
este specificată de utilizator sau certificat, cum ar fi SubjectAlternativeName. Aici este de
asemenea stabilit dacă aceste certificate vor fi publicate.
End Entity Profile - End Entity Profiles determină ce date pot sau trebuie să fie prezente
pentru utilizatorii conectați la acest profil. Unele valori pot fi, de asemenea, pre-definite,
cum ar fi organizația. Acesta conține toate informațiile specifice fiecărei entități finale.
Atunci când este adăugat un utilizator în PKI, acesta trebuie să aibe asociat un profil.
Acesta specifică la rândul său unul sau mai multe profiluri de certificate utilizate la
generarea de certificate.
Crypto Token - Un Crypto Token este tokenul folosit de un CA pentru a-și păstra cheile.
Cheia cea mai importantă a Crypto Token sunt cheile de semnătura ale CA. Formele
diferite în care sunt stocate în baza de date sunt: fișiere PKCS # 12 protejate de o parolă
sau token hardware reprezentat de obicei de un HSM (Hardware Securty Module) accesat
cu API-ul PKCS # 11.
Publishers - Un publisher stochează certificate emise într-o locație centrală. EJBCA are
implementat suport pentru LDAP și Active Directory, dar poate suporta și crearea de
pluginuri personalizate.
Terminologia utilizată este una comună şi foloseşte aceleaşi entităţi ca şi alte soluţii
PKI.
EJBCA Enterprise Java Beans Certificate Authority
PKI Public Key Infrastructure
CA Certificate Authority
RA Registration Authority
VA Validation Authority
DN Distinguished Name
HSM Hardware Security Module
CRL Certificate Revocation List
OCSP Online Certificate Status Protocol, RFC2560
CMP Certificate Management Protocol, RFC4210
SCEP Simple Certificate Enrollment Protocol
Funcţionalităţi
Principalele funcţionalităţi pe care soluţia EJBCA le realizează sunt următoarele:
Multiple CA-uri și niveluri de CA-uri, se poate construi o infrastructură completă (sau
mai multe) într-o instanță EJBCA.
Număr nelimitat de autorităţi Root și SubCA-uri. Permite cereri de cross-certificate și
bridge certificates de la alte CA-uri. Eliberează cross-certificates către alte CA-uri.
Permite semnarea certificatului CA de către autoritățile publice recunoscute, cum ar fi
GlobalSign, Alfatrust.
Respectă standardele X509 și PKIX (RFC5280), după caz.
Suportă algoritmul RSA cu cheie de până la 8192 biți.
Suportă algoritmul DSA cu cheie 1024 de biți.
Suportă algoritmul ECDSA.
Suportă algoritmi hash multipli pentru semnături, SHA-1, SHA-2.
Suport pentru certificatele X.509
Suport pentru module de securitate hardware (HSM). Suport încorporat pentru Thales /
nCipher, SafeNet Luna, SafeNet ProtectServer, Utimaco CryptoServer, AEP Keyper,
ARX CoSign și alte HSM-uri cu PKCS # 11.
Certificatele server și client pot fi exportate în formatul PKCS12, JKS sau PEM.
UI ușor de utilizat, pentru înregistrarea și emiterea de certificate.
Înscriere care generează certificate pentru OpenVPN şi pentru utilizatorii VPN.
Înscriere mobilă, iOS utilizând SCEP.
Creare CRL și puncte de distribuție CRL bazate pe URL în conformitate cu RFC5280.
Certificate de autentificare cu smart carduri pentru Windows, Linux și Mac OS X.
Profiluri de certificate configurabile pentru diferite tipuri și conținuturi de certificate.
Sunt acceptate extensiile de certificate standard și personalizate.
Suportă protocolul de înscriere a certificatelor (SCEP).
Serviciu OCSP.
Arhitectură
Pentru a dezvolta o soluţie PKI sunt disponibile mai multe tipuri de arhitecturi, fiecare
satisfăcând diferitele nevoi ale organizaţiilor. EJBCA permite realizarea oricărui tip de
arhitectură PKI existentă. Principalele arhitecturi utilizate sunt:
O singură instanţă CA/RA
Un PKI poate fi implementat într-o singură instanță. Această alegere este una des
utilizată, deoarece EJBCA oferă posibilitatea ca această instanţă să funcționează atât ca CA, cât
și ca RA. Este preferată de organizaţiile mici şi mijlocii, fiind o soluţie uşor de administrat și
eficientă din punct de vedere a costurilor.
Există posibilitatea ca în această instanţă să fie instalate mai multe CA-uri pentru
diferite cazuri de utilizare şi componenta de securitate să fie asigurată prin:
Administratorii să folosească smart card-uri sau token-uri soft pentru a accesa interfața
de administrare.
CA să utilizeze un HSM sau un token soft pentru cheile de semnare.
Diferite opţiuni de filtrare implementate la nivel de firewall.
Pentru protejarea cheilor de semnătură ale CA-ului acestea sunt păstrate într-un Crypto
Token separat. Pentru diferitele organizaţii care necesită un anumit nivel de încredere și
securitate, acest Crypto Token va fi sub forma unui modul de securitate hardware (HSM). În
organizaţiile în care nu este necesar un nivel de securitate crescut şi costurile sunt un factor
important, va fi utilizat un Crypto Token implementat software, adică un fișier în baza de date
protejată printr-o parolă de acces.
CA cu RA distribuite
Pentru implementarea unui PKI capabil să se plieze pe nevoile unei organizaţii cu foarte
mulţi utilizatori și dispozitive, este necesară introducerea mai multor tipuri de RA, pentru a
satisface diferitele scopuri. Implementarea EJBCA suportă un număr nelimitat de RA separate,
comunicarea cu CA utilizând protocoale standard precum CMP, SCEP și serviciul Web. RA pot
fi sub formă de componente standard EJBCA sau RA personalizate. Nivelurile de securitate pot
fi scalate, astfel pot fi accesate atât pe bază de parolă cât şi pe bază de certificat.
RA separat extern
PrimeKey oferă în soluţia enterprise posibilitatea de izolare a CA-ului pentru securitate
crescută, permițând în același timp înscrierea flexibilă a entităților. Utilizând această arhitectură,
un server extern RA primește cereri de certificate, pe care le stochează într-o bază de date
separată. Cererile sunt trase periodic de CA și rezolvate, răspunsurile fiind returnate în baza de
date RA externă, unde sunt preluate de serverul RA extern. Nu este permis traficul de rețea de la
CA, numai conexiunile de ieșire sunt permise prin firewall pentru interogarea CA. RA poate să
accepte mai multe protocoale, cum ar fi:
CMP.
SCEP utilizând serverul extern RA SCEP.
Web GUI de înregistrare.
Protocoale sau metode personalizate dezvoltate ca şi RA API.
Root CA offline şi multiple Sub CA-uri
Este poate una din cele mai utilizate arhitecturi. Păstrarea off-line a Root CA-ului
pentru o securitate crescută şi pornirea doar pentru semnarea cheilor unui SubCA nou creat.
Arhitectura se poate extinde cu câte niveluri de CA-uri se doreşte. Arhitecturile cele mai
frecvente sunt de unu sau două niveluri. Arhitecturile cu trei niveluri sunt şi ele utilizate în mod
regulat, dar mai puţin comune. Fiecare nivel suplimentar în arhitectură va solicita clienților să
efectueze o verificare suplimentară a certificatului și să facă validarea atunci când verifică un
certificat eliberat de un CA de pe un nivel mai mare.
Cluster şi High Availability
Pentru asigurarea disponibilităţii şi a unor performanţe crescute, EJCBA permite
custerizarea atât a CA-ului cât şi a VA-ului. Arhitectura nu diferă foarte mult şi operaţiile
efectuate de cluster sunt asemanătoare.
Pentru organizaţiile care nu suportă downtime şi investesc în soluţii de disaster
recovery, EJBCA permite şi recomandă crearea unei locaţii secundare pentru pastrarea unei copii
de siguranţă. În timpul operațiunilor normale, traficul este direcționat spre site-ul principal, care
conține o configurație ca în exemplul anterior. Toate datele sunt reproduse pe un site de
recuperare în caz de dezastru, care dețin o copie identică a site-ului primar (de obicei cu o
capacitate puțin mai mică din motive de cost). Dacă există o problemă majoră (dezastru) cu site-
ul principal, traficul este redirecționat către site-ul de recuperare în caz de dezastru, iar
operațiunile pot continua în timp ce configuraţia din site-ul primar este restabilită.
Arhitectura internă a aplicaţiei EJBCA şi dependinţele dintre diferitele
module care intră în alcătuire este următoarea:
Instalare
Scopul lucrării a avut ca obiective realizarea unei infrastructurii cu chei publice utilizând
EJBCA, care să deservească o organizaţie de dimensiuni medii. Pentru realizarea obiectivelor au
fost implicate atât elemente hardware cât şi software. Soluţia finală poate fi instalată în orice tip
de organizaţie care utilizează certficate digitale pentru simplificarea anumitor activităţi şi
creşterea gradului de securitate.
Organizaţia pentru care va fi dezvoltată infrastructura cu chei publice dispune de o reţea
internă care va avea integrat un domeniu windows, staţii de lucru şi echipamente de reţea. Toată
infrastructura va fi virtalizată şi va demonstra funcţionalitatea sistemului. PKI-ul EJBCA va
trebui să realizeze următoarele funcţii:
Emitere de certificate pentru utilizatori cu posibilitatea de autentificare, semnare
documente, criptare documente.
Emitere de certificate pentru VPN
Emitere certificate TLS
Emitere certificate pentru controller-ul de domeniu
Emitere de CRL
[Link]