Securitatea Sistemelor Informatice

Autor: Drd. Christiana Constantinescu
  • Numar Laboratoare (2h/lab): 14
  • Sala: 136, 220, Universitatea din Craiova
  • Metoda evaluare: Evaluare continua
  • Tip materie: Obligatoriu

Daca, din diverse motive, nu puteti participa frecvent la laborator, consultati orarul, prezentati-va cu una dintre grupele INF21(A), INF21(B), INF22(A), INF22(B), INF23(A), INF23(B) si solicitati sa fiti evaluati! Orar .
Important
Pentru studentii neevaluati, in catalog se va consemna nota 1 (unu).



Algoritmi Clasici de Criptare

Urmareste explicatiile de la laborator. Vei regasi notite in aceasta sectiune, dupa ce toate grupele vor fi trecut prin acest laborator.

Alberti's Cipher (Cifrul lui Alberti)


Caesar's Cipher (Cifrul lui Cezar)

🥱 Dupa atat de mult invatat, merge un scroll cinstit.Vezi aici ce SecTok-uri ti-am pregatit.


RSA (Rivest–Shamir–Adleman)

Reprezinta un algoritm de criptare asimetrica (foloseste o cheie pentru a cripta mesajul si una pentru a-l decripta).
Mesajul este criptat cu cheia publica si poate fi decriptat doar cu perechea ei privata.
😶‍🌫️ Intelegerea conceptului

  • Alice vrea sa ii trimita bijutierului Bob un inel pe care doreste ca Bob sa i-l graveze. 💍 Avand o piatra pretioasa si fiind o amintire de familie, Alice se teme ca cineva ar putea intercepta pachetul si inlocui bijuteria cu un fals. 🥷
  • Astfel, Bob ii trimite lui Alice un lacat special (deschis), de la care numai el detine cheia, pentru a-l adauga cutiei de bijuterii pe care Alice i-o va trimite. 🔓
  • Alice pune inelul in cutia de transport. Adauga in cutie biletelul cu textul pe care doreste ca Bob sa il graveze si un lacat special de la care doar ea detine cheia si pe care il trimite deschis, ca Bob sa il poata utiliza cand ii returneaza inelul. 🔓 (cheia publica a lui Alice)
  • Alice securizeaza cutia de transport, folosind lacatul lui Bob 🔒 (cheia publica a lui Bob) pe care il inchide si cu care incuie cutia. In acest moment, doar Bob poate deschide lacatul.
  • La destinatie, Bob va deschide lacatul cu singura cheie care se potriveste lacatului lui si pe care doar el o detine 🔑 (cheia privata a lui Bob).
  • Dupa ce va termina de gravat inelul 💍 , Bob va folosi lacatul lui Alice pe care ea i l-a trimis, pentru a inchide inelul in cutia de transport (cheia publica a lui Alice).
  • In acest moment, doar Alice va putea deschide lacatul, folosind cheia lui pereche, pe care doar ea o detine 🗝️ (cheia privata a lui Alice).

Cheia pe care doar Alice o detine (cea privata) nu poate deschide lacatul lui Bob (cheia lui publica), si nici cheia lacatului lui Bob nu poate deschide lacatul lui Alice. Cheia publica si cea privata ale fiecaruia dintre ei vin in perechi 🔐 si nu pot fi interschimbate.

RSA foloseste o cheie pentru a cripta si o alta pentru a decripta. Intre cele doua chei, exista o corelatie matematica.

Importanta
RSA este important pentru ca reprezinta una din inovatiile criptografiei, fiind unul dintre primii algoritmi asimetrici de criptare care si-a pastrat relevanta si este inca utilizat.

In anul 1977, Ron Rivest, Adi Shamir si Leonard Adleman, membri MIT (Massachusetts Institute of Technology) la acea vreme, au dezvoltat acest algoritm care a devenit ulterior cunoscut sub numele de RSA, de la initialele lor.

Utilizare

