|
SECURITATEA SISTEMELOR DE OPERARE
1. NOTIUNI INTRODUCTIVE
Termenul de securitate, intr-un sistem de operare, implica notiuni multiple si complexe legate de foarte multe aspecte. Este greu de limitat partea din actiunea de securitate ce revine sistemului de operare, deoarece aceasta este o chintesenta a hardului, programarii, tehnicilor de programare, structurilor de date, retelelor de calculatoare etc. De aceea vom incerca sa tratam in general problemele de securitate, insistand asupra celor legate strict de sistemul de operare.
Din punctul de vedere al sistemului de calcul si, implicit, al sistemului de operare, exista trei concepte fundamentale de securitate care reprezinta in acelasi timp si obiective generale de securitate:
-confidentialitatea;
-integritatea;
-disponibilitatea.
Confidentialitatea se refera la accesul datelor, adica la faptul ca anumite date, considerate secrete, nu trebuie sa fie accesate de utilizatori neautorizati. Proprietarii datelor au dreptul sa specifice cine are acces la ele iar sistemul de operare trebuie sa impuna aceste specificatii. Principala amenintare este expunerea datelor iar in momentul in care datele sunt accesate de persoane neautorizate are loc o pierdere a confidentialitatii.
Integritatea se refera la faptul ca datele pot fi modificate numai de utilizatori autorizati; in caz contrar, adica atunci cand un utilizator neautorizat modifica niste date, are loc o pierdere de integritate. Principala amenintare, in acest caz, este coruperea datelor.
Disponibilitatea se refera la faptul ca datele sunt accesibile pentru utilizatorii autorizati la un moment dat. Atunci cand datele nu sunt disponibile, este vorba de refuzul serviciilor (denial of service).
Alte doua comcepte din securitatea sistemelor de calcul sunt legate de dreptul unor utilizatori la accesul de date:
-autentificarea;
-autorizarea.
Autentificarea inseamna operatiunea de demonstrare ca un utilizator are identitatea declarata de acesta, operatiune ce presupune solicitarea unor informatii suplimentare de la utilizatorul respectiv.
Autorizarea reprezinta constatarea dreptului unui utilizator de a efectua anumite operatii.
Cele mai raspandite forme de autentificare sunt:
-autentificarea prin parole;
-autentificarea provocare-raspuns;
-autentificarea ce foloseste un obiect fizic;
-autentificarea ce foloseste date biometrice.
Autentificarea prin parole este una dintre cele mai raspandite forme de autentificare in care utilizatorul trebuie sa tasteze un nume de conectare si o parola. Este o forma de autentificare usor de implementat. Cea mai simpla implementare consta dintr-o lista in care sunt stocate perechi de nume-parola. Aceasta lista este pastrata de sistemul de operare intr-un fisier de parole stocat pe disc. Stocarea poate fi:
-necriptata;
-criptata.
Solutia necriptata este din ce in ce mai putin utilizata, deoarece ofera un grad de securitate redus, prea multi utilizatori avand acces la acest fisier.
Solutia criptata utilizeaza parola drept o cheie pentru criptarea unui bloc fix de date. Apoi programul de conectare citeste fisierul cu parole, care este de fapt o suma de linii scrise in alfabetul ASCII, fiecare linie corespunzand unui utilizator. Daca parola criptata continuta in acea linie se potriveste cu parola introdusa de utilizator, criptata si ea, atunci este permis accesul.
O imbunatatire a acestei solutii este utilizarea parolelor de unica folosinta, cand utilizatorul primeste un caiet ce contine o lista de parole. La fiecare conectare se foloseste urmatoarea parola din lista. Daca un intrus descopera vreodata o parola, o poate folosi doar o singura data, la urmatoarea conectare trebuind alta parola.
O schema eleganta de generare a unor parole de unica folosinta este schema lui Lamport, elaborata in 1981. Daca n este numarul de parole de unica folosinta, atunci se alege o functie unidirectionala f(x), cu y=f(x) si proprietatea ca fiind dat x este usor de gasit y dar fiind dat y este foarte greu de gasit x. Daca prima parola secreta este p, atunci prima parola de unica folosinta este data de legea:
Parola1=P1=f(f(f(....f(s))) ....)
←n ori→ ←n ori→
Parola2=P2=f(f(f(....f(s))) ....)
← n-1 ori →← n-1 ori →
Parolan=Pn=f(s)
Daca Pi (cu 1≤ i ≤n) este o parola de unica folosinta la a "i"-a alegere, atunci:
Pi-1=f(Pi)
Cu alte cuvinte, se poate calcula usor parola anterioara dar nu este nici o posibilitate de a calcula parola urmatoare.
Autentificarea provocare-raspuns consta intr-o serie de intrebari puse utilizatorului, fiecare intrebare avand un raspuns. Toate raspunsurile la intrebari sunt stocate in sistemul de operare. Dupa compararea raspunsurilor se permite sau nu conectarea utilizatorilor.
O alta varianta este folosirea unui algoritm care sa stea la baza acestui raspuns. Utilizatorul alege o cheie secreta, c, pe care o instaleaza pe server. In momentul conectarii, serverul trimite un numar aleatoriu, a, spre utilizator. Acesta calculeaza o functie f(a,c) unde f este o functie cunoscuta, pe care o retrimite serverului. Serverul verifica daca rezultatul primit inapoi se potriveste cu cel calculat. Avantajul acestei metode este acela ca, chiar daca tot traficul dintre server si utilizator este interceptat de un intrus, acest lucru nu ii va permite intrusului sa se conecteze data viitoare. Functia f trebuie sa fie suficient se complexa, astfel incat c sa nu poata fi dedus, avand un numar foarte mare de esantioane de trafic.
Autentificarea ce foloseste un obiect fizic. Daca in autentificarea provocare-raspuns se verifica ceea ce utilizatorii stiu, in autentificarea ce foloseste obiecte fizice se verifica niste caracteristici fizice ale utilizatorilor.
Obiectele fizice cele mai folosite sunt cartelele care pot fi de mai multe feluri:
-cartele magnetice;
-cartele electronice;
-cartele inteligente.
Cartelele magnetice stocheaza informatiile sub forma magnetica, existand senzori magnetici care au rolul de citire/scriere. Senzorii magnetici sunt foarte diferiti: magnetostrictivi, cu efect Hall, cu magnetoimpedanta etc. De obicei, in aceste cartele sunt stocate parole. Din punct de vedere al securitatii, cartelele magnetice sunt destul de riscante deoarece senzorii magnetici utilizati sunt ieftini si foarte raspanditi.
Cartelele electronice au la baza senzori electronici care inseamna toti senzorii electrici afara de cei magnetici.
Cartelele inteligente au la baza un microprocesor, de obicei simplu, pe 8 biti. Ele utilizeaza un protocol criptografic, bazat pe principii criptografice pe care le vom studia in capitolul urmator.
Autentificarea ce foloseste date biometrice se bazeaza pe folosirea unor caracteristici fizice ale utilizatorilor, numite date biometrice, si care, de obicei, sunt unice pentru fiecare persoana. Astfel de date biometrice pot fi: amprentele digitale, amprentele vocale, tiparul retinei etc. Un astfel de sistem de autentificare are doua parti:
-inrolarea;
-identificarea.
Inrolarea consta din masurarea caracteristicilor utilizatorului, din digitizarea rezultatelor si din stocarea lor prin inregistrare intr-o baza de date asociata utilizatorului si aflata in sistemul de operare.
Identificarea consta din masurarea, inca odata, a caracteristicilor utilizatorului care vrea sa se conecteze si din compararea lor cu rezultatele culese la inrolare.
Problema esentiala in acest tip de autentificare este alegerea caracteristicilor biometrice, caracteristici care trebuie sa aiba suficienta variabilitate, incat sistemul sa poata distinge fara eroare dintre mai multe persoane.
O caracteristica nu trebuie sa varieze mult in timp. Vocea unei persoane poate sa se schimbe in timp, mai ales la persoanele instabile psihic, deci aceasta caracteristica nu ofera o stabilitate temporala.
O caracteristica biometrica din ce in ce mai mult utilizata in ultimul timp, tocmai datorita unei bune stabilitati temporale, este tiparul retinei. Fiecare persoana are un diferit tipar de vase de sange retinale, chiar si gemenii. Aceste tipare pot fi fotografiate cu acuratete.
9.2. ATACURI ASUPRA SISTEMULUI DE OPERARE SI MASURI DE PROTECTIE IMPOTRIVA LOR
Exista numeroase tipuri de atacuri asupra unui sistem de operare si, implicit, mai multe clasificari. O clasificare a atacurilor consta in:
-atacuri din interiorul sistemului;
-atacuri din exteriorul sistemului.
Atacurile din interior sunt savarsite de utilizatori deja autorizati iar atacurile din exterior sunt executate, de cele mai multe ori, prin intermediul unei retele de calculatoare.
Vom prezenta, in continuare, principalele atacuri ce se pot executa asupra unui sistem de operare.
2.1. Depasirea zonei de memorie tampon (Buffer Overflow
De multe ori, spatiul de memorie alocat unui program se dovedeste a fi insuficient si se depaseste acest spatiu, informatiile fiind stocate la o alta adresa. Acest tip de atac este un atac din interiorul sistemului si poate fi intentionat sau nu.
Un caz tipic de atac neintentionat este cel al programatorului in limbajul C, care lucreaza cu vectori in memorie si care nu face, prin program, verificarea limitelor de vectori. Limbajul C este unul flexibil, chiar prea flexibil, iar compilatorul de C nu face verificarea limitelor vectorilor, lasand acest lucru in seama programatorilor.
Modul de combatere a acestui atac se face prin utilizarea de tehnici de programare corecte care sa verifice eventualele depasiri ale dimensiunilor zonelor de memorie alocate dar si prin instalarea de versiuni actualizate ale pachetelor de programe.
2.2. Ghicirea parolelor (Password guessing)
Acest atac inseamna incercarea de aflare a unor parole. De obicei se utilizeaza un program creat de catre CRACKERI (spargatori de parole), program care, printr-o analiza comparativa, poate determina o corespondenta intre variantele presupuse criptate. Cel mai simplu program de spargere a parolelor este generarea de cuvinte pana se gaseste unul care sa se potriveasca. Cuvintele sunt generate fie prin permutari de componente fie prin utilizarea cuvintelor unui dictionar. Daca parolele sunt criptate atunci mecanismele de decriptare sunt mai diferite.
Modalitatile de protectie impotriva atacului de ghicire a parolelor sunt:
-utilizarea sistemului shadow , pentru ca fisierul de parole sa nu poata fi accesat de utilizatori;
-impunerea pentru utilizatori a unor reguli stricte la schimbarea parolelor;
-educarea utilizatorilor , in sensul ca acestia trebuie sa respecte niste reguli fixe de stabilirea parolelor;
-folosirea periodica a unui program spargator de parole, pentru a verifica complexitatea acestora, si atentionarea utilizatorilor respectivi.
9.2.3. Interceptarea retelei (IP sniffing)
Acest atac consta in monitorizarea informatiilor care circula printr-o interfata de retea, pentru detectarea eventualelor parole necriptate. Programele care efectueaza interceptarea traficului din retea se numesc sniffere. Se utilizeaza un interceptor de retea si apoi se face captarea traficului intr-un fisier. Deoarece viteza retelelor a crescut mult in ultimul timp, fisierul in care se intercepteaza reteaua devine foarte mare in scurt timp, putand umple intreg hard discul. Din aceasta cauza se obisnuieste sa se capteze primele sute de octeti ai pachetelor, unde, cu mare probabilitate, se va afla numele si parola utilizatorului.
Este un atac din interior si se efectueaza asupra parolei. De aceea mijlocul de combatere cel mai obisnuit trebuie sa fie criptarea parolelor. O alta metoda de protectie este segmentarea retelei in mai multe subretele, utilizarea switch-urilor fiind indicata.
9.2.4. Atacul de refuz al serviciului
(Denial Of Service)
Prin aceste atacuri se degradeaza sau se dezafecteaza anumite servicii ale sistemului de operare. In retelele de calculatoare, de exemplu, exista bombardamentul cu pachete, cunoscut ca PACKET FLOOD care consta in transmiterea catre un calculator tinta un numar foarte mare de pachete de date, avand ca rezultat incarcarea traficului in retea. Uneori se poate ajunge chiar la blocarea retelei. Atacul poate proveni de la singura sursa (DOS= Denial Of Service) sau de la mai multe surse (DDOS=Distributed Denial Of Service), caz mai rar intalnit. Exista trei tipuri de bombardamente cu pachete:
a) TCP - Bombardamentul se face in protocolul TCP (Transmission Control Protocol), iar un flux de pachete TCP sunt trimise spre tinta.
b) ICMP - Acest atac se mai numeste PING FLOOD si utilizeaza pachete ICMP.
a) UDP - Bombardamentul se realizeaza, cu un flux de pachete UDP (User Datagram Protocol) trimise spre tinta.
Pentru a deruta filtrele de pachete existente in interiorul fiecarei retele, in bombardarea cu pachete exista programe speciale care modifica atributele pachetelor trimise. Exemple:
-se modifica adresa IP-sursa, (IP-Spoofing = falsificarea adresei IP), pentru a ascunde identitatea reala a pachetelor;
-se modifica portul sursei sau destinatiei;
-se modifica alte valori ale atributelor din antetul pachetelor IP.
Exemple de bombardamente cu pachete, pentru incarcarea traficului.
-Atacul SYN-flood. Se trimit pachete care au numai bitul de SYN setat. In felul acesta se deschid multe conexiuni care sunt incomplete. Deoarece fiecare conexiune trebuie prelucrata pana la starea finala, se va depasi timpul admis, se va declara time-aut si sistemul se va bloca.
- Atacul smarf. Este un atac de tipul ICMF impotriva unei tinte care este adresa broadcast a retelei. Atacul se face cu adresa sursa IP modificata si va duce la generare de trafic suplimentar.
- Atacul fraggle. Este un atac cu pachete UDP avand ca tinta portul 7 al adresei broadcast al retelei. In felul acesta un singur pachet va fi transmis intregului segment al retelei.
Exemple de bombardamente cu pachete, in vederea unor vulnerabilitati ale serviciilor retelei.
- Atacul tear-drop. Acest atac exploateaza protocolul TCP pentru fragmentele IP suprapuse ce nu sunt gestionate corect, adica cele care nu verifica corectitudinea lungimii fragmentelor.
- Atacuri land craft. Se trimit pachete SYN ce au adresa sursei identica cu adresa destinatie, deschizand astfel o conexiune vida.
- Atacuri ping of death. Se trimit pachete ICPM de dimensiuni foarte mari, ce depasesc lungimea standard de 64 kB, cat permite ICPM, depasirea acestei valori ducand la disfunctii ale stivei de comunicatie.
- Atacuri naptha. Acest atac consta in deschiderea unui numar mare de conexiuni si abandonarea lor in diferite stari. La un moment dat se ajunge la refuzul serviciilor de retea a calculatorului tinta.
Modalitatile de prevenire a atacurilor de tip DOS sunt:
- utilizarea unor versiuni cat mai recente ale sistemului de operare;
-implementarea mecanismului SYNCOOKIES care consta in alegerea particulara ale numerelor initiale de secventa TCP, in asa fel ca numarul initial de secventa din server sa creasca putin mai repede decat numarul initial de secventa de pe client;
-separarea serviciilor publice de cele private, utilizate in interiorul retelei;
-utilizarea de IP separate pentru fiecare serviciu in parte (HTTP, SMTP,DNS...);
-instalarea unei conexiuni de siguranta care sa preia traficul extern in cazul unui atac PACKET FLOOD;
-instalarea de firewall-uri la nivel de pachet, pentru serviciile care nu se utilizeaza in mod curent;
-dezactivarea serviciilor ce nu sunt necesare;
-separarea Intranetului de Internet.
9.2.5. Atacuri cu bomba e-mail
Acest atac consta din trimiterea repetata a unui mesaj catre aceeasi tinta.
Principala metoda de protectie este refuzul mesajului primit de la utilizatorul respectiv.
Un alt atac de tip e-mail este atacul SPAM (e-mail spamming). Acest atac este un atac mai nou in care se trimit mesaje nesolicitate, de cele mai multe ori de tip reclama, de catre un expeditor care utilizeaza o adresa falsa.
9.2.6. Falsificarea adresei expeditorului
(e-mail spoofing)
Este un atac care consta din receptionarea de catre utilizator a unui e-mail care are adresa expeditorului diferita de cea originala. Este utilizat, in general, pentru a ascunde adresa atacatorului. Aceasta modificare a adresei expeditorului este favorizata de faptul ca protocolul de transport al mesajelor, utilizat in retele, (SMTP=Simple Mail Transfer Protocol), nu prevede nici un sistem de autentificare.
Prevenirea acestui tip de atac poate fi facuta prin diferite metode:
-utilizarea criptografiei pentru autentificare;
-configurarea serverului de e-mail pentru a refuza conectarea directa la portul SMTP sau limitarea accesului la el;
-stabilirea unui singur punct de intrare pentru e-mail-ul primit de retea, permitandu-se astfel concentrarea securitatii intr-un singur punct precum si instalarea unui firewall.
9.2.7. Cai troieni (Trojan horses)
Caii troieni informatici sunt programe care se ascund sub forma unor fisiere executabile obisnuite. Odata patrunsi intr-un fisier, gazda poate efectua orice operatie.
Exemple:
-aplicatiile denumite "vaduva neagra" (black widow) de pe www care actioneaza asupra browserelor web, blocandu-le sau deteriorandu-le;
-caii troieni instalati in scriptul CGI , care deterioreaza scriptul.
Ca mijloace de lupta impotriva cailor troieni se recomanda realizarea periodica de copii de siguranta a sistemelor de fisiere, pentru a putea restaura fisierele executabile originale in cazul alterarii acestora.
9.2.8. Usi ascunse (Back dors and traps)
Sunt cazuri particulare de cai troieni. Se creeaza o "Usa" care de fapt este un utilizator nou si care permite acordare de privilegii speciale unui anumit utilizator.
9.2.9. Virusi
Un virus este o secventa de cod care se autoinsereaza intr-o gazda, inclusiv in sistemul de operare, pentru a se propaga. Aceasta secventa de cod, neputand rula independent, apeleaza la executia programului gazda pentru a se putea activa.
Crearea virusului a pornit de la o idee a profesorului Cohen, la inceputul anilor 80, care, intr-un articol, explica ca s-ar putea crea secvente de cod-program care sa provoace anumite daune.
Primii virusi sunt consemnati in istoria informaticii in 1987, in Pakistan. De atunci si pana in prezent virusii au cunoscut o dezvoltare spectaculoasa, fiind principalii actori ai atacurilor din afara sistemului.
Daca in anii 80 o eroare a unui sistem de calcul avea cauza principala in redusa fiabilitate hard, astazi majoritatea erorilor sunt cauzate de virusi.
Trebuie remarcat ca, la ora actuala, exista o larga raspandire a virusilor in sistemul de operare WINDOWS si o raspandire foarte mica, chiar nula, in sistemele de operare de tip UNIX.
Faptul ca sistemele de operare UNIX nu sunt vulnerabile la virusi se datoreaza gestiunii stricte a memoriei si a proceselor ce se executa. Chiar daca un virus reuseste sa patrunda in sistemul UNIX, posibilitatea lui de replicare este extrem de redusa.
Lupta contra virusilor este astazi una dintre cele mai importante probleme. Ca si in cazul virusului biologic, ideal ar fi ca virusul informatic sa fie evitat. Pentru aceasta ar trebui respectate anumite reguli importante cum ar fi:
-alegerea unui sistem de operare cu un inalt grad de securitate;
-instalarea de aplicatii sigure si evitarea copiilor a caror provenienta este dubioasa;
-achizitionarea unui program antivirus bun si upgardarea sa cat mai des posibil;
-evitarea atasamentelor de pe e-mail;
-crearea frecventa a copiilor de siguranta pentru fisierele cele mai importante si salvarea lor pe medii de stocare externe (CD-uri, streamere etc.).
Programele antivirus create pana in prezent folosesc diferite tehnici antivirus cu ar fi:
-scanarea de virusi;
-verificarea de integritate in care programul antivirus utilzeaza tehnica checksum-ului;
-verificarea de comportament in care programul antivirus sta tot timpul in memorie si capteaza el insusi toate apelurile sistem.
2.10. Viermi (Worms)
Viermii sunt niste virusi care nu se reproduc local ci pe alte calculatoare, de obicei prin Internet.
Un vierme este un program care poate rula independent, consumand resursele gazdei pentru a se executa si care poate propaga o versiune functionala proprie catre alte calculatoare. Viermele functioneaza dupa principiul "cauta si distruge". Un vierme se raspandeste in mod automat, instalandu-se in calculatoarele ce prezinta vulnerabilitati. Din pacate, la ora actuala factorului de multiplicare al viermilor este exponential. Pe langa actiunile distructive, un vierme creeaza un trafic urias in retea ducand la un refuz al serviciilor.
Exemple de viermi:
-viermele MORRIS este primul vierme din istorie, creat de un student de la Universitate Cornell;
-viermele CODE RED care exploateaza un bug din WEB numit IIS.
3. MECANISME DE PROTECTIE
In acest subcapitol vom prezenta principalele mecanisme de protectie folosite in sistemele de operare. Ne vom ocupa de doua mecanisme de protectie curente , crptografia si sistemele firewall, precum si de doua concepte de securitate, monitorul de referinta si sistemele de incredere.
3.1. Criptografia
Criptografia are ca scop transformarea unui mesaj sau a unui fisier, denumit text in clar (plaintext), intr-un text cifrat, denumit ciphertext.
Acest lucru se poate realiza in doua moduri:
-criptarea cu cheie secreta (criptografia simetrica);
-criptarea cu chei publice (criptografia asimetrica).
3.1.1. Criptografia cu chei secrete
(criptografia simetrica)
In acest sistem este folosita o singura cheie, atat pentru criptarea cat si pentru decriptarea informatiei.
Intre expeditor si destinatar se negociaza un protocol comun, de maxima siguranta, care are rolul de a transmite de la expeditor la destinatar o cheie de criptare secreta.
In cadrul criptografiei cu chei secrete exista mai multe tehnici:
a)-cifrurile bloc (block ciphers);
b)-cifrurile flux (stream ciphers);
c)-codurile de autentificare a mesajelor(MAC)).
a)-Cifrul bloc transforma un bloc de text de lungime fixa intr-un bloc de text criptat, de aceeasi lungime, cu ajutorul unei chei secrete. Putem spune ca in acest tip de criptare, deoarece nu se modifica numarul de caractere al textului initial, are loc o permutare a caracterelor din setul initial. Exista mai multe tehnici de criptare:
-cifrul bloc iterativ;
-modul carte de coduri (ECB=Electronic Code Block);
-modul cu inlantuire (CBC=Cipher Block Chaining);
-modul cu reactie (CFB=Cipher Feed Back);
-modul cu reactie la iesire (OFB=Output Feed Back).
-Cifrul bloc iterativ. Se aplica la fiecare iteratie o aceeasi transformare, utilizand o subcheie. Setul de subchei este derivat din cheia secreta de criptare, prin intermediul unei functii speciale. Numarul de cicluri dintr-un cifru iterativ depinde de nivelul de securitate dorit. In general, un numar ridicat de cicluri va imbunatati performanta, totusi, in unele cazuri, numarul de iteratii poate fi foarte mare. Cifrurile Feistel reprezinta o clasa speciala de cifruri bloc iterative in care textul criptat este generat prin aplicarea repetata a aceleiasi transformari sau a functiei iterative. Se mai numesc si cifruri DES (Data Enscryption Standard). Intr-un cifru Feistel, textul original este despartit in doua parti, functia iterativa fiind aplicata unei jumatati folosind o subcheie iar iesirea acestei functii este calculata SAU-EXCLUSIV cu cealalta jumatate. Cele doua jumatati sunt apoi interschimbate.
-Modul carte de coduri. Fiecare text original (de fapt bloc de text) este criptat independent, cu alte cuvinte fiecarui bloc de text original ii corespunde un bloc de text cifrat.
-Modul cu inlantuire. Fiecare bloc de text original este calculat SAU-EXCLUSIV cu blocul criptat precedent si apoi este criptat. Este utilizat un vector de initializare, de preferinta pseudo aleatoriu.
-Modul cu reactie. Blocul cifrat precedent este criptat iar iesirea este combinata cu blocul original printr-o operatie SAU-EXCLUSIV.
b)-Cifrurile flux seamana cu cifrurile bloc dar au avantajul ca sunt mult mai rapide. Daca cifrurile bloc lucreaza cu blocuri mari de informatie, cifrurile flux lucreaza cu bucati mici de text, de cele mai multe ori la nivel de bit.
c)-Coduri de autentificare a mesajelor (MAC=Message Authentification Code). Un asemenea cod este o eticheta de autentificare numita si suma de control (checksume) si deriva din aplicarea unei scheme de autentificare, impreuna cu o cheie secreta, unui mesaj. Spre deosebire de semnaturile digitale, Mac-urile sunt calculate si verificate utilizand aceeasi cheie, astfel incat ele pot fi verificate doar de catre destinatar. Exista patru tipuri de MAC-uri:
-Sigure neconditionat. Sunt bazate pe criptarea unui drum unic. Textul cifrat al mesajului se autentifica pe sine insusi si nimeni altcineva la drumul unic. Un MAC sigur conditionat poatefi obtinut prin utilizarea unei chei secrete folosite doar odata.
-Bazate pe functia de dispersie (HMAC). O functie de dispersie H reprezinta o transformare ce primeste la intrare valoarea m si returneaza un sir de lungime fixa, h. Se utilizeaza una sau mai multe chei impreuna cu o functie de dispersie, pentru a produce o suma de control care este adaugata mesajului.
-Bazate pe cifruri flux. Un cifru flux sigur este utilizat pentru a descompune un mesaj in mai multe fluxuri.
-Bazate pe cifruri bloc. Se cripteaza blocuri de mesaj utilizand DES si CBC, furnizandu-se la iesire blocul final al textului cifrat ca suma de control.
Sistemul DES (Data Encryption Standard) este o aplicatie a cheilor secrete. Se utilizeaza in acest sistem chei de 56 biti. Sistemul DES este destul de vulnerabil si de aceea el se utilizeaza impreuna cu un sistem sigur de gestionare a cheilor de criptare. Variante mai performante ale DES-ului sunt:
-triple DES, unde se cripteaza datele de trei ori consecituv;
-DESX, unde se utilizeaza o cheie de criptare de 64 biti, de tip SAU-EXCLUSIV, inainte de criptarea cu DES iar dupa DES se mai utilizeaza inca o data o cheie de criptare.
3.1.2. Criptarea cu chei publice
(Criptografia asimetrica)
Fiecare persoana detine cate doua perechi de chei, una publica -ce poate fi chiar disponibila pe Internet- si una privata. Avantajul acestui sistem de criptare este ca nu este necesara asigurarea securitatii transmisiei informatiei. Oricine poate transmite o informatie utilizand cheia publica dar informatia nu poate fi decriptata decat prin intermediul cheii private, detinuta doar de destinatar. Cheia privata este intr-o legatura matematica cu cea publica. Protejarea impotriva unor atacuri care se fac prin derivarea cheii private din cheia publica se realizeaza facand aceasta derivare cat mai dificila, aproape imposibila.
Criptografia cu chei secrete este utilizata de sistemele traditionale. Este un mod mult mai rapid dar are dezavantajul ca modul de transmisie a cheilor trebuie sa fie foarte sigur.
Sistemul RSA (Rivers Shamir Adleman). Acest sistem utilizeaza chei publice si ofera mecanisme de criptare a datelor si semnaturi digitale.
Algoritmul de functionare al sistemului RSA este urmatorul:
-se aleg doua numere prime mari p si q
-se calculeaza n=pq
-se alege un numar e, e<n , e fiind prim cu (p-1)(q-1)
-se calculeaza un numar d, astfel incat (ed-1) sa fie divizibil prin (p-1)(q-1)
-cheia publica este (n,e)
-cheia privata este (n,d)
Obtinerea cheii private d pornind de la cheia publica (n,e) este dificila. Se poate determina cheia privata d prin favorizarea lui n in p si q. Securitatea sistemului RSA se bazeaza pe faptul ca aceasta determinare este foarte dificila.
Criptarea prin intermediul RSA se realizeaza astfel:
-expeditorul mesajului m creeaza textul cifrat c=me mod n, unde (e,n) reprezinta cheia publica a destinatarului;
-la decriptare, destinatarul calculeaza m=cd mod n .
Relatia dintre e si d asigura faptul ca destinatarul decripteaza corect mesajul. Deoarece numai destinatarul cunoaste valoarea lui d, doar el poate decripta mesajul.
Siguranta RSA se bazeaza in primul rand pe gestionarea cheilor private, mecanism dependent de implementarea algoritmului RSA. De asemenea, este importanta alegerea unei perechi puternice de numere prime p si q. Numerele prime puternice au diferite proprietati care le face greu de fabricat.
Dimensiunea cheii utilizate intr-un algoritm RSA se refera la dimensiunea lui n. Cu cat n este mai mare cu atat securitatea algoritmului este mai mare dar si functionarea acestuia este mai lenta. Marimea uzuala a cheii este de 1024 biti.
Sistemul RSA este utilizat impreuna cu un sistem criptografic cu chei scurte, cum ar fi DES.
3.2. Dispozitive firewall
Un firewall este un sistem care separa o retea protejata de una neprotejata, reteaua neprotejata fiind in majoritatea cazurilor INTERNET. Un astfel de sistem monitorizeaza si filtreaza traficul dintre cele doua retele, conform unei politici predefinite de control al accesului.
Internet
exterior
firewall
interior
Retea interna
Fig. 1. Locul unui firewall
Termenul firewall inseamna "perete de foc" si arata capacitatea de a segmenta o retea mai mare in subretele.
Un firewall are doua interfete:
-una catre exterior, de cele mai multe ori catre Internet;
-una directionata catre reteaua interna pe care o protejeaza.
Filtrarea traficului dintre aceste doua retele se face dupa anumite criterii si vizeaza:
-adresele IP sursa si destinatie ale pachetelor de informatie vehiculate (address filtering);
-anumite porturi si protocoale (HTTP, FTP, TELNET) (protocol filtering).
Un firewall de retea nu poate administra transferul de date efectuat de catre un utilizator care foloseste o legatura la Internet de tip deal-up, ocolind procedurile de securitate si implicit firewall-ul in sine.
3.2.1. Tipuri de firewall
Putem considera patru tipuri :
1) Firewall-uri cu filtrare de pachete (Packet Filtering Firewalls). Functioneaza la nivelul IP al modelului OSI si respectiv la nivelul IP al modelul TCP/IP. Se analizeaza sursa de provenienta si destinatie a fiecarui pachet in parte, acceptand sau blocand traficul derulat de acestea. De obicei, acest tip de firewall este implementat la nivel de router, ceea ce implica un cost minim. Principalul sau dezavantaj consta in incapacitea de a furniza o securitate, prin reguli complexe de identificare si validare a IP-urilor, motiv pentru care este indicata utilizarea impreuna cu un al doilea firewall extern care sa ofere protectie suplimentara.
2) Portite de circuit (Circuit Level Gateways). Ruleaza la nivelul 5 al modelului OSI si respectiv nivelul 4 al modelului TCP/IP. Se monitorizeaza sesiunile TCP dintre reteaua interna si reteaua Internet. Se utilizeaza un server intermediar care mascheaza datele de pe calculatoarele retelei private. Punctul slab al portilor de curent este faptul ca nu se verifica pachetele ce constituie obiectul traficului cu reteaua publica ci doar filtreaza in functie titlu.
3) Proxi-uri de aplicatie (Proxies). Sunt cele mai complexe solutii de tip firewall dar si cele mai scumpe. Functioneaza la nivel de aplicatie al modelului OSI. Se verifica pachetele de date si se blocheaza accesul pachetului care nu respecta regulile stabilite de proxi. Pentru un proxi de web, de exemplu, acesta nu va pemite niciodata accesul unui trafic de protocol FTP sau TELNET. Serverul local vede aceasta solutie ca pe un simplu client, in timp ce reteaua publica il va recepta ca fiind insusi serverul. Proxi-urile de aplicatie pot crea fisiere de tip log cu activitatea utilizatorilor din retea sau pot monitoriza autentificarile acestora, oferind si o verificare de baza a pachetelor transferate cu ajutorul antivirusului incorporat.
4) Firewall-uri cu inspectii multistrat (Stateful Multilayer Inspections). Este o combinatie intre cele trei tipuri descrise anterior. Acest tip se bazeaza pe algoritmi proprii de recunoastere si aplicare a politicilor de securitate, spre deosebire de o aplicatie proxi standard. Inspectia multinivel ofera un inalt grad de securitate, performante foarte bune si o transparenta oferita end-user-urilor. Este cea mai scumpa dar, fiind foarte complexa, se poate transforma intr-o arma impotriva retelei pe care o protejeaza daca nu este administrata de personal competent.
3.2.2. Functiile unui firewall
Un firewall are urmatoarele posibilitati:
-monitorizeaza caile de acces in reteaua privata, permitand in acest fel o mai buna monitorizare a traficului si o mai usoara detectare a incercarilor de infiltrare;
-blocheaza traficul inspre si dinspre Internet;
-selecteaza accesul in spatiul privat pe baza informatiilor continute in pachete;
-permite sau interzice accesul la reteaua publica de pe anumite spatii specificate;
-poate izola spatiul privat de cel public si realiza interfata dintre cele doua.
Un firewall nu poate sa execute urmatoarele:
-sa interzica importul/exportul de informatie daunatoare vehiculata ca urmare a actiuni rautacioase a unor utilizatori apartinand spatiului privat, cum ar fi casuta postala si atasamentele;
-sa interzica scurgerea de informatie de pe alte cai care ocolesc firewall-ul (acces prin deal-up ce nu trece prin router);
-sa apere reteaua privata de userii ce folosesc sisteme fizice mobile de introducere a datelor in retea (USB Stick, CD, dischete);
-sa previna manifestarea erorilor de proiectare ale aplicatiilor ce realizeaza diverse servicii, precum si punctele slabe ce decurg din exploatarea acestor greseli.
3.2.3. Firewall-uri in sistemele de operare Windows
Vom exemplifica instalarea si configurarea unui firewall in Windows. Am ales versiunea trial a programului Zone Alarm Pro.
Pentru inceput, programul se instaleaza in mod standard, urmand ca setarile sa se faca ulterior. Programul ofera, pe langa protectia firewall, protejarea programelor aflate pe hard disc, protectia e-mail si posibilitatea blocarilor cookies-urilor, pop-urilor si bariere-lor nedorite.
Setarile se pot face pe trei nivele diferite:
-High, nivel ce ofera o protejare cvasitotala, strict monitorizata, dar care impiedica optiunile de sharing;
-Medium, nivel ce ofera o setare cu posibilitatea vizionarii resurselor proprii din exterior dar fara posibilitatea modificarii acestora;
-Low, nivel la care firewall-ul este inactiv iar resursele sunt expuse la atacuri.
Pentru posta electronica programul se comporta ca o adevarata bariera in fata unor eventuale supraaglomerari a casutei postale, avand posibilitatea blocarii e-mail-urilor ce vin consecutiv. In default exista optiunea de acceptare a maximum 5 e-mail-uri ce vin intr-un interval de 2 secunde. Exista si optiunea refuzarii e-mail-urilor insotite de diverse atasamente sau a acceptarii lor doar pentru cele ce nu au un numar de recipiente atasate care depaseste totalul admis de utilizator.
3.2.4. Firewall-uri in sistemul de operare Linux
In sistemul de operare Linux a fost implementat la nivel de kernel un firewall numit iptables. Acest sistem ofera posibilitatea de a filtra sau redirectiona pachetele de date, precum si de a modifica informatiile despre sursa si destinatia pachetelor, procedura numita NAT (Network Address Translation). Una dintre aplicatiile sistemului NAT este posibilitatea deghizarii pachetelor (maquerading). Deghizarea inseamna ca pachetele trimise de catre sistemele aflate in retea, care au stabilite ca gateway o anumita masina, sa para transmisa de masina respectiva si nu de cea originara. Masina, configurata ca firewall, retrimite pachetele venite, dinspre retea spre exterior, facand sa para ca provin tot de la ea. Acest mecanism este foarte util atunci cand exista o masina care realizeaza legatura la Internet, o singura adresa IP alocata si mai multe calculatoare in retea care au definita masina respectiva ca gateway. Situatia este des intalnita in cadrul companiilor mici si mijlocii dotate cu o legatura Internet permanenta, mai ales ca urmare a crizei de adrese IP manifestata in ultimii ani.
Nucleul Linux defineste doua tabele de reguli:
-filter, utilizata pentru filtrul de pachete;
-nat, utilizata pentru sistemul NAT.
Exista 5 lanturi predefinite care inseamna o succesiune de reguli utilizate pentru verificarea pachetelor de date ce tranziteaza sistemul. Acestea sunt:
-lantul INPUT, disponibil pentru tabela filter;
-lantul FORWARD, disponibil pentru tabela filter;
-lantul PREROUTING, disponibil pentru tabela nat;
-lantul POSROUTING, disponibil pentru tabela nat:
-lantul OUTPUT, disponibil pentru ambele tabele.
Atunci cand pachetul intra in sistem printr-o interfata de retea, nucleul decide daca el este destinat masinii locale (lantul INPUT) sau altui calculator (lantul FORWARD). In mod similar, pachetele care ies din masina locala trec prin lantul OUTPUT. Fiecare lant contine mai multe reguli ce vor fi aplicate pachetelor de date care le tranziteaza. In general, regulile identifica adresele sursa si destinatie a pachetelor, insotite de porturile sursa si destinatie, precum si protocolul asociat. Cand un pachet corespunde unei reguli, adica parametrii mentionati mai sus coincid, asupra pachetelor se va aplica o anumita actiune care inseamna directionarea catre o anumita tinta. Daca o regula specifica actiunea accept, pachetul nu mai este verificat folosind celelalte reguli ci este directionat catre destinatie. Daca regula specifica actiunea DROP, pachetul este "aruncat", adica nu i se permite sa ajunga la destinatie. Daca regula specifica actiunea REJEET, pachetului tot nu i se permite sa ajunga la destinatie dar este trimis un mesaj de eroare expeditorului. Este important ca fiecarui lant sa-i fie atribuita o actiune implicita care va reprezenta destinatia pachetului daca nici una din regulile stabilite nu corespunde. Astfel lantul INPUT trebuie sa aiba DROP sau REJECT ca actiune implicita pentru orice pachet care se doreste a fi filtrat.
Daca dorim sa implementam un firewall intr-o masina care realizeaza conexiunea Internet intr-o companie privata, vom permite accesul din exterior la serviciile web, precum si la serviciile de e-mail. Conexiunea la reteaua locala este realizata prin interfata etho , iar cea pe Internet prin interfata pppo.
Exista mai multe interfete grafice pentru generarea de firewall-uri pentru sistemul iptables, cum ar fi : Firewall Bulder, Firestarter etc.
La sfarsitul implementarii se verifica functionarea firewall-ului, testarea fiind mai greu de realizat daca acesta contine multe reguli. Testarea se face din afara retelei, utilizand un scanner (SATAN sau NMAP) si din interior. Dupa ce s-au stabilit regulile de filtrare si s-a testat functionarea firewall-ului este recomandabil sa se salveze configuratia curenta a sistemului iptables.
3.3. Sisteme de incredere
Sistemele de incredere sunt un concept mai nou si sunt capabile sa ofere securitate la nivel de sistem. Pentru aceste sisteme s-au formulat clar cerinte de securitate care s-au si indeplinit. Fiecare sistem de incredere contine o Baza de Calcul de Incredere (TCB= Trusted Computing Base) care consta in hardul si softul ce contin toate regulile de securitate. Daca aceasta TCB functioneaza conform specificatiilor, sistemul de securitate nu poate fi compromis.
TCB-ul consta dintr-o parte a kernelului sistemului de operare si din programele utilitare ce au putere de superutilizator. Functiile sistemului de operare care fac parte din TCB sunt separate de restul SO, pentru a le minimaliza dimensiunea si a le verifica corectitudinea.
Vom prezenta in continuare cateva modele de sisteme de incredere.
3.3.1. Monitorul de referinte
Monitorul de referinte este o parte importanta a TCB-ului care accepta toate apelurile sistem ce implica securitatea, cum ar fi deschiderea de fisiere, si decide daca ar trebui sa fie procesate sau nu. Astfel, monitorul de referinta permite amplasarea tuturor deciziilor de securitate intr-un singur loc, fara posibilitatea de a-l coli.
USER
KERNEL
Fig. 2. Schema unui monitor de referinte
9.3.3.2. Modelul cu Liste de Control al Accesului
(ACL)
Un sistem de calcul contine multe obiecte care necesita a fi protejate. Aceste obiecte pot fi componente hard (unitati de disc, segmente de memorie, imprimante etc.) sau componente soft (procese, fisiere, semafoare etc.). Fiecare obiect are un nume unic prin care este referit si un set finit de operatii permise, de exemplu scriere/citire pentru fisiere, up/down pentru semafoare etc. Este necesara o modalitate de a interzice proceselor de a accesa obiecte pe care nu sunt autorizate sa le acceseze. Trebuie creat un mecanism pentru restrictionarea proceselor la un subset al operatiilor legale, cand este necesar. Se introduce notiunea de domeniu de protectie care inseamna un set de perechi (obiecte, drepturi). Fiecare pereche specifica un obiect si un subset al operatiilor permise asupra lui. Un drept, in acest context, inseamna permisiunea de a executa una din aceste operatii. O implementare a domeniilor de protectie este matricea de protectie in care coloanele sunt obiecte iar liniile sunt domenii sau drepturi. Un exemplu de matrice de protectie este cel de mai jos:
obiecte
domenii
Fisier 2
Fisier 3
Imprimanta 1
Imprimanta 2
1
citire
citire
scriere
2
citire
scriere
scriere
3
scriere
Fig.3. Matrice de protectie.
Practic, o astfel de matrice are dimensiuni foarte mari iar imprastierea in cadrul matricei este si ea foarte mare. De aceea matricea se pastreaza pe randuri sau pe coloane, cu elemente nevide. Daca matricea se pastreaza pe coloane, structura de date este Lista de Control al Accesului (ACL = Acces Control List). Daca se pastreaza pe linii, se numeste lista de capabilitati (Capability List) sau lista C (C-List) iar intrarile individuale se numesc capabilitati.
Liste de Control al Accesului. Fiecare obiect are asociat o ACL in care sunt trecute drepturile respective. Pentru exemplul dat, ACL-urile obiectelor sunt:
Fisier1 →1;c;2;3;
Fisier2 →1;cs;2;3;
Fisier3 → 1;2;cse;3;
Imprimanta 1→1;2;3;s;
Imprimanta 2→1;2;s;3;
Proprietarul fisierului poate sa modifice ACL-urile.
Capabilitati. Se retine matricea pe linii. Listele 1,2,3 de capabilitati ale obiectelor sunt, pentru exemplul de mai sus, urmatoarele:
1 2 3
Fisier1Fisier 1:cFisier 3:cse Imprimanta 1:s
Fisier2Fisier 2:cs Imprimanta2:s
Fisier3
Imprimanta 1
Imprimanta 2
9.3.3.3. Modelul Bell-La Padula
Cele mai multe sisteme de operare permit utilizatorilor individuali sa decida cine poate sa citeasca si sa scrie fisierele sau alte obiecte proprii. Aceasta politica se numeste control discretionar al accesului. In unele medii modelul functioneaza bine dar exista si medii in care se cere o securitate superioara, de exemplu armata, spitalele etc. Pentru aceste medii sunt necesare o serie de reguli mult mai stricte. Se foloseste, in aceste cazuri, un control obligatoriu al accesului. Se regularizeaza fluxul informatiei pentru a se asigura ca nu sunt scapari in mod nebanuit. Un astfel de model este si Bell-La Padula, folosit des si in armata.
In acest model oamenilor din armata le sunt atribuite nivele in functie de natura documentelor permise lor spre vizualizare. Un proces ce ruleaza din partea unui utilizator primeste nivelul de securitate al utilizatorului. Din moment ce exista mai multe nivele de securitate, aceasta schema se numeste sistem de securitate multinivel.
Modelul Bell-Padula apartine acestui sistem, el avand reguli despre cum poate circula informatia.
-Proprietatea simpla de securitate: un proces ruland la nivelul de securitate k poate citi doar obiecte la nivelul sau sau mai jos.
-Proprietatea asterisc (*) : un proces ruland la nivelul de securitate k poate scrie doar obiecte la nivelul sau sau mai sus.
Deci, conform acestui model, procesele pot citi in jos si scrie in sus. Daca sistemul impune cu strictete aceste doua proprietati, se poate arata ca nu se poate scurge nici o informatie de la un nivel mai inalt la un nivel mai coborat. In acest model, ilustrat grafic in fig.4., procesele citesc si scriu obiecte dar nu comunica intre ele.
Nivel de securitate
4
3
2
1
citire scriere
Proces Obiect ProcesObiect
Fig. 4. Schema de securitate multinivel.
Proprietatea simpla de securitate afirma ca toate sagetile continue (de citire) merg in lateral sau in sus iar sagetile intrerupte (de scriere) merg in lateral sau in sus. Din moment ce toata informatia circula doar orizontal sau in sus, orice informatie ce porneste de la nivelul k nu poate sa apara la un nivel inferior. Deci nu exista nici o cale care sa miste informatia in jos, garantandu-se astfel securitatea modelului. Daca transpunem aceste lucruri in termeni militari, un locotenent poate sa ceara unui soldat sa-i dezvaluie tot ce stie ca apoi sa copieze aceasta informatie in fisierul unui general, fara a incalca securitatea.
In concluzie, modelul Bell-La Padula a fost conceput sa pastreze secrete dar nu sa garanteze integritatea datelor.
9.3.3.4. Modelul Biba
Pentru a se garanta integritatea datelor ar trebui inversate proprietatile din modelul Bell-La Padula, adica:
1) Un proces ruland la nivelul de securitate k poate scrie doar obiecte la nivelul sau sau mai jos.
2) Un proces ruland la nivelul de securitate k poate citi doar obiecte la nivelul sau sau mai sus.
Aceste proprietati stau la baza modelului Biba care asigura integritatea datelor dar nu si secretizarea lor. Bineinteles ca modelul Biba si modelul Bell-La Padula nu pot firealizate simultan.
9.3.3.5. Modelul securitatii Cartii Portocalii
In 1985 Departamentul Apararii Statelor Unite ale Americii a publicat undocument cunoscut sub denumirea de Cartea Portocalie , un document care imparte sistemele de operare in cateva categorii bazate pe criteriul de securitate. Iata mai jos criteriile de securitate ale Cartii Portocalii. Nivelele de securitate sunt notate cu D, C1, C2, B1, B2, B3, A1, in ordinea in care securitatea creste spre dreapta.
CRITERIU
D
C1
C2
B1
B2
B3
A1
Politica de securitate
Control discretitabil al accesului
x
x
→
→
x
→
Refolosirea obiectului
x
→
→
→
→
Etichete
x
x
→
→
Integritatea catalogarii
x
→
→
→
Exportare a informatiei catalogate
x
→
→
→
Catalogarea iesirii lizibile
x
→
→
→
Control obligatoriu al accesului
x
x
→
→
Catalogari ale senzitivitatii subiectului
x
→
→
Etichete ale dispozitivelor
x
→
→
Posibilitatea de contabilizare
Identificare si autentificare
x
x
x
x
x
→
Audit
x
x
x
x
→
Cale de incredere
x
x
→
Asigurare
Arhitectura sistemului
x
x
x
x
x
→
Integritatea sistemului
x
→
→
→
→
→
Testarea securitatii
x
x
x
x
x
x
Specificarile si verificarea modelului
x
x
x
x
Analiza canalului camuflat
x
x
x
Administrarea caracterului de incredere
x
x
→
Administrarea configuratiei
x
→
x
Recuperarea de incredere
x
→
Distribuire de incredere
x
Documentare
Ghid pentru aspecte de securitate
x
→
→
→
→
→
Manual al caracteristicilor de incredere
x
x
x
x
x
→
Documentatie de testare
x
→
→
x
→
x
Documentatie de proiectare
x
→
x
x
x
x
Legenda :x - sunt noi cerinte;
→- cerintele pentru urmatoarea categorie
inferioara se aplica si aici.
Sa analizam categoriile de securitate si sa subliniem cateva dintre aspectele importante.
Nivelul D de conformitate este usor de atins, neavand nici un fel de cerinte de securitate. Aduna toate sisteme ce au esuat sa treaca chiar si testele de securitate minima. MS-DOS si Windows 98 sunt de nivel D.
Nivelul C este intentionat pentru medii cu utilizatori cooperativi. C1 necesita un mod protejat al sistemului de operare, conectarea utilizatorilor prin autentificare si capacitatea pentru utilizatori de a specifica ce fisiere pot fi facute disponibile altor utilizatori si cum. Se cere o minima testare de securitate si documentare. Nivelul C2 adauga cerinta ca si controlul discretizabil al accesului sa fie coborat la nivelul utilizatorului individual. Trebuie ca obiectele date utilizatorului sa fie initializate si este necesara o minima cantitate de auditare. Protectia rwh din Unix este de tipul C1 dar nu de tipul C2.
Nivelele B si A necesita ca tuturor utilizatorilor si obiectelor controlate sa le fie asociata o catalogare de securitate de genul: neclasificat, secret, strict secret. Sistemul trebuie sa fie capabil a impune modelul Bell-La Padula. B2 adauga la aceasta cerinta ca sistemul sa fi fost modelat de sus in jos intr-o maniera modulara. B3 contine toate caracteristicile lui B2, in plus trebuie sa fie ACL-uri cu utilizatori si grupuri, trebuie sa existe un TCB formal, trebuie sa fie prezenta o auditare adecvata de securitate si trebuie sa fie incusa o recuperare sigura dupa blocare. A1 cere un model formal al sistemului de protectie si o dovada ca sistemul este corect. Mai cere si o demonstratie ca implementarea este conforma cu modelul.
9.3.4. Securitatea in sistemele de operare
Windows
Windows NT satisface cerintele de securitate C2 in timp ce Windows 98 nu satisface aceste cerinte.
Cerintele de securitate, de tip C2, ale versiunii Windows NT sunt:
-inregistrarea sigura , cu masuri de protectie impotriva atacurilor de tip spoofing;
-mijloace de control al accesului neingradit;
-mijloace de control ale acceselor privilegiate;
-protectia spatiului de adrese al unui proces;
-paginile noi trebuie umplute cu zerouri;
-inregistrari de securitate.
Inregistrare sigura inseamna ca administratorul de sistem poate cere utilizatorilor o parola pentru a se inregistra. Atacul de spoofing se manifesta atunci cand un utilizator scrie un program rauvoitor care afiseaza caseta de inregistrare si apoi dispare. Cand un alt utilizator va introduce un nume si o parola, acestea sunt scrise pe disc iar utilizatorului i se va raspunde ca procesul inregistrare a esuat. Acest tip de atac este prevenit de Windouws NT prin indicatia ca utilizatorul sa tasteze combinatia CTRL+ALT+DEL, inainte de a se inregistra utilizatorul. Aceasta secventa este capturata de driverul de tastaturi care apeleaza un program al sistemului de operare ce afiseaza caseta de inregistrare reala. Procedeul functioneaza deoarece procesele utilizator nu pot dezactiva procesarea combinatiei de taste CTRL+ALT+DEL din driverul de tastatura.
Mijloacele de control al accesului permit proprietarului unui fisier sau obiect sa spuna cine il poate utiliza si in ce mod.
Mijloacele de control al accesului privilegiat permit administratoruluisa treaca de aceste restrictii cand este necesar.
Protectia spatiului de adrese inseamna ca fiecare proces utilizator are propriul sau spatiu virtual de adrese protejat si inaccesibil pentru alte procese neautorizate.
Paginile noi trebuie umplute cu zerouri pentru ca procesul curent sa nu poata gasi informatii vechi puse acolo de proprietarul anterior.
Inregistrarile de securitate permit administratorului de sistem sa produca un jurnal cu anumite evenimente legate de securitate.
3.4.1. Concepte fundamentale de securitate in
sistemele Windows
Fiecare utilizator este identificat de un SID (Security ID). Acestea sunt numere binare cu antet scurt urmat de o componenta aleatoare mare. Cand un utilizator lanseaza un proces in executie, procesul si firele sale de executie ruleaza cu SID-ul utilizatorului. Cea mai mare parte a securitatii sistemului este proiectata pentru a se asigura ca fiecare obiect este accesat doar de firele de executie cu SID-urile autorizate.
Fiecare proces are un jeton de acces care specifica SID-ul propriu si alte caracteristici. Este valid si asigurat in momentul inregistrarii de winlogon.
antet
Timp de expirare
Grupuri
DAGL implicit
SID utilizator
SID
grup
SID-uri
restrictionate
Privilegii
Fig. 5. Structura unui jeton de acces Windows.
Timpul de expirare indica momentul in care jetonul nu mai este valid dar actualmente nu este utilizat.
Grupuri specifica grupurile de care apartine procesul (Discretionary Acces Control List).
DAGL implicit este lista de control al accesului, discreta, asigurata, pentru obiectele create de proces.
SID utilizator indica proprietarul procesului.
SID-uri restrictionate este un camp care permite proceselor care nu prezinta incredere sa participe la lucrari cu alte procese demne de incredere, dar mai putin distructive.
Lista de privilegii ofera procesului imputerniciri speciale cum ar fi dreptul de a opri calculatorul sau de a accesa fisiere pe care in mod normal nu ar putea sa le acceseze.
In concluzie jetonul de acces indica proprietarul procesului si ce setari implicite si imputerniciri sunt asociate cu el.
Cand un utilizator se inregisteaza, winlogon ofera procesului initial un jeton de acces. De obicei, procesele ulterioare mostenesc acest jeton de-a lungur ierarhiei. Jetonul de acces al unui proces se aplica initial tuturor firelor de executie ale procesului. Totusi un fir de executie poate obtine un jeton de acces de-a lungul executiei. Un fir de executie client poate sa-si paseze jetonul de acces unui fir de executie server pentru a-i permite serverului sa-i acceseze fisierele protejate si alte obiecte . Un astfel de mecanism se numeste impersonalizare.
Descriptorul de securitate este un alt concept utilizat de Windows. Fiecare obiect are un descriptor de securitate care indica cine poate efectua operatii asupra lui.
Un descriptor de securitate este format din:
-antet;
-DACL (Discretionary Acces Control List)
-unul sau mai multe ACE (Acces Control Elements).
Cele doua tipuri principale de elemente sunt Permite si Refuza. Un element Permite specifica un SID si o harta de biti care specifica ce operatii pot face procesele cu respectivul SID asupra obiectului. Un element Refuza functioneaza dupa acelasi principiu, doar ca o potrivire inseamna ca apelantul nu poate efectua operatia respectiva.
In structura unui descriptor de securitate mai exeista si SACL (System Acces Control List) care este asemanatoare cu DACL numai ca nu specifica cine poate utiliza obiectul ci specifica operatiile asupra obiectului pastrate in jurnalul de securitate al intregului sistem. In exemplul nostru fiecare operatie executata de George asupra fisierului va fi inregistrata.
Antet
Refuza
Dan
ACE
111111
Permite
Antet
Irina
ACE
SID proprietar
110000
Fisier
SID grup
Permite
DACL
Andrei
ACE
SACL
111111
Descriptor de securitate
Permite
Roxana
ACE
100000
Antet
Inregistreaza
George
ACE
111111
Descriptor de securitate
Fig. 6. Descriptoare de securitate Windows.
9.3.4.2. Implementarea securitatii
Pentru a implementa descriptorul de securitate prezentat anterior, se folosesc multe din functiile pe care Windows NT le are din Win32API, legate de securitate, marea majoritate gestionand descriptorii. Iata etapele utilizate in gestionarea acestor descriptori:
-se aloca spatiul descriptorului;
-se initializeaza descriptorul cu functia Initilize Security Descrptor, functie care scrie si antetul;
-se cauta apoi proprietarul SID-ului si al grupului si daca ei nu exista se utilizeaza functia Look Account Sid ;
-se initializeaza DACL-ul sau SACL-ul descriptorului de securitate cu ajutorul functiei Add Access Denied Ace; aceste functii se executa de atatea ori cate functii trebuiesc incarcate;
-se ataseaza ACL-ul creat la descriptorul de securitate;
-dupa crearea descriptorului de securitate el poate fi pasat ca parametru pentru a fi adaugat la obiect.
9.3.5. Securitatea in Linux
3.5.1. Open source
Exista doua modalitati in ceea ce priveste optica producatorilor de produse soft:
-una, inchisa, in care codul sursa este secret si, in general, orice informatie este detinuta numai de proprietar;
-una, deschisa, in care codul sursa este disponibil pentru toti utilizatorii si in care informatia circula deschis.
Din cea de-a doua categorie face parte si comunitatea Open source. Linux este un sistem de operare free care face parte din comunitatea Open source.
Sa vedem ce avantaje, din punct de vedere al securitatii, ar oferi apartenenta la aceasta comunitate. Sa incercam sa argumentam acest lucru prin prizma bug-urilor care exista in cadrul programelor si provin din erori de programare sau proiectare, introduse intentionat sau nu. Aceste buguri pot fi:
-depasirea capacitatilor tampon, care pot duce la obtinerea de privilegii neautorizate de catre utilizator;
-gestiunea necorespunzatoare a fisierelor, care poate permite eventualelor persoane rauvoitoare sa modifice sau sa deterioreze fisiere importante;
-algoritmi de autentificare sau de criptare prost proiectati, care pot conduce la accesul neautorizat al unor persoane sau decriptarea cu usurinta a unor date confidentiale, cum ar fi parolele utilizatorilor;
-caii troieni.
Securitatea sporita a programelor open source provine chiar din disponibilitatea codului sursa. Deoarece codul sursa este la dispozitia multor utilizatori se ajunge la depistarea bug-urilor cu o probabilitate mult mai mare decat la sistemele inchise. Iata cateva din aceste avantaje:
-oricine poate corecta codul sursa, aceste corectii fiind facute publice in cel mai scurt timp si incluse in urmatoarea sesiune;
-atunci cand sunt descoperitre, bug-urile sunt reparate foarte rapid; de exemplu, cand a aparut bug-ul Ping O Death, in Unix crearea unui patch de corectie a durat doar cateva ore, in timp ce in Windows raspunsul a venit doar dupa o saptamana;
-sistemele solide de comunicatie dintre membrii comunitatii, precum listele de discutii si resursele localizate on-line, ajuta la eficientizarea procesului de dezvoltare si depanare, reducand si distribuind efortul.
3.5.2 Programe ce depisteaza si corecteaza
vulnerabilitati
Programul NESSUS. Este un program de scanare evoluat, in sensul ca, dupa scanarea propriuzisa stabileste versiunile serviciilor care ruleaza pe masina tinta, putand determina vulnerabilitatea acesteia. NESSUS consta din doua parti:
-partea de server, care efectueaza practic scanarile;
-partea de client care reprezinta o interfata grafica xwindows cu utilizatorul.
Serverul Nessus foloseste protocolul TCP pentru a astepta cererile de la clienti, clienti autentificati printr-un sistem de chei publice El Gamal. Traficul este criptat cu ajutorul unui cifru flux.
Programul Titan poate depista si corecta in mod automat vulnerabilitatile unui sistem Unix; este scris in BASH. Exista trei moduri de rulare a acestui utilitar:
-modul verificare, recomanadat a se folosi prima data, cu rol de a testa sistemul fara sa faca nici o modificare asupra sa;
-modul informal, care testeaza sistemul si afiseaza modificarile pe care le-ar efectua in mod normal;
-modul reparare , care va modifica fisierele de configurare a sistemului in vederea securizarii lui.
Titan jurnalizeaza problemele descoperite si actiunile produse intr-un director. Iata cateva vulnerabilitati pe care Titan le poate depista si corecta:
-bug-urile din protocolul TCP, avand protectie impotriva atacurilor de tip SYN flood, PING flood si NFS bind;
-serviciile considerate periculoase, de exemplu automount, sunt dezactivate;
-drepturile de acces ale fisierelor si cataloagelor:
-conturile utilizatorilor speciali care sunt sterse sau dezactivate.
3.5.3. Auditarea sistemului
Auditarea unui sistem consta in operatiunile de certificare ca acel sistem nu afost compromis si ca se afla intr-o stare sigura.
Un program destinat certificarii sistemului de fisiere este
Programul Tripwire.
Acest program este un sistem de monitorizare a fisierelor care poate fi utilizat pentru a asigura integritatea acestora. Sistemul este realizat de compania Tripwire,Inc.
Prima etapa a programului consta din analiza sistemului de fisiere si crearea unei baze de date a fisierelor importante, intr-un moment in care acestea sunt considerate sigure. Se stabilesc acum fisierele si directoarele ce vor fi monitorizate.
Odata creata baza de date, integritatea fisierelor importante poate fi oricand verificata. Se detecteaza fisierele noi, cele sterse si cele modificate. Daca aceste modificari sunt valide, baza de date va fi actualizata; in caz contrar, ele vor fi raportate administratorului sistemului.
Fisierele importante, cum ar fi baza de date si fisierele de configuratie, sunt criptate cu ajutorul algoritmului El Gamal. Se utilizeaza doua fisiere de chei care memoreaza cate o pereche de chei, una publica si una privata. Fisierul global este utilizat pentru a proteja fisierele de configurare iar fisierul local de chei este folosit pentru protectia bazelor de date si fisierelor raport.