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).
Reglementari Legale: Legile privind infractiunile informatice
Legile care reglementeaza infractiunile informatice variaza in functie de tara si de normele si jurisdictia fiecarui stat.
In 🇷🇴 Romania, Codul Penal enunta si reglementeaza anumite infractiuni contra Sigurantei si Integritatii Sistemelor si Datelor Informatice, astfel:
🌍 In alte tari, incadrarile si pedepsele fiecariei infractiuni pot varia, in functie de legile fiecarui stat. Exista unele aspecte generale care sunt adesea incluse in legile care protejeaza securitatea si integritatea datelor si a infrastructurilor informatice.
Mai jos, regasesti cateva dintre aceste aspecte:
- Accesul neautorizat la sisteme informatice: Este ilegal sa accesezi (fara autorizatie) sisteme informatice, retele de calculatoare, medii de stocare.
- Interceptarea comunicatiilor: Este interzis sa interceptezi sau sa monitorizezi comunicatiile electronice fara consimtamantul explicit al partilor implicate.
- Frauda informatica: Utilizarea informatiilor electronice in scopuri frauduloase sau pentru a obtine beneficii necuvenite este, de asemenea, ilegala.
- Distrugerea sau alterarea datelor: Este ilegal sa distrugi sau sa alterezi (sa modifici, sa stergi, sa impiedici accesul la) datele electronice, fara autorizare.
- Distribuirea de software malitios (rau intentionat): Crearea, distribuirea sau utilizarea de programe malware sau alte instrumente pentru a compromite sistemele informatice ale altora (sau accesul catre ele) este considerata, de asemenea, infractiune.
- Infractiuni impotriva drepturilor de autor: Utilizarea neautorizata a continutului protejat de drepturi de autor, precum si pirateria software-ului, sunt adesea incluse in legile privind infractiunile informatice.
- Cyberterorismul: Atacurile cibernetice care vizeaza sa provoace panica sau sa perturbe activitatile critice (cum ar fi serviciile guvernamentale, militare, de sanatate sau alte infrastructuri critice), sunt adesea reglementate prin legi speciale.
- Spalarea banilor si infractiunile financiare: Utilizarea tehnologiei informatice pentru spalarea banilor sau alte infractiuni financiare, este, de asemenea, deja reglementata sau in curs de reglementare de legile privind infractiunile informatice.
Exemplu
Cetatean roman ataca o infrastructura din US. Infractiunea este savarsita din Romania, avand victima si efectele produse in US. Cetateanul roman se supune, de asemenea, efectelor legilor din US, raspunzand penal si civilmente cf. acestor legi, desi nu este cetatean american si infractiunea a fost savarsita de pe teritoriul Romaniei.
Tentativa se pedepseste
👩💻👨💻 Invata gamificat! Ti-am creat un joc care sa te ajute sa-ti dezvolti si testezi cunostintele despre legi in IT Sec! Joaca aici.
📔 Vocabular
Cybersecurity
= ramura a Securitatii Informatiei, care se ocupa cu protejarea sistemelor informatice, retelelor, dispozitivelor si datelor impotriva accesului neautorizat, utilizarii frauduloase, modificarilor neautorizate, distrugerii sau furtului de informatii si servicii ale sistemelor de calcul si echipamentelor de retea conectate la internet.
IT Security
= ramura a Securitatii Informatiei, care se ocupa cu protejarea sistemelor informatice, retelelor, dispozitivelor si datelor impotriva accesului neautorizat, utilizarii frauduloase, modificarilor neautorizate, distrugerii sau furtului de informatii si servicii ale sistemelor de calcul si echipamentelor de retea neexpuse in internet.
Information Security
= domeniu care se ocupa cu protejarea informatiei si datelor impotriva accesului neautorizat, utilizarii frauduloase, modificarilor neautorizate, distrugerii sau furtului, indiferent de mediul de stocare, expuse sau nu in internet. Astfel, informatia poate sa fie stocata pe suport material (scrisori, documente, HDD-uri etc.) sau nu (ideile unui om, cunostintele sale dintr-un anumit domeniu, informatiile pe care le detine despre o persoana sau eveniment etc.).
Alice
= nume generic, fictiv, folosit in Securitatea Informatiei, pentru a desemna unul din personajele implicate in cadrul unui scenariu de comunicarea securizata. Alice este entitate autorizata in aceast scenariu, si este, de obicei, cea care initiaza comunciarea, fiind primul expeditor al mesajului catre entitatea autorizata Bob.
Bob
= nume generic, fictiv, folosit in Securitatea Informatiei, pentru a desemna unul din personajele implicate in cadrul unui scenariu de comunicarea securizata. Bob este entitate autorizata in aceast scenariu, si este, de obicei, cel care primeste primul mesaj, fiind primul in rolul de destinatar al mesajului din partea entitatii autorizate Alice.
Eve
= nume generic, fictiv, folosit in Securitatea Informatiei, pentru a desemna unul din personajele implicate in cadrul unui scenariu de comunicarea securizata. Eve (eng. eavesdropper) este entitate neautorizata in aceast scenariu, atacatorul si este cel care vrea sa sparga securitatea conversatiei dintre Alice si Bob.
Criptografie
= stiinta care se ocupa cu studiul securizarii comunicatiilor si a datelor prin transformarea acestora intr-o forma ilegibila (care nu se poate citi) sau dificil de inteles pentru oricine nu este autorizat.
Criptanaliza
= ramura a Criptografiei care se ocupa cu analiza si studiul sistemelor criptografice in scopul de a gasi vulnerabilitati si de a dezvolta metode pentru a le sparge sau a le slabi securitatea.
Algoritm
= succesiune de pasi, executati intr-o anumita ordine, care produc un rezultat, pornind de la un input
Criptare
= procedeul reversibil de transformare a datelor intr-o forma cifrata, pe baza unei chei de criptare cu scopul de a deveni ilegibila pentru entitati neautorizate.
Decriptare
= inversul criptarii, adica procedeul de transformare a datelor cifrate, pe baza unei chei de decriptare, in date inteligibile, aceleasi date care au servit anterior ca input pentru procesul de criptare.
Cheie
= valoare secreta (propozitie, numar, set de date etc.) care controleaza procesul de criptare (cheie de criptare) sau decriptare (cheie de decriptare).
Parola
= sir de caractere, utilizat pentru a autentifica si a autoriza accesul catre un cont, un sistem sau un dispozitiv.
Dubla Autentificare (Double Auth)
= masura suplimentara de securitate care implica folosirea a doua metode de autentificare diferite pentru a accesa un cont, un sistem sau un dispozitiv. (ex: parola + cod SMS, amprenta digitala + amprenta irisului etc.)
Hacker
= persoana care foloseste diferite cunostinte si practici de a compromite securitatea unui sistem, pentru a explora, a analiza si a interactiona cu sistemele informatice si retelele de calculatoare, in scopul obtinerii accesului neautorizat la date.
CIA
= triada (alaturare de 3 notiuni) care defineste cele 3 principii fundamentale ale securitatii informatiei: Confidentialitate, Integritate, Disponibilitate (Availability).
Confidentialitate
= primul principiu CIA; concept de masuri utilizate pentru a asigura protectia secretului informatiei sau a resurselor.
Integritate
= al doilea principiu CIA; concept de masuri utilizate pentru a asigura corectitudinea si acuratetea informatiei, protejand impotriva alterarilor neautorizate sau accidentale.
Disponibilitate
= al treilea principiu CIA; concept de masuri utilizate pentru a asigura accesul prompt si neintrerupt catre informatie sau resurse. Poate presupune acces simultan al mai multor entitati autorizate.
PKI (Public Key Infrastructure)
= infrastructura (set de reguli, hardware, software, proceduri, roluri) pentru a crea, gestiona, folosi, distribui, stoca si revoca certificate digitale si chei publice
Public
= caracterul (proprietatea) anumitor informatii de a fi disponibile in mod deschis si de a putea fi accesate de oricine, intr-un sistem criptografic.
Privat
= caracterul (proprietatea) anumitor informatii de a nu fi disponibile in mod deschis si de a nu putea fi accesate de oricine, fiind, astfel, secrete intr-un sistem criptografic.
Atac
= actiune sau set de actiuni efectuate de catre un atacator pentru a compromite securitatea unor informatii sau unor sisteme informatice, cu scopul de a le accesa, a le modifica, a le sterge, sau a le exploata in mod neautorizat.
Eveniment
= orice intamplare ce tine de domeniul securitatii informatiei, fara a avea conotatii strict negative sau strict pozitive (ex: un nou dispozitiv s-a conectat in retea, un a program a generat loguri etc.)
Incident
= orice eveniment negativ, de natura sa pericliteze datele sau sistemele informatice (ex: o parola a fost facuta publica, data leaks, un server a devenit inaccesibil etc.)
Monthly Patching
= procesul de implementare "in productie" si aplicare a actualizarilor de securitate pe sistemele hardware si software utilizate intr-o organizatie, proces ce se realizeaza regulat, de obicei lunar.
👩💻👨💻 Invata gamificat! Ti-am creat un joc care sa te ajute sa-ti dezvolti si testezi vocabularul de baza in IT Sec! Joaca aici.
👩💻👨💻Exerseaza si aprofundeaza! Ti-am creat un quiz cu explicatii usor de inteles si evaluare in timp real, despre triada CIA. Acceseaza-l aici pentru easy si aici pentru advanced.
😩Notiunile sunt greu de inteles? Acceseaza aici investigatorul CIA Triad. O experienta de learning interactiv pe care am pregatit-o pentru tine, ca sa te ajute atunci cand eu nu sunt online. Contine un ghid interactiv, reguli de departajare usor de inteles si aplicat si un mini checklist care sa te ajute sa discerni intre Confidentialitate, Integritate si Disponibilitate.
👩💻👨💻Exerseaza si aprofundeaza! Ti-am creat un quiz cu explicatii usor de inteles si evaluare in timp real, despre ce am discutat la Cursul #2. Acceseaza-l aici.
😩Notiunile sunt greu de inteles? Acceseaza aici investigatorul De Access. O experienta de learning interactiv pe care am pregatit-o pentru tine, ca sa te ajute atunci cand eu nu sunt online. Contine un ghid interactiv, reguli de departajare usor de inteles si aplicat si un mini checklist care sa te ajute sa discerni intre MAC, DAC, RBAC, ABAC.
Hackeri
Algoritmi Clasici de Criptare
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:
- Bob alege doua numere prime mari p si q. Produsul lor, n=pq, va fi jumatate din cheia publica a lui Bob.
- 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.
- Bob calculeaza inversul modular d al lui e modulo ϕ(n). Cu alte cuvinte, de≣1(modϕ(n)). d este cheia privata a lui Bob.
- 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:
- 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.
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.
-
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.
-
Bob primeste mesajul si calculeaza cd ≡ m (mod n), recuperand astfel numarul original m.
-
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.
- 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).
- Bob distribuie cheia lui publica: n = 187 si e = 3.
- Alice doreste sa trimita lui Bob mesajul "HELLO". Deoarece n este atat de mic, Alice va trebui sa trimita mesajul caracter cu caracter.
- '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.
- Bob calculeaza cd = 183107 ≡ 72 (mod 187), obtinand astfel mesajul m = 72.
- Bob converteste, conform ASCII, valoarea 72 in 'H'.
- 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.
- 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.
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:
- Bob alege doua numere prime mari p si q. Produsul lor, n=pq, va fi jumatate din cheia publica a lui Bob.
- 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.
- Bob calculeaza inversul modular d al lui e modulo ϕ(n). Cu alte cuvinte, de≣1(modϕ(n)). d este cheia privata a lui Bob.
- 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:- 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.
-
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.
-
Bob primeste mesajul si calculeaza cd ≡ m (mod n), recuperand astfel numarul original m.
-
Bob decodeaza apoi m inapoi in litere, folosind aceeasi codificare pe care o foloseste si Alice. Asa, Bob recupereaza mesajul original si finalizeaza decriptarea.
| 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.
Presupunem ca Bob a ales numerele prime p = 11 si q = 17, impreuna cu e = 3.
- 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).
- Bob distribuie cheia lui publica: n = 187 si e = 3.
- Alice doreste sa trimita lui Bob mesajul "HELLO". Deoarece n este atat de mic, Alice va trebui sa trimita mesajul caracter cu caracter.
- '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.
- Bob calculeaza cd = 183107 ≡ 72 (mod 187), obtinand astfel mesajul m = 72.
- Bob converteste, conform ASCII, valoarea 72 in 'H'.
- 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.
- 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. ❌
- 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.
- 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.
- 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.
- 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.
- 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.