RSA are o gama larga de aplicabilitati in securitatea informatiei si criptografie, incluzand, dar fara a se limita la:

  • Securizarea comunicatiilor online: utilizat pentru securizarea comunicatiilor prin internet, inclusiv in protocolul HTTPS pentru tranzactii financiare, accesul la conturi online si comunicarea confidentiala prin e-mail.
  • Autentificare si semnaturi digitale:utilizat pentru autentificarea utilizatorilor si pentru generarea semnaturilor digitale, asigurand integritatea si autenticitatea datelor si documentelor electronice.
  • Criptare a datelor: folosit pentru criptarea datelor stocate pe dispozitive sau transmise prin retele, asigurand confidentialitatea acestora in cazul in care acestea sunt interceptate de catre terti neautorizati.
  • Securizarea accesului la retele si sisteme: folosit in sistemele de autentificare pentru securizarea accesului la retele si sisteme informatice, inclusiv in autentificarea prin intermediul cheilor SSH si in sistemele de autentificare in doua pasi.
  • Securizarea tranzactiilor financiare: folosit in sistemele de plati electronice si in securizarea tranzactiilor financiare online, asigurand confidentialitatea si autenticitatea acestora.

Mod de lucru:

RSA se bazeaza pe proprietatile numerelor prime si pe principiul ca este usor (dpdv al costurilor de timp si procesare) sa inmultesti numere mari, dar sa factorizezi numere mari este foarte costisitor si dificil. De exemplu, este usor sa calculezi produsul lui 89 si 71, care inmultite dau 6319, dar incercarea de a gasi factorii primi ai lui lui 6319 este un proces mai costisitor. (pentru RSA, 89 si 71 reprezinta numere mici, folosite pentru a exemplifica metodologia)

Generarea cheilor:

RSA foloseste aritmetica modulara, teorema lui Euler si functia lui Euler pentru totienti.Fiecare pas al algoritmului implica doar inmultire, asa ca este usor pentru un program cu resurse relativ reduse sa il execute:

  1. Bob alege doua numere prime mari p si q. Produsul lor, n=pq, va fi jumatate din cheia publica a lui Bob.
  2. Bob calculeaza functia lui Euler, ϕ(pq)=(p−1)(q−1), si alege un numar e relativ prim cu ϕ(pq). in practica, e este adesea ales sa fie 216+1=65537. e va fi cealalta jumatate a cheii publice.
  3. Bob calculeaza inversul modular d al lui e modulo ϕ(n). Cu alte cuvinte, de≣1(modϕ(n)). d este cheia privata a lui Bob.
  4. Bob distribuie ambele parti ale cheii publice: n si e. d este pastrat secret.

Avand o pereche de chei publice si private, cele doua pot fi reutilizate de cate ori este nevoie.

Transmiterea mesajului:
  1. Alice converteste mesajul sau intr-un numar, m. Pentru aceasta conversie, poate folosi, spre exemplu, o codificare universala, cum ar fi ASCII, sau o codificare proprie, care mareste securitatea criptosistemului.
  2. a b c d e f g h i j k l m n o p q r s t u v w x y z
    97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122

    Daca Alice ar vrea sa transmita, spre exemplu, mesajul "salut", acesta ar fi convertit in m=(115,97,108,117,116), pentru ca s=115,a=97,l=108,u=117,t=116.

    A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
    65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90

    Daca Alice ar vrea sa transmita, spre exemplu, mesajul "HELLO", acesta ar fi convertit in m=7269767679, pentru ca h=72, e=69, l=76, o=79.

  3. Alice calculeaza apoi c ≡ me (mod n). c este textul cifrat. e si n pe care Alice le foloseste apartin lui Bob si au fost generate conform pasilor descrisi anterior (vezi Generarea cheilor: ). in afara de cheia publica, care oricum are caracter nesecret, aceasta este singura informatie pe care un atacator o poate sustrage.

  4. Bob primeste mesajul si calculeaza cd ≡ m (mod n), recuperand astfel numarul original m.

  5. Bob decodeaza apoi m inapoi in litere, folosind aceeasi codificare pe care o foloseste si Alice. Asa, Bob recupereaza mesajul original si finalizeaza decriptarea.

Presupunem ca Bob a ales numerele prime p = 11 si q = 17, impreuna cu e = 3.

  1. Bob calculeaza n = p × q = 11 × 17 = 187, care reprezinta jumatate din cheia lui publica. Bob calculeaza, de asemenea, φ(n) = (p - 1) × (q - 1) = 10 × 16 = 160. Bob calculeaza d = 107, deoarece d × e = 321 ≡ 1 (mod φ(n)) (deoarece φ(n) = 160).
  2. Bob distribuie cheia lui publica: n = 187 si e = 3.
  3. Alice doreste sa trimita lui Bob mesajul "HELLO". Deoarece n este atat de mic, Alice va trebui sa trimita mesajul caracter cu caracter.
  4. 'H' este 72 in ASCII, astfel ca textul mesajului este m = 72. Alice calculeaza me = 723 ≡ 183 (mod 187), rezultand in textul cifrat c = 183. Aceasta este singura informatie pe care Eve o poate obtine, deoarece acesta nu are cheia privata.
  5. Bob calculeaza cd = 183107 ≡ 72 (mod 187), obtinand astfel mesajul m = 72.
  6. Bob converteste, conform ASCII, valoarea 72 in 'H'.
  7. Restul literelor sunt trimise in acelasi mod.

Functii Hash

O functie HASH este un algoritm care transforma o intrare (sau mesaj) de lungime variabila intr-o iesire de lungime fixa, numita valoare HASH, cod hash, suma hash, hash sau rezumat. Aceasta valoare este, in esenta, o amprenta digitala unica a datelor originale.

😶‍🌫️ Intelegerea conceptului

  • Alice vrea sa ii trimita un mesaj important lui Bob. Ea vrea sa se asigure ca mesajul nu va fi modificat in timpul transmiterii si ca Bob va primi mesajul original, asa cum ea l-a conceput. 📝
  • Alice scrie mesajul si apoi aplica o functie HASH pe acesta. Functia HASH genereaza o valoare HASH (o secventa de caractere care este unica si apartine doar acelui mesaj). Daca mesajul ar fi modificat, chiar si cu un singur caracter, functia HASH nu va mai genera aceeasi valoare.
  • Ganditi-va la aceasta valoare HASH ca la o amprenta digitala a mesajului. ☝️ Nu exista doua degete care sa lase aceeasi amprenta. La fel, o functie hash trebuie sa genereze valori unice pentru fiecare input.
  • Desi genereaza valori unice pentru fiecare entitate asupra carora sunt aplicate, functiile HASH genereaza output de lungime fixa, indiferent de lungimea mesajului carora sunt aplicate
  • Alice trimite mesajul original lui Bob. Valoarea obtinuta cu functia HASH pentru mesajul original, i-o transmite printr-un alt transport. 📦
  • Cand Bob primeste mesajul, el aplica aceeasi functie HASH pe mesajul primit si compara valoarea HASH calculata de el cu valoarea HASH trimisa de Alice. 📨
    • Daca valorile HASH sunt identice, Bob poate fi sigur ca mesajul nu a fost modificat in timpul transmiterii. ✅
    • Daca valorile HASH difera, Bob stie ca mesajul a fost alterat. ❌

Proprietati
  • Determinismul: Aceeasi intrare va produce intotdeauna aceeasi iesire.
  • Viteza de calcul: Functia HASH trebuie sa fie eficienta si rapida in calculul valorii HASH.
  • Ireversibilitate si rezistenta la preimagine: Plecand de la outputul unei functii hash, nu se poate obtine mesajul original; dificultatea de a gasi o intrare originala corespunzatoare unei valori HASH date.
  • Rezistenta la coliziuni: Dificultatea de a gasi doua intrari distincte care produc aceeasi valoare HASH.
  • Difuzie (Avalanche Effect): O mica modificare in intrare trebuie sa produca o schimbare semnificativa in iesirea HASH.
Utilziare
  • Verificarea integritatii datelor: Compararea valorilor HASH pentru a asigura ca datele nu au fost modificate, asigurarea autenticitatii si integritatii unui mesaj sau document digital.
  • Semnaturi digitale: Functiile HASH sunt utilizate pentru a crea semnaturi digitale in care integritatea mesajului este cruciala.
  • Stocarea parolelor: in loc sa se stocheze parolele in clar, se stocheaza valoarea HASH a parolei.

MD5 (Message Digest Algorithm 5)

MD5este o functie HASH dezvoltata de Ronald Rivest in 1991.
Produce o iesire de 128 de biti (16 bytes) si este foarte rapida.
⚠️ Nu mai este considerata sigura din cauza vulnerabilitatilor la coliziuni.

Mod de functionare
  • Pasul 1: Padding - Mesajul original este extins pentru a avea o lungime ce este multipla de 512 biti. Padding-ul include un bit '1' urmat de suficiente zerouri si lungimea mesajului initial.
  • Pasul 2: Initializare - Se initializeaza patru variabile de 32 de biti (A, B, C, D) cu valori specificate.
  • Pasul 3: Procesarea Blocurilor - Mesajul este impartit in blocuri de 512 biti, iar fiecare bloc este procesat printr-o serie de transformari folosind functii non-liniare si adunari modulo 232.
  • Pasul 4: Output - Rezultatele sunt combinate pentru a produce rezumatul final de 128 de biti.

SHA-1 (Secure Hash Algorithm 1)

SHA-1 este o functie HASH dezvoltata de NSA in 1993.
Produce o iesire de 160 de biti (20 bytes).
⚠️ Desi este mai sigura decat MD5, a fost compromisa si nu mai este recomandata pentru utilizare.

Mod de functionare
  • Pasul 1: Padding - Similar cu MD5, mesajul este extins pentru a avea o lungime ce este multipla de 512 biti.
  • Pasul 2: Initializare - Se initializeaza cinci variabile de 32 de biti (H0, H1, H2, H3, H4) cu valori specificate.
  • Pasul 3: Procesarea Blocurilor - Mesajul este impartit in blocuri de 512 biti, iar fiecare bloc este procesat printr-o serie de rotatii, adunari si functii non-liniare.
  • Pasul 4: Output - Rezultatele sunt combinate pentru a produce rezumatul final de 160 de biti.

SHA-256 (Secure Hash Algorithm 256)

SHA-256 este parte a familiei SHA-2 si a fost dezvoltata de NSA.
Produce o iesire de 256 de biti (32 bytes).
⚠️ Este considerata sigura pentru majoritatea aplicatiilor curente.

Mod de functionare
  • Pasul 1: Padding - Mesajul este extins pentru a avea o lungime ce este multipla de 512 biti. Padding-ul include un bit '1' urmat de suficiente zerouri si lungimea mesajului initial codificata pe 64 de biti.
  • Pasul 2: Initializare - Se initializeaza opt variabile de 32 de biti (H0, H1, H2, H3, H4, H5, H6, H7) cu valori specifice.
  • Pasul 3: Procesarea Blocurilor - Mesajul este impartit in blocuri de 512 biti, iar fiecare bloc este procesat printr-o serie de operatii logice si aritmetice complexe, incluzand rotatii si schimburi de biti.
  • Pasul 4: Output - Rezultatele sunt combinate pentru a produce rezumatul final de 256 de biti.


Descarca CH7 de aici.


🧠AI-ul. Prieten sau dușman? 🤔 Ești Lead Security Engineer. Un AI malițios de tip APT se extinde în rețea. Gândește logic, aplică criptografia corectă și salvează infrastructura aici.

Malware

Malware (malitious software) este un termen general folosit pentru a descrie orice tip de software rău intenționat. Relele intentii ale unui software presupun deteriorarea, perturbarea, monitorizarea neautorizata, furtul sau, în general, provocarea de acțiuni negative asupra datelor, dispozitivelor sau rețelelor.

Viruşii sunt un tip specific de malware care se poate reproduce și răspândi de la un sistem la altul, infectând fișierele și programele legitime.

😶‍🌫️ Intelegerea conceptului

  • Alice vrea sa ii afle parola lui Bob de la contul de Instagram. ❤️‍🔥
  • Pentru ca, din cand in cand, are acces fizic la calculatorul lui Bob, ea incearca sa vada parola din browser, insa Bob a exclus de la salvare parolele retelelor de socializare.
  • Profitand de faptul ca are acces fizic, Alice foloseste, cand Bob nu este in preajma, un stick de pe care copiaza un keylogger pe calculatorul lui Bob.
  • Keylogger-ul monitorizeaza tastatura lui Bob si retine intr-un fisier fiecare tasta care a fost apasata. Periodic, keylogger-ul transfera datele pe care le-a retinut catre o adresa de e-mail de-ale lui Alice, fara ca Bob sa fie anuntat sau sa observe ceva.
  • De fiecare data cand primeste un mail, Alice verifica ce a salvat keylogger-ul si cauta sa vada cand Bob a tastat cuvinte legate de instagram (ex: www.insta..., insta, instagram), pentru a putea intelege care e parola lui.
  • Keylogger-ul reprezinta un malware.
  • Desi nu deterioreaza si nu perturba in niciun fel activitatea lui Bob, software-ul instalat de Alice are intentii malitioase si spioneaza tot ceea ce Bob introduce de la tastatura.
  • In acest scenariu, Alice nu are cunostinte temeinice in Securitatea Sistemelor Informatice, iar malware-ul pe care i l-a instalat lui Bob este descarcat de pe internet nu este facut de ea.
  • Astfel, Alice nu are nicio garantie ca ea este singura care acum spioneaza calculatorul infectat al lui Bob. De asemenea, nici nu poate fi sigura ca malware-ul pe care ea l-a instalat cu un scop nu indeplineste, de fapt, si alte activitati ilicite asupra calculatorului lui Bob.

Tipuri
  • Viruşi
  • Worms (viermi)
  • Troieni
  • Ransomware
  • Spyware
  • Adware
  • Rootkits
  • Keyloggers
  • Botnets

Viruşi

Mod de lucru Viruşii se atașează la fișiere legitime și se răspândesc atunci când aceste fișiere sunt transferate între computere. Aceștia pot deteriora sau șterge date, corupe fișiere și perturba funcționarea sistemului.

Caracteristici Necesită intervenția utilizatorului pentru a se răspândi (de exemplu, deschiderea unui fișier infectat), pot fi vizibili prin simptome precum încetinirea sistemului, mesaje de eroare frecvente sau comportament neobișnuit al programelor.

Metode de protectie
  • Utilizați un software antivirus actualizat.
  • Evitați deschiderea fișierelor atașate email-urilor de la expeditori necunoscuți.
  • Faceți copii de rezervă regulat ale datelor importante.

Worms (viermi)

Mod de lucru Viermii se pot răspândi automat de la un computer la altul fără a necesita intervenția utilizatorului. Aceștia utilizează rețelele pentru a se propaga și pot crea copii ale lor pentru a infesta alte dispozitive.

Caracteristici Se propagă rapid, pot încetini sau bloca rețele întregi, nu necesită atașarea la fișiere pentru a se răspândi.

Metode de protectie
  • Mențineți toate software-urile și sistemele de operare actualizate.
  • Utilizați firewall-uri pentru a bloca accesul neautorizat la rețea.
  • Monitorizați activitatea rețelei pentru a detecta comportamente neobișnuite.

Troieni

Mod de lucru Troienii se prezintă ca programe legitime pentru a înșela utilizatorii să le instaleze. Odată instalat, troianul poate oferi atacatorilor acces la sistemul infectat.

Caracteristici Se deghizează în software legitim, poate deschide backdoor-uri, permițând accesul neautorizat la date și sisteme.

Metode de protectie
  • Descărcați software doar din surse de încredere.
  • Verificați semnăturile digitale ale aplicațiilor.
  • Utilizați soluții de securitate care includ protecție împotriva troienilor.

Ransomware

Mod de lucru Ransomware-ul criptează fișierele utilizatorului și cere o răscumpărare pentru a reda accesul la acestea. De obicei, atacurile ransomware sunt livrate prin email-uri phishing sau descărcări malițioase.

Caracteristici Blochează accesul la datele victimei, cere plata unei răscumpărări, poate avea un cronometru pentru a presa victima să plătească rapid.

Metode de protectie
  • Faceți copii de rezervă frecvente ale datelor.
  • Evitați deschiderea atașamentelor email-urilor de la expeditori necunoscuți.
  • Mențineți software-ul de securitate actualizat.

Spyware

Mod de lucru Spyware-ul monitorizează și colectează date despre activitatea utilizatorului fără știrea sau consimțământul acestuia. Acesta poate urmări tastările, istoricul de navigare și alte informații personale.

Caracteristici Se instalează fără cunoștința utilizatorului, colectează date personale și comportamentale, poate cauza încetinirea sistemului.

Metode de protectie
  • Utilizați software anti-spyware și antivirus actualizat.
  • Fiți atenți la permisiunile solicitate de aplicații.
  • Evitați descărcarea de software din surse nesigure.

Adware

Mod de lucru Adware-ul afișează reclame nedorite pe dispozitivul utilizatorului. De obicei, este instalat împreună cu alte aplicații gratuite.

Caracteristici Afișează reclame intruzive, poate redirecționa browser-ul către pagini web malițioase, uneori colectează date despre utilizator pentru a afișa reclame personalizate.

Metode de protectie
  • Fiți atenți la opțiunile de instalare a software-ului gratuit.
  • Utilizați un ad-blocker în browser.
  • Scanați regulat sistemul cu un software anti-adware.

Rootkits

Mod de lucru Rootkits-urile se ascund adânc în sistemul de operare pentru a evita detectarea și permit atacatorilor să aibă acces complet și neobservat la sistem.

Caracteristici Sunt dificil de detectat, oferă acces la nivel de sistem atacatorilor, pot ascunde alte tipuri de malware.

Metode de protectie
  • Mențineți software-ul de securitate actualizat.
  • Utilizați instrumente specializate pentru detectarea rootkits-urilor.
  • Evitați descărcarea și instalarea de software din surse nesigure.

Keyloggers

Mod de lucru Keylogger-ele înregistrează toate tastările efectuate pe tastatura utilizatorului, capturând informații sensibile precum parole și date financiare.

Caracteristici Monitorizează și înregistrează tastările, poate trimite datele capturate către atacatori, de obicei funcționează fără știrea utilizatorului.

Metode de protectie
  • Utilizați un software anti-keylogger.
  • Fiți atenți la comportamentul neobișnuit al sistemului.
  • Utilizați autentificarea cu doi factori (2FA) pentru conturile importante.

Botnets

Mod de lucru Botnet-urile sunt rețele de computere infectate, controlate de la distanță de atacatori pentru a efectua atacuri cibernetice, spam, sau alte activități rău intenționate.

Caracteristici Formează rețele mari de dispozitive compromise, sunt controlate de la distanță, pot fi utilizate pentru a lansa atacuri DDoS sau pentru a distribui malware.

Metode de protectie
  • Mențineți software-ul de securitate actualizat.
  • Utilizați firewall-uri pentru a bloca accesul neautorizat.
  • Monitorizați activitatea rețelei pentru a detecta dispozitivele compromise.