Managementul Retelelor Wireless
Cuprins:
pag.
Tema lucrarii…………………………………………………………………….5
Capitolul 1
Introducere.Teoria transmisiei datelor în rețelele de date
Modelul de referinta OSI……………………………………………………6
Generalitati………………………………………………………6
Avantajele OSI………………………………………………….7
Functiile nivelelor………………………………………………7
Modelul TCP/IP…………………………………………………………….9
Dezvoltarea TCP (scurt istoric)…………………………………9
Introducere in TCP/IP si stiva de protocoale TCP/IP…………..9
Structura unui segment TCP……………………………………11
Internet Protocol (IP)…………………………………………..13
Functionare…………………………………………….13
Header-ul IP……………………………………………14
Comparatie intre OSI si TCP/IP……………………………………………15
Tipuri de retele……………………………………………………………..16
Conceptia de retea………………………………………………16
Retele client/server……………………………………………..16
Retele de tip Peer-to-Peer………………………………………16
Reteaua INTERNET……………………………………………17
Topologii LAN…………………………………………………17
Protocolul UDP (User Datagram Protocol)…………………………………18
Capitolul 2
Securitatea transmisiei de date
Tehnici de codare a informatiei……………………………………………20
Algoritmul de criptare RSA……………………………………20
Scurt istoric…………………………………………….20
Descrierea algoritmului………………………………..21
Criptografia cu cheie private………………21
Criptografia cu cheie publica……………….21
Dezavantajele algoritmului RSA…………..22
Algoritmul de autentificare MD5………………………………22
Scurt istoric……………………………………………..22
Descrierea algoritmului MD5…………………………..22
Algoritmul de autentificare SHA-1 (Secure Hash Standard)…..24
Scurt istoric……………………………………………..24
Aplicabilitatea algoritmului SHA-1…………………….25
Algoritmul de criptare DES (Data Encryption Standard)……….25
Scurt istoric……………………………………………..25
Algoritmul de criptare Triple DES……………………..27
Moduri de aplicare ale algoritmului DES…..27
Triple-DES………………………………….27
Motivatia unui nou standard……………………………28
Algoritmul AES, cerinte initiale………………………..28
Amenintarile si nevoile securitatii………………………………………….29
Categorii de atacuri asupra retelelor……………………………29
Modelul de securitate in retele………………………………….31
Masuri pentru atenuarea riscului atacurilor asupra retelelor………………..31
Capitolul 3
Prezentarea aplicatiei
Tehnici de programare. Platforma .NET Microsoft………………………….33
Prezentare generala……………………………………………….33
Arhitectura platformei Microsoft.NET…………………………..34
Trasaturi ale platformei .NET……………………………………35
Prezentarea generala a aplicatiei……………………………………………..36
Forma principala…………………………………………………37
Forma User………………………………………………………37
Clase componente……………………………………………………………38
Form1.cs…………………………………………………………38
Start/Stop…………………………………………………38
Functia de dimensiuni initiale…………………………….40
Save File………………………………………………….41
Functia de populare a listei………………………………42
Functia timer pentru refresh-ul conditiilor butonului “Filter List”………………………………………………………43
User.cs……………………………………………………………44
Functia WhoIs……………………………………………44
Functia timer……………………………………………..44
Functia de dimensionare si pozitionare initiala a formei…45
Fnctia de scriere………………………………………….45
DataChart.cs……………………………………………………..46
About.cs………………………………………………………….48
IPHeader.cs……………………………………………………….48
TCPHeader………………………………………………………49
UDPHeader………………………………………………………50
Capitolul 4
Directii posibile de dezvoltare a aplicatiei.
Concluzii ……………………………………………………….51
Bibliografie………………………………………………………………………52
+ aplicatie
+ prezentare powerpoint
=== l ===
Cuprins:
pag.
Tema lucrarii…………………………………………………………………….5
Capitolul 1
Introducere.Teoria transmisiei datelor în rețelele de date
Modelul de referinta OSI……………………………………………………6
Generalitati………………………………………………………6
Avantajele OSI………………………………………………….7
Functiile nivelelor………………………………………………7
Modelul TCP/IP…………………………………………………………….9
Dezvoltarea TCP (scurt istoric)…………………………………9
Introducere in TCP/IP si stiva de protocoale TCP/IP…………..9
Structura unui segment TCP……………………………………11
Internet Protocol (IP)…………………………………………..13
Functionare…………………………………………….13
Header-ul IP……………………………………………14
Comparatie intre OSI si TCP/IP……………………………………………15
Tipuri de retele……………………………………………………………..16
Conceptia de retea………………………………………………16
Retele client/server……………………………………………..16
Retele de tip Peer-to-Peer………………………………………16
Reteaua INTERNET……………………………………………17
Topologii LAN…………………………………………………17
Protocolul UDP (User Datagram Protocol)…………………………………18
Capitolul 2
Securitatea transmisiei de date
Tehnici de codare a informatiei……………………………………………20
Algoritmul de criptare RSA……………………………………20
Scurt istoric…………………………………………….20
Descrierea algoritmului………………………………..21
Criptografia cu cheie private………………21
Criptografia cu cheie publica……………….21
Dezavantajele algoritmului RSA…………..22
Algoritmul de autentificare MD5………………………………22
Scurt istoric……………………………………………..22
Descrierea algoritmului MD5…………………………..22
Algoritmul de autentificare SHA-1 (Secure Hash Standard)…..24
Scurt istoric……………………………………………..24
Aplicabilitatea algoritmului SHA-1…………………….25
Algoritmul de criptare DES (Data Encryption Standard)……….25
Scurt istoric……………………………………………..25
Algoritmul de criptare Triple DES……………………..27
Moduri de aplicare ale algoritmului DES…..27
Triple-DES………………………………….27
Motivatia unui nou standard……………………………28
Algoritmul AES, cerinte initiale………………………..28
Amenintarile si nevoile securitatii………………………………………….29
Categorii de atacuri asupra retelelor……………………………29
Modelul de securitate in retele………………………………….31
Masuri pentru atenuarea riscului atacurilor asupra retelelor………………..31
Capitolul 3
Prezentarea aplicatiei
Tehnici de programare. Platforma .NET Microsoft………………………….33
Prezentare generala……………………………………………….33
Arhitectura platformei Microsoft.NET…………………………..34
Trasaturi ale platformei .NET……………………………………35
Prezentarea generala a aplicatiei……………………………………………..36
Forma principala…………………………………………………37
Forma User………………………………………………………37
Clase componente……………………………………………………………38
Form1.cs…………………………………………………………38
Start/Stop…………………………………………………38
Functia de dimensiuni initiale…………………………….40
Save File………………………………………………….41
Functia de populare a listei………………………………42
Functia timer pentru refresh-ul conditiilor butonului “Filter List”………………………………………………………43
User.cs……………………………………………………………44
Functia WhoIs……………………………………………44
Functia timer……………………………………………..44
Functia de dimensionare si pozitionare initiala a formei…45
Fnctia de scriere………………………………………….45
DataChart.cs……………………………………………………..46
About.cs………………………………………………………….48
IPHeader.cs……………………………………………………….48
TCPHeader………………………………………………………49
UDPHeader………………………………………………………50
Capitolul 4
Directii posibile de dezvoltare a aplicatiei.
Concluzii ……………………………………………………….51
Bibliografie………………………………………………………………………52
Tema lucrarii
Lucrarea de fata isi propune realizarea unui management personalizat si eficace a unei retele.
Scopuri:
1. Folosirea unei politici de supraveghere a retelei vizibile.
2. Monitorizarea traficului la nivel de pachete si a tipului lor.
3. Informatii privind traficul retelei vizibile.
Beneficii:
1. Obtinerea de informatii asupra IP-urilor ce apar in trafic
Informatii la nivelul de trafic de pachete/IP cu vizualizare grafica a evolutiei
traficului in timp (upload si download).
Posibilitatea de supraveghere a traficului.
Capitolul 1
Introducere.Teoria transmisiei datelor în rețelele de date
1.1 Modelul de referință OSI
1.1.1 Generalitati
Modelul de referință OSI propune niște criterii generale pentru realizarea comunicației sistemelor de calcul pentru ca acestea să poată schimba informații, indiferent de particularitățile constructive ale sistemelor (fabricant, sistem de operare, țară, etc). Modelul de referință OSI are aplicații în toate domeniile comunicațiilor de date, nu doar în cazul rețelelor de calculatoare. Modelul OSI divizează problema complexă a comunicării între două sau mai multe sisteme în 7 nivele (layers) distincte, într-o arhitectură ierarhică. Fiecare nivel are funcții bine determinate și comunică doar cu nivele adiacente.
În literatură este adesea întîlnită denumirea de "OSI Reference Model" (modelul de referință OSI). OSI a fost emis în 1984, este un model în șapte nivele dezvoltat de ISO pentru descrierea modului în care se pot combina diverse dispozitive pentru a comunica între ele.
1.1.2 Avantajele OSI
Se pot enunța schematic cîteva din avantajele folosirii OSI:
1. Descompune fenomenul de comunicare în rețea în părți mai mici și implicit mai simple.
2. Standardizează componentele unei rețele permițînd dezvoltarea independentă de un anumit producător.
3. Permite comunicarea între diferite tipuri de hardware și software.
4. Permite o înțelegere mai ușoară a fenomenelor de comunicație.
1.1.3 Funcțiile nivelelor
1. Nivelul Fizic
Rol: transmiterea unui șir de biți pe un canal de comunicație. Se precizează modulații, codări, sincronizări la nivel de bit. Un standard de nivel fizic definește 4 tipuri de caracteristici:
• Mecanice (forma și dimensiunile conectorilor, numărul de pini)
• Electrice (modulația, debite binare, codări, lungimi maxime ale canalelor de comunicație)
• Funcționale (funcția fiecărui pin)
• Procedurale (succesiunea procedurilor pentru activarea unui serviciu)
Unitatea de măsură: bitul
Exemple:
• ITU-T V.24 (interfața calculator-modem)
• ANSI RS-232 (interfața serial)
2. Nivelul Legături de Date
Rol: furnizează un transport sigur, fiabil, al datelor de-a lungul unei legături fizice, realizând:
• Controlul erorilor de comunicație
• Controlul fluxului de date
• Controlul legăturii
• Sincronizarea la nivel de cadru
Unitatea de măsură: cadrul
Exemple:
• IEEE 802.3 (Ethernet)
• IEEE 8.2.5 (Token Ring)
• PPP (Point-to-Point Protocol)
3. Nivelul Rețea
Rol: determinarea căii optime pentru realizarea transferului de informație într-o rețea constituită din mai multe segmente, prin fragmentarea și reasamblarea informației
Unitatea de măsură: datagrama
Exemple:
• IPv4, IPv6 (Internet Protocol)
• IPX (Internetwork Packet Exchange)
4. Nivelul Transport
Rol: transferul fiabil al informației între două sisteme terminale (end points) ale unei comunicații. Furnizează controlul erorilor și controlul fluxului de date între două puncte terminale, asigurând succesiunea corectă a datelor.
Unitatea de măsură: segmentul
Exemple:
• TCP (Transmission Control Protocol)
• UDP (User Datagram Protocol)
• SPX (Sequenced Packet Exchange)
5. Nivelul Sesiune
Rol: furnizează controlul comunicației între aplicații. Stabilește, menține, gestionează și închide conexiuni (sesiuni) între aplicații.
Exemple:
• RPC (Remote Procedure Call)
• NFS (Network File System)
• NCP (Network Core Protocol)
6. Nivelul Prezentare
Rol: transformă datele în formate înțelese de fiecare aplicație și de calculatoarele respective, asigură compresia datelor și criptarea lor.
Exemple:
• ASCII
7. Nivelul Aplicație
Rol: realizează interfața cu utilizatorul și interfața cu aplicațiile, specifică interfața de lucru cu utilizatorul și gestionează comunicația între aplicații. Acest nivel nu reprezintă o aplicație de sine stătătoare, ci doar interfața între aplicații și componentele sistemelui de calcul.
Unitatea de măsură: mesajul
Exemple:
• FTP (File Transfer Protocol)
• SMTP (Simple Mail Transfer Protocol)
1.2 Modelul TCP/IP
1.2.1 Dezvoltarea TCP (scurt istoric)
Protocolul TCP/IP (Transmission Control Protocol/Internet Protocol) a aparut in anii 70. A fost initial dezvoltat de Departamentul pentru Aparare din Statele Unite ( DOD – Department of Defence ), intr-o incercare de a conecta diferite retele. In prezent este folosit ca un protocol standard de comunicatie folosit in numeroase retele , cea mai cunoscuta fiind Internetul.
Protocolul TCP este unul complex si in continua dezvoltare. Cu toate ca s-au facut imbunatatiri de-a lungul anilor, structura sa de baza nu s-a modificat semnificativ de la prima sa specificatie in Request for Comments RFC 675 in anul 1974 si de la specificarile facute in RFC 793 in 1981 la a patra varianta.
In anul 1989 , in documentul oficial privind specificatiile comunitatii Internet – RFC s-au clarificat cerintele necesare pentru serverele accesibile pe Internet si implemenatrea protocoalelor TCP. In 1999 se publica oficial variante imbunatatite ale algoritmilor de controlul congestiilor iar in 2001 in documentul RFC a fost descris ECN (explicit congestion notification ) un mecanism de semnalare si evitare a congestiilor.
1.2.2 Introducere in TCP si stiva de protocoale TCP/IP
Comunicarea intre 2 masini de calcul a fost realizata inca de la inceputurile comunicatiilor digitale cu ajutorul unei stive de protocoale ordonata pe mai multe nivele . OSI reprezinta una dintre primele structuri de comunicare ierarhica realizata de Organizatia Internationala de Standardizare ISO. Ea a fost creata pe baza a 7 niveluri :
nivelul Fizic se ocupa de perspectiva pur fizica a comunicatiilor , bitii fiind priviti ca alternari de tensiuni intr-un mediu de transmisie sau orice alt fenomen fizic care ar putea duce , prin prelucrare , la o comunicare intre 2 masini de calcul
– nivelul Legatura Date(Data Link) se ocupa in principal de adresarea fizica a masinilor de calul prin folosirea unei adrese fizice numite MAC
– nivelul Retea lucreaza cu protocoalele routate ( IP, AppleTalk , IPX etc) care permit o adresare logica si gasirea caii catre destinatie
nivelul Transport vegheaza la consistenta comunicarii bazandu-se pe flow control si error control
nivelul Sesiune stabileste , asigura buna functionare si
termina sesiunea
nivelul Prezentare se ocupa de reprezentarea datelor si de
criptarea lor
nivelul Aplicatie este reprezentat de diferitele aplicatii care ruleaza pe acea masina de calcul
Cand o aplicatie de pe statia sursa doreste sa comunice cu o alta aplicatie de pe o statie destinatie , stiva de protocoale OSI este parcursa de sus in jos , de la niveul aplicatie spre nivelul fizic .Informatia este incapsulata in segmente , pachete , frame-uri si apoi trimisa prin intermediul nivelului fizic al statiei destinatie unde are loc procedeul invers informatia fiind dezincapsulata in timp ce trece de la nivelul fizic catre nivelul aplicatie .
1.2.3 Structura unui segment TCP
Un segment TCP este constituit din 2 parti:
– header
– data
Header-ul este constituit din 11 campuri ( 10 sunt importante, al 11-lea fiind optional)
Source port (16 bits) – identifica portul pe care se face trimiterea
Destination port (16 bits) – identifica portul pe care se face primirea datelor
Sequence number (32 bits) – numarul de secventa si are rol dublu :
-daca flag-ul SYN este setat, atunci aceasta este secventa initiala si prima data este cea indicata de numarul de secventa +1
– daca flag-ul SYN nu este setat, atunci prima data este ca indicata de numarul de secventa
Acknowledgement number (32 bits) – daca este selecta flag-ul ACK, atunci acest camp va contine urmatorul byte asteptat de dstinatar.
Data offset (4 bits) – Acest camp isi ia numele de la faptul ca este si offest-ul de la inceputul pachetului de date.
Reserved (4 bits) – este rezervat pentru o folosire viitoare si este setat pe 0.
Flags (8 bits) (aka Control bits) – contine 8 1-bit flag-uri:
1.CWR (1 bit) – Congestion Window Reduced (CWR), este setat de cel ce trimite pentru a indica ca s-a primit un pachet cu flag-ul ECE setat (adaugat la header de RFC 3168).
2.ECE (ECN-Echo) (1 bit) – indica ca linia este libera pentru trafic si semnalul de ecou a fost receptionat (adaugat la header de RFC 3168).
3.URG (1 bit) – indica campul URGENT ca fiind semnificant.
4.ACK (1 bit) – indica campul ACH ca fiind semnificant
5.PSH (1 bit) – Functia de adaugare in stiva
6.RST (1 bit) – Resetarea conexiunii
7.SYN (1 bit) – Sincronizarea secventelor
8.FIN (1 bit) – Indica ca sursa nu mai trimite date
Window (16 bits) – marimea ferestrei de receptie ce specifica numarul de bytes ce destinatarul e dispus sa-i primeasca (vezi Flow control)
Checksum (16 bits) – suma de control pentru header si date
Urgent pointer (16 bits) – daca flag-ulURG este setat, atunci acest camp va indica ultima data urgenta.
Options (Variable bits) – lungimea totala va trebui sa fie un multiplu de 32 biti:
0 – End of options list
1 – No operation (NOP, Padding)
2 – Maximum segment size (vezi maximum segment size)
3 – Window scale (vezi window scaling pentru detalii)
4 – Selective Acknowledgement ok (vezi selective acknowledgments pentru detalii)
5 , 6, 7 – setate initial la 0
8 – Timestamp (vezi TCP Timestamps pentru detalii)
1.2.4 Internet Protocol (IP)
Internet Protocol este o metodă sau un protocol prin care datele sunt trimise de la un calculator la altul prin intermediu Internetului. Fiecare calculator (cunoscut ca HOST), pe internet are cel puțin o adresă IP unică, care îl identifică între toate computerele de pe internet. Când trimiți sau primești date (ex: email, pagini web) mesajul este împărțit în părți mai mici numite pachete. Fiecare pachet cuprinde adresa celui care trimite datele, dar și a celui căruia îi sunt destinate. Fiecare pachet este trimis, prima oara la un "Gateway Computer" care înțelege o mică parte din internet.
Computerul "Gateway" citește destinația pachetelor și trimite pachetele la un alt "Gateway" și tot așa până ce pachetul ajunge la "Gateway"-ul vecin cu computerul destinatar.
Adresa IP este utilizată la nivelul programelor de prelucrare în rețea. În schimb, la nivelul utilizatorilor cu acces la Internet, identificarea calculatoarelor se face printr-un nume de calculator host gestionat de sistemul DNS.
1.2.4.1 Functionare
Comunicația în Internet funcționează după cum urmează: nivelul transport preia șiruri de date și le divide în datagrame. Teoretic, datagramele pot avea fiecare până la 64 KB, dar în practică ele nu depășesc 1500 de octeți (pentru a intra într-un cadru Ethernet). Fiecare datagramă este transmisă prin Internet, fiind eventual fragmentată în unități mai mici pe parcurs. Când toate aceste „fragmente” ajung la mașina destinație ele sunt reasamblate de nivelul rețea în datagrama originală. Datagrama este transparentă nivelului transport, care o inserează în șirul de intrare al procesului receptor. Cea mai mică adresă este 0.0.0.0, iar cea mai mare 255.255.255.255. Adresa IP 0.0.0.0 este folosită de gazde atunci când sunt pornite. Adresele IP cu 0 ca număr de rețea se referă la rețeaua curentă. Aceste adrese permit ca mașinile să acceseze propria rețea fără a cunoaște numărul de rețea (dar trebuie cunoscută clasa rețelei pentru a ști câte zerouri trebuie introduse). Adresele care constau numai din 1-uri permit difuzarea în rețeaua curentă, în mod usual un L A N . Toate adresele de forma 127.xx.yy.zz sunt rezervate pentru testări în buclă locală. Pachetele trimise către această adresă nu sunt trimise prin cablu ele sunt prelucrate local și tratate ca pachete sosite.
O datagramă IP(un pachet) constă dintr-o parte de antet și o parte de text. Antetul are o parte fixă de 20 octeți și o parte opțională de lungime variabilă.
Fiecare gazdă și router din internet are o adresă IP, care codifică adresa sa de rețea și de gazdă. Combinația este unică: în principiu nu există două mașini cu aceeași adresă IP. Toate adresele IP sunt de 32 biți și sunt folosite în câmpurile „Adresă sursă” și „Adresă destinație” a pachetelor IP. Este important de observat că o adresă IP nu se referă la o gazdă. Se referă, de fapt, la o interfață de rețea. Cu alte cuvinte, dacă o gazdă este în două rețele, trebuie să folosească două adrese IP .Rețelele sunt dinamice și este posibil ca 2 pachete IP de la aceeași sursă să plece pe căi diferite (BGP – Border Gateway Protocol) și să ajungă la aceeași destinație. Pachetele IP (dupa cum s-a mai spus) nu au garanția că vor ajunge la destinație, acest lucru fiind lăsat în seama protocoalelor adiacente (TCP UDP etc).
1.2.4.2 Headerul IP
Structura headerului IP este:
Version – versiunea pachetului IP (curentă este 4)
IHL – lungimea headerului IP
Type of Service – permite gazdei să comunice ce tip de serviciu dorește
Total length – lungimea pachetului
Identification – identificarea pachetului
Flags – conține 1 bit nefolosit 1 bit DF (Don’t Fragment) și unul MF (non-fragment)
Fragmentation offset – indică unde este locul fragmentului în datagramă
Time to Live – timpul de viața al pachetului (secunde), care se decrementeaza la fiecare HOP (trecere dintr-un router în altul)
Protocol – indică cărui proces de transport să-l predea (TCP, UDP, etc.)
Header Checksum – suma de control a antetului
Source Address – adresa sursă a pachetului (de unde vine)
Destination Address – destinatia pachetului (unde trebuie să ajungă)
Options – opțiuni ale pachetului (securitate, dirijare strictă pe baza sursei, dirijare aproximativă pe baza sursei, înregistrare cale, amprenta de timp)
Niciunul din câmpurile IP nu sunt criptate și niciunul nu necesită autentificare.
1.3 Comparație între OSI și TCP/IP
In momentul de fata OSI nu mai reprezinta decat o unealta didactica ea fiind inlocuita in mare parte de stiva TCP/IP care reprezinta o viziune comprimata si mai eficienta asupra comunicarii ierarhice .Cu toate acestea principiile de baza raman aceleasi. Precum se observa in figura de mai jos nivelurile Fizic si Data Link ale OSI au fost concatenate intr-un singur layer TCP/IP numit Network Access . Nivelul Network din OSI si-a panivel componenta insa a fost redenumit Internet . Nivelul transport in TCP/IP ramane in mare acelasi ca in stiva OSI insa ia o parte din atributiile nivelului sesiune ( initierea si terminarea dialogului ) . Al patrulea si ultimul nivel al TCP/IP a reusit sa reuneasca ultimele 3 nivele OSI : Sesiune , Prezentare si Aplicatie.
1.4 Tipuri de rețele
1.4.1 Concepția de rețea
Legarea calculatoarelor într-o rețea pentru a utiliza în comun informațiile nu este un fenomen nou. Instituțiile guvernamentale și companiile din orice domeniu de activitate din țările dezvoltate fac acest lucru de mai multe decenii. Multe corporații și firme au adoptat de peste 20 de ani lucrul în rețele.
O rețea de calculatoare reprezintă un mod de conectare a unor calculatoare individuale, astfel încât să poată folosi în comun anumite resurse. Aceste resurse includ componente de genul unităților de disc, fișiere (baze de date), imprimante și echipamente de comunicație. În plus, rețeaua permite o interacțiune mai mare și o comunicare mai bună între membrii rețelei, prin intermediul poștei electronice, bazelor de date și a altor metode de utilizare în comun a informațiilor de orice fel.
Calculatoarele conectate la rețea sunt denumite noduri.
Când nodurile aparțin aceleiași clădiri sau aceleiași organizații, rețeaua este locală (Local Area Network – LAN), de exemplu rețeaua unui liceu.
Dacă nodurile sunt dispersate pe o zonă mai extinsă, de exemplu pe suprafața unui județ sau a câtorva județe, la nivelul țării sau pe întregul glob, rețeaua este pe plan extins (Wide Area Network – WAN). O astfel de rețea ar putea fi constituită, de exemplu, la nivel național, pentru toate instituțiile Ministerului Educației și Cercetării.
Rețele client/server
Rețeaua de acest tip folosește un calculator separat (server), de regulă performant, care este calculator “central”, care lucrează cu toate fișierele și efectuează serviciile de tipărire pentru mai mulți utilizatori. Calculatorul oferă răspunsuri rapide clienților, asigură cea mai bună protecție a datelor din rețea și folosesc un sistem de operare avansat (de exemplu: Novell NetWare, Windows NT Server, IBM OS/2 LAN Server, etc.). O rețea poate avea mai multe servere. Clienții din rețea sunt calculatoare conectate la server, puternice sau cu putere redusă, ca viteză de lucru, capacitate de memorie, etc.
Retele de tip Peer-to-Peer
Nu folosesc acel calculator central numit Server, ci dimpotriva ele folosesc impreuna unitatile de disc si imprimantele sau de ce nu chiar fisiere si programe. Insa acest tip de retea are destul de multe defecte: deoarece pe un calculator de birou nu ruleaza calculatoare super-performante cu SO-uri de tip *NIX instalate exista pericolul destul de mare de altfel de a suprasatura statiile de lucru daca mai multi utilizatori acceseaza in acelasi timp resursele aceluiasi calculator.
1.4.4 Rețeaua INTERNET
Internet este o “rețea de rețele”, cu zeci sau sute de milioane de calculatoare, dispuse pe întregul glob, staționare sau mobile, rețea ce deține cantități uriașe de informații, din care foarte multe pot fi consultate fără restricții, iar unele contra cost sau numai cu diferite parole de acces. Fiecare individ care posedă un calculator cu modem cu viteză de transmitere de cel puțin 14,4 kbps (kilobiți pe secundă, viteza indicată fiind cea minimă pentru Internet, se recomandă chiar o viteză mai mare), o linie telefonică fixă sau mobilă, se poate conecta la această mare rețea prin intermediul unei firme furnizoare de servicii Internet. În cadrul rețelei Internet poate fi folosită poșta electronică sau pot fi consultate site-uri ale rețelei WWW.
Rețeaua World Wide Web, denumită Web sau WWW, este partea cea mai dezvoltată din internet. A fost creată în 1989, la centrul european de cercetări nucleare. Rețeaua este bazată pe grafică, fiind folosit un limbaj special, HTML (Hypertext Markup Language – limbaj de marcare pentru hipertext). Cu un click pe textul sau imaginea grafică cu o anumită codificare se ajunge la alte documente denumite pagini Web (Web pages), unde se pot vedea imagini, text, videoclipuri, se pot asculta mesaje vocale. Pe ecranul propriului calculator pot fi aduse imagini din toată lumea sau informații referitoare la orice domeniu de activitate. Totul este să “salvați” pe hard-diskul calculatorului propriu. O altă modalitate de utilizare a internetului o reprezintă dialogul efectiv realizat cu ajutorul chat-ului.
Accesul la o pagină Web, a unui site Internet (site-urile fiind constituite din pagini Web) se poate face printr-un program, ca de exemplu Netscape Comunicator sau Microsoft Internet Explorer. Fiecare site are o adresă formată din grupuri de litere, ca de exemplu http://www.msn.com, pentru compania Microsoft. Deci folosind orice program care oferă posibilitatea de a naviga pe Internet, putem accesa orice adresă de site cunoscându-i, bineînțeles, numele prin introducerea acestuia pe bara de adresă din fereastra deschisă cu ajutorul programului respectiv. Ultimele două litere pot reprezenta țara (ro pentru România, de pentru Germania, uk pentru Marea Britanie, etc.), tipul organizației (com pentru comercială, edu de la education pentru instituții de învățământ, etc.). Pe diferite site-uri ale rețelei internet putem crea propriile adrese de e-mail, folosind diferite opțiuni: E-mail, Sign me up, etc. Numele adresei de e-mail are în componență un simbol @ (A rond) aflat între numele dat de utilizator adresei și numele site-ului respectiv.
1.4.5 Topologii LAN
Pentru aranjarea in retea a calculatoarelor se folosesc diferite metode numite topologii. Fiecare topologie are avantaje si dezavantaje dar totusi fiecare se potriveste cel mai bine in anumite situatii.
1. Retele de tip magistrala
In cadrul acestui tip de rete toate calculatoarele sunt interconectate la cablul principal al retelei. Calculatoarele conectate in acest tip de retea au acces in mod egal la toate resursele retelei. Pentru utilizarea cablului nivelul logic trebuie sa astepte pana se elibereaza cablul pentru a evita coliziunile de date. Acest tip de retea are insa un defect si anume: daca reteaua este intrerupte intr-un loc fie accidental fie prin adaugarea unui alt nod de retea atunci intreaga retea este scoasa din functiune. Este totusi una din cele mai ieftine moduri de a pune la cale o retea.
2. Retele de tip stea
Acest tip de retea face legatura intre calculatoare prin intermediul unui concentrator. Avantajul esential al acetui tip de retea este ca celelalte cabluri sunt protejate in situatia in care un calculator este avariat sau un cablu este distrus, deci din puct de vedere al sigurantei transmisiei de date este cea mai sigura solutie in alegerea configurarii unei retele mari caci prntru o retea mica exista un dezavataj de ordin finaciar constituit de concentrator care are un pret destul de ridicat.
3. Retele de tip ring
Tipul de retea circular face legatura intre calculatoare prin intermediul unui port de intrare (In Port) si a unui port de iesire (Out Port). In aceasta configuratie fiecare calculator transmite date catre urmatorul calculator din retea prin portul de iesire al calculatorului nostru catre portul de intrare al calculatorului adresat. In cadrul acestei topologii instalarea cablurilor este destul de dificila si atunci se recurge la un compromis intre acest tip de retea si cel de tip magistrala folosindu-se o unitate centrala care sa inchida cercul numita Media Acces Unit (MAU – unitate de acces a mediilor).
4. Retele de tip magistrala in stea
La fel ca o retea hibrida stea-cerc reteaua de tip magistrala in stea face apel la o unitate centrala (MAU) prin care se realizeaza legaturile intre calculatoare.
5. Alte tipuri de retele
– retele de tip MASH – de tipul toata lumea cu toata lumea
– retele de tip tree – se bazeaza pe structura ierarhica
– alte tipuri de retele – in general sunt combinatii intre cele de mai sus.
1.5 Protocolul UDP(User Datagram Protocol)
UDP reprezinta alaturi de TCP unul dintre cele mai importante protocoale de transport . UDP nu garanteaza corectitudinea transmisiunii asa cum o face TCP . Datagramele pot ajunge la destinatie neordonate , duplicate sau chiar lipsa fara sa se observe . Insa tocmai evitarea de a consuma resursele face ca UDP sa fie mai rapid si mai eficient petru aplicatiile care nu necesita garantarea livrarii pachetelor .
Spre deosebire de TCP , UDP poate fi utilizat atat pentru transmisiuni broadcast cat si multicast .
Dintre aplicatiile care folosesc UDP ca protocol de transport pot fi enumerate : Domain Name Sistem ( DNS ) si Trivial File Transfer Protocol (TFTP)
Ca exemplu , protocolul UDP este folosit de protocoalele de rutare pentru a transmite up-date-uri de rutare intre ele . Aceste up-date-uri sunt folosite de rutere pentru a aduce reteaua la starea de convergenta sau pentru a mentine functionalitatea tabelelor de rutare . Este evident faptul ca in acest caz pierderea unui up-date de rutare are o mai mica importanta decat conservarea resurselor de procesare .
Structura unui pachet UDP :
Portul sursa indica portul atribuit aplicatiei de catre statia sursa . Avand in vedere ca in cazul UDP nu este nevoie sa se returneze nimic de la destinatie la sursa , acest cam poate fi 0 .
Portul destinatie identifica aplicatia de pe statia destinatie si este absolut necesar .
Lungimea este un camp de 16 biti care specifica lungimea in biti a intregii datagrame incluzand header-ul si data .
CheckSum este reprezentat de un camp de 16 biti care are rolul de a oferii un control al erorii prin compararea valorii cheksum-ului cu numarul de biti primiti de statia destinatie .
Campul data reprezinta informatia in sine care trebuie transmisa .
Capitolul 2
Securitatea transmisiei de date
2.1 Tehnici de codare a informației
2.1.1 Algoritmul de criptare RSA
2.1.1.1 Scurt istoric
Algoritmul RSA (Rivest-Shamir-Adleman) a fost inventat de Ron Rivest, Adi Shamir et Leonard Adleman în 1977 și este proprietate a societății americane RSA Data Security. Odată cu acest algoritm, părăsim zona algoritmilor istorici, ușor de supus criptanalizei.
RSA face parte din clasa algoritmilor de criptare cu cheie publică ce au drept principală caracteristică existența a două chei: o cheie publică ce poate fi cunoscută de orice expeditor și o cheie privată cunoscută doar de destinatar.
Fig. 1. Criptarea cu cheie publică
Din punct de vedere matematic, algoritmii de criptare cu două chei sunt denumiți algoritmi asimetrici. Prin contrast, toți algoritmii studiați până acum, vor fi numiți algoritmi de criptare simetrici.
2.1.1.2 Descrierea algoritmului
Să presupunem că două persoane, Bob și Alice doresc să comunice într-un mod cât mai sigur mesaje secrete. Există însă și o treia persoană, Eve, care dorește să intercepteze și să decripteze traficul de mesaje dintre Bob și Alice. Alice și Bob pot fi oameni de afaceri aflați la distanță, avioane aflate în zbor sau chiar doi prieteni ce doresc să comunice într-un mod cât mai privat. În nici unul din cazuri Eve nu poate fi oprită să ”asculte” traficul radio sau cel de pe internet.
2.1.1.2.1 Criptografia cu cheie privată
Soluția clasică a problemei este utilizarea algoritmilor de criptare cu cheie privată (criptare simetrică, Fig. 2). Pentru a fi sigură, această soluție implică un schimb de chei între Alice și Bob. Acest schimb de chei poate fi făcut printr-o întâlnire prealabilă între cele două persoane sau, în cazul unor instituții, companii sau guverne, cu ajutorul unor curieri.
Fig. 2. Criptarea cu cheie privată
Dacă cele două persoane Alice și Bob locuiesc în zone aflate la distanță mare între ele, întâlnirea se poate dovedi foarte costisitoare, uneori aproape imposibilă. Soluția ar putea fi schimbarea unei chei digitale folosind internetul sau chiar poșta clasică. Nici una dintre aceste metode nu este însă sigură.
2.1.1.2.2 Criptografia cu cheie publică
Soluția problemei anterioare este utilizarea algoritmilor de criptare cu cheie publică. Acest tip de criptare implică folosirea a două tipuri de chei:
chei private știute doar de destinatarii mesajelor;
chei publice.
Fiecare utilizator al acestui sistem de criptare va avea două chei (Fig. 3): cea privată pe care o păstrează secretă și cea publică pe care o poate trimite la toți cei care doresc sa-i trimită mesaje criptate. Orice ”adversar” de tipul Eve descris anterior va cunoaște cheia publică dar nu va putea decripta mesajul dacă nu cunoaște cheia privată.
Fig. 3 Criptarea/decriptarea cu cheie publică
Dezavantaje ale algoritmului RSA:
După cum se poate observa și din descrierea algoritmului, RSA criptează numere și nu litere. Pentru a cripta secvențe de text sau imagini, va trebui sa aplicăm algoritmul pentru fiecare octet în parte. După cum am văzut deja, acest tip de criptare poate ușura foarte mult munca unui criptanalist care utilizează testul Kasiski și poate conduce în cele din urmă la aflarea cheii private. Pentru a evita astfel de situații, de obicei, criptarea RSA mai introduce și octeți cu valori aleatorii.
Din cauza complexității algoritmului de criptare / decriptare, RSA este considerat lent în comparație cu algoritmii simetrici de criptare.
2.1.2 Algoritmul de autentificare MD5
2.1.2.1 Scurt istoric
Algoritmul MD5 (message digest) este ultimul dintr-o serie de algoritmi proiectați de Ronald Rivest, profesor la Massachusetts Institute of Technology. MD5 a fost dezvoltat în 1990 ca un înlocuitor mai sigur al algoritmului MD4 criptanalizat de Hans Dobbertin care a demonstrat slăbiciunile acestuia.
2.1.2.2 Descrierea algoritmului MD5
Algoritmul MD5 are drept intrare un text de lungime arbitrară și produce la ieșire o amprentă digitală cu o lungime de 128 de biți. Este de dorit ca două mesaje diferite să nu genereze aceeași amprentă și în același timp, să nu se poată genera un anumit mesaj căruia să-i fie asociat o anumită amprentă bine definită. Algoritmul MD5 este folosit în aplicațiile ce folosesc semnătura digitală, unde un fișier de dimensiune mare trebuie comprimat într-un mod sigur înainte de a fi criptat cu un algoritm cu cheie publică cum ar fi RSA.
Pentru a calcula amprenta digitală a unui mesaj, MD5 folosește funcții de dispersie (hash functions). Proprietățile cele mai importante (din punctul de vedere al criptografiei) ale funcțiilor hash sunt:
dacă două rezultate sunt diferite atunci în mod sigur și mesajele aflate la intrare sunt diferite (vezi Fig. 1);
pe de altă parte, egalitatea a două rezultate nu implică faptul că la intrare au fost mesaje identice.
Fig. 1. Sume Hash pentru intrări asemănătoare
Algoritmii ce folosesc funcții de dispersie sunt în general folosiți în autentificarea mesajelor și trebuie să răspundă următoarelor cerințe:
să asigure integritatea mesajului prin căutarea unei metode care să verifice dacă acesta nu a fost modificat sau falsificat;
identificarea expeditorului;
să asigure că expeditorul nu poate nega faptul că a transmis mesajul;
rapiditate: autentificarea să fie mai mult mai rapidă decât un algoritm de criptare clasic
dimensiune fixă a rezultatului;
să asigure securitatea mesajului în cazul încercării decriptării neautorizate a acestuia.
În esență MD5 este o modalitate de a verifica integritatea datelor trimise ce este mult mai sigură decât sumele de control sau alte metode utilizate în mod curent.
2.1.3 Algoritmul de autentificare SHA-1 (Secure Hash Standard)
2.1.3.1 Scurt istoric
Specificațiile inițiale ale algoritmului au fost publicate în 1993 de către FIPS PUB 180 (Federal Information Processing Standards Publication), decătre organizația guvernamentală americană NIST (National Institute of Standards and Technology). Această primă versiune este denumită generic SHA-0. La doi ani după publicare algoritmul a retras ca și standard de către NSA (National Security Agency) și a fost republicat și aprobat în 1995 sub denumirea SHA-1. Conform NSA, prima versiune nu oferea destulă securitate dar o explicație oficială asupra lacunelor de securitate identificate nu a fost dată niciodată. Slăbiciuni au fost găsite atât în versiunea SHA-0 cât și în SHA-1, dar varianta finală a rezistat mai bine atacurilor de-a lungul timpului ceea ce confirmă decizia NSA.
Atât SHA-0 cât și SHA-1 produc o amprentă digitală de 164 de biți (cu o dimensiune maximă de 256 de biți) iar principiul de funcționare este asemănător cu al algoritmului MD5 descris în cursul precedent.
Organizația guvernamentală americană NIST a mai publicat specificațiile a încă patru variante ale algoritmului, cunoscute sub denumirea generică de SHA-2:
SHA-224;
SHA-256;
SHA-384;
SHA-512;
Algoritmii SHA-256 și SHA-512 folosesc funcții hash pe 32 respectiv 64 de biți. Ambii algoritmi folosesc rotiri și adunări cu constante diferite dar, în mare, structura logică este aceeași, numărul de runde fiind însă diferit. SHA-224 și SHA-384 sunt doar versiunile truncate pentru SHA-256 respectiv SHA-512 calculate însă cu valori inițiale diferite.
Aceste patru noi funcții nu au atras însă un număr semnificativ de utilizatori în comunitatea criptografilor, în comparație cu SHA-1, prin uramare nici atacuri de securitate serioase nu au fost încercate. Gilbert and Handschuh au studiat aceste noi variante în 2003 și nu au găsit slăbiciuni.
SHA-512 are aceeași structură ca si SHA-1, cu următoarele observații:
toate numerele sunt reprezentate pe 64 de biți;
se folosesc 80 de runde în loc de 64;
valorile inițiale și constantele folosite la adunare sunt diferite;
rotirile și deplasările sunt efectuate pe un număr diferir de biți.
2.1.3.2 Aplicabilitatea algoritmului SHA-1
Algoritmul de autentificare SHA-1 este folosit de DSA (Digital Signature Standard) în care este de altfel și încorporat. De asemeni funcțiile SHA au fost utilizate pentru algoritmii de criptare pe blocuri de biți SHACAL. Compania Microsoft a încorporat algoritmul SHA-1 în sistemul de prevenire a copiilor pentru consola Xbox.
SHA-1 este de asemeni folosit de aplicațiile de file-sharing ce folosesc multiple surse pentru același fișier ce pot sa nu aibă același nume dar și pentru deosebirea surselor ce nu sunt identice dar au același nume.
2.1.4 Algoritmul de criptare DES (Data Encryption Standard)
Algoritmul DES este cel mai folosită metodă de criptare din acest moment în întreaga lume. Pentru foarte mult timp și aproape pentru toată lumea din domeniul criptografiei DES și criptare sigură” au fost sinonime. În ciuda loviturii primite de la organizația EFF (Electronic Frontier Foundation) ce a creat o mașină în valoare de 220.000 $ special pentru „spargerea” algoritmului DES, acesta continuă să fie folosit de guvernul SUA și de bancile comerciale în continuare prin noua sa extensie denimită „triple-DES”.
2.1.4.1 Scurt istoric
În data de 15 mai 1973, în timpul mandatului președintelui Richard Nixon, organizația guvernamentală americană NBS (National Bureau of Standards), a publicat o notă în registrul federal (echivalentul Monitorului Oficial) solicitând pentru un algoritm de criptare ce va facilita protecția datelor în timpul transmiterii acestora sau atunci când sunt stocate digital. Nota explica de ce criptarea este importantă în viitorul apropiat al SUA:
În ultima decadă, a fost observată o creștere accelerată în acumularea și comunicarea datelor digitale de câtre guvern, industrie și de către alte numeroase organizații din sectorul privat. Conținutul acestor date stocate sau transmise este nu de multe ori foarte valoros și uneori secret . În acest moment întâlnim în mod uzual transmisii de date ce constituie transferuri bancare de ordinul milioanelor de dolari, vânzări sau cumpărări de bunuri ce țin de securitatea națională, mandate de arestare sau de condamnare, rezervarea de locuri la cursele aeriene, fișiere ce conțin date despre pacienți și tratamentul lor, șamd.
Importanța mare din punct de vedere al volumului, valorii și confidențialității acestor date, transmise de organizațiile particulare sau guvernamentale, a dus la îngrijorare în ceea ce privește la expunerea acestor date la acces și utilizare neautorizate.
Este cunoscut că criptarea este singura metodă de protecție a acestor date în timpul transmiterii sau stocării lor. […] Organizația noastră, în rolul ei de a stabili standarde precum și de a juta diversele organizații private sau guvernamentale în accesarea tehnologiilor moderne, va evalua toate propunerile venite înainte de a lua orice decizie.”
Din acest moment NBS a așteptat un răspuns ce a venit în data de 6 august 1974, atunci când IBM a trimis un algoritm candidat ce a fost dezvoltat și folosit intern sub numele de LUCIFER. După ce a evaluat algoritmul cu ajutorul agenției NSA (National Security Agency), NBS a adoptat o variantă modificată a algoritmului LUCIFER drept noul standard pentru criptografia americanș și l-a denumit DES, în 15 iulie 1977.
DES a fost adoptat rapid pentru datele de tip analogic, mai ales în domeniul telefoniei. În același timp, industria bancară, care este cel mai mare utilizator al algoritmului in SUA, a adoptat DES ca standard pentru criptarea datelor bancare. Standardizarea a fost făcută cu ajutorul asociației guvernamentale ANSI (American National Standards Institute) și adoptată sub numele de X3.92 în 1980.
DES este un algoritm de criptare pe blocuri (block cipher) ce acționează asupra grupurilor de 64 de biți utilizănd chei de 64 de biți. Rezultatul este o permutație dintre cele 2^64 permutații posibile.
DES diagram
2.1.4.2 Algoritmul de criptare Triple DES
2.1.4.2.1 Moduri de aplicare ale algoritmului DES:
Deoarece algoritmul DES se aplică asupra unor blocuri de 64 de biți este denumit generic algoritm de tip ECB (Electronic Code Book). Există de asemeni două variante ale DES: CBC (Chain Block Coding) și CFB (Cipher Feedback) în care fiecare pachet depinde într-un mod sau altul de pachetul (pachetele) anterior criptat printr-o operație de tip XOR. Deoarece este un algoritm ECB, putem imagina algoritmi ce funcșionează pe 128 sau 256 de biți ce folosesc într-un mod sau altul criptarea sau decriptarea DES. Una dintre aceste modalități de criptare des folosită în industre este și Triple DES.
2.1.4.2.2 Triple-DES
În ultimii ani, pentru a crește securitatea algoritmului DES, se folosește o altă variantă a sa denumită generic Triple-DES ce folosește două chei, după cum urmează (vezi figura de mai jos):
prima cheie este folosită pentru criptarea DES a mesajului;
cea de-a doua este folosită pentru decriptare (nu se va obține mesajul inițial deoarece este diferită de prima);
mesajul astfel modificat este apoi criptat din nou folosindu-se prima cheie.
Diagrama algoritmului Triple DES
Obs: După cum se poate observa și din figura de mai sus, Triple DES poate fi folosit și cu trei chei diferite.
2.1.4.3 Motivatia unui nou standard
Avantaje DES :
este algoritmul folosit în majoritatea aplicațiilor de criptografie actuale:
comunicații guvernamentale
comunicații ale sateliților civili
sistemul de parole ale calculatoarelor, etc.
există implementări pentru aproape toate sistemele software/hardware: pentru orice microcontroler ce are și un compilator C/C++, pentru PC (indiferent de sistemul de operare), pentru circuite digitale (FPGA / ASIC)
Dezavantaje DES :
implementările software sunt relativ lente deoarece a fost proiectat în special pentru implementări digitale (FPGA, ASIC, Smart Card)
lungimea cheii este inadecvată aplicațiilor software (56 de biți)
suspiciunile existenței unei chei universale de decriptare rezultate din modul de publicare al algoritmului, fără nici un fel de explicații matematice, au fost aproape confirmate de NBS (National Bureau of Standards )
Există 2 tentative reușite de “spargere”:
una dintre ele folosește o rețea de 100.000 de calculatoare legate în rețea, decriptarea durează 24 de ore
dispozitivul de 250.000$ special construită de EFF (Electronic Frontier Foundation ) care poate decripta orice mesaj în maximum 56 de ore.
2.1.4.4 Algoritmul AES cerinte initiale
Pentru a putea fi un înlocuitor de succes al DES-ului, noul AES trebuie să îndeplinească o serie de condiții:
securitate sporită
un design cât mai simplu, care, contrar părerii generale, trebuie să fie ușor de criptanalizat pentru a putea găsi și remedia cât mai rapid eventualele “găuri” de securitate
performanță sporită (atât software cât și hardware)
In 1998, NIST (National Institute of Standards and Technology) a definitivat cerintele pentru algoritmii candidati:
– sa fie un algoritm cu cheie private
– sa fie un algoritm ce cripteaza blocuri d date
– blocurile de date sa fie de 128 de biti
– lungimea cheilor folosite sa fie variabila (128, 192 si 256 biti)
– sa nu fie patentat
2.2 Amenințările și nevoile securității
Internet este o structură deschisă, la care se poate conecta un număr mare de calculatoare fiind deci greu de controlat. De aceea putem vorbi de vulnerabilitatea rețelelor manifestată pe variate planuri. Un aspect crucial al rețelelor de calculatoare, în special al comunicațiilor prin internet îl constituie securitatea informațiilor.
2.2.1 Categorii de atacuri asupra rețelelor
Amenințările la adresa securității unei rețele de calculatoare pot avea următoarele origini: dezastre sau calamități naturale, defectări ale echipamentelor, greșeli umane de operare sau manipulare, fraude. Primele trei tipuri de amenințări sunt accidentale, în timp ce ultima este intenționată. Câteva studii de securitate a calculatoarelor estimează că jumătate din costurile implicate de incidente sunt datorate acțiunilor voit distructive, un sfert dezastrelor accidentale și un sfert greșelilor umane. Acestea din urmă pot fi evitate sau, în cele din urmă, reparate printr-o mai bună aplicare a regulilor de securitate (salvări regulate de date, discuri oglindite, limitarea drepturilor de acces).
În amenințările datorate acțiunilor voite, se disting două categorii principale de atacuri: pasive și active.
1) Atacuri pasive – sunt acelea în cadrul cărora intrusul observă informația ce trece prin "canal", fără să interfereze cu fluxul sau conținutul mesajelor. Ca urmare, se face doar analiza traficului, prin citirea identității părților care comunică și "învățând" lungimea și frecvența mesajelor vehiculate pe un anumit canal logic, chiar dacă conținutul acestora este neinteligibil. Atacurile pasive au următoarele caracteristici comune:
• Nu cauzează pagube (nu se șterg sau se modifică date);
• Încalcă regulile de confidențialitate;
• Obiectivul este de a "asculta" datele schimbate prin rețea; .
• Pot fi realizate printr-o varietate de metode, cum ar fi supravegherea legăturilor telefonice sau radio, exploatarea radiațiilor electromagnetice emise, rutarea datelor prin noduri adiționale mai puțin protejate.
2) Atacuri active – sunt acelea în care intrusul se angajează fie în furtul mesajelor, fie in modificarea, reluarea sau inserarea de mesaje false. Aceasta înseamnă că el _ poate șterge, întârzia sau modifica mesaje, poate să facă inserarea unor mesaje â false sau vechi, poate schimba ordinea mesajelor, fie pe o anumită direcție, fie pe ambele direcții ale unui canal logic. Aceste atacuri sunt serioase deoarece modifică starea sistemelor de calcul, a datelor sau a sistemelor de comunicații. Există . următoarele tipuri de amenințări active:
• Mascarada – este un tip de atac în care o entitate pretinde a fi o altă entitate. De exemplu, un utilizator încearcă să se substitue altuia sau un serviciu pretinde a fi un alt serviciu, în intenția de a lua date secrete (numărul cărții de credit, parola sau cheia algoritmului de criptare). O "mascaradă" este însoțită, de regulă, de o altă amenințare activă, cum ar fi înlocuirea sau modificarea mesajelor;
• Reluarea – se produce atunci când un mesaj sau o parte a acestuia este reluată (repetată), în intenția de a produce un efect neautorizat. De exemplu, este posibilă reutilizarea informației de autentificare a unui mesaj anterior. În conturile bancare, reluarea unităților de date implică dublări și/sau alte. modificări nereale ale valorii conturilor;
• Modificarea mesajelor – face ca datele mesajului să fie alterate prin modificare, inserare sau ștergere. Poate fi folosită pentru a se schimba beneficiarul unui credit în transferul electronic de fonduri sau pentru a modifica valoarea acelui credit. O altă utilizare poate fi modificarea câmpului destinatar/expeditor al poștei electronice;
• Refuzul serviciului – se produce când o entitate nu izbutește să îndeplinească propria funcție sau când face acțiuni care împiedică o altă entitate de la îndeplinirea propriei funcții;
• Repudierea serviciului – se produce când o entitate refuză să recunoască un serviciu executat. Este evident că în aplicațiile de transfer electronic de fonduri este important să se evite repudierea serviciului atât de către emițător, cât și de către destinatar.
În cazul atacurilor active se înscriu și unele programe create cu scop distructiv și care afectează, uneori esențial, securitatea calculatoarelor. Există o terminologie care poate fi folosită pentru a prezenta diferitele posibilități de atac asupra unui sistem. Acest vocabular este bine popularizat de "poveștile" despre "hackeri". Atacurile presupun, în general, fie citirea informațiilor neautorizate, fie (în cel mai frecvent caz) distrugerea parțială sau totală a datelor sau chiar a calculatoarelor. Ce este mai grav este posibilitatea potențială de infestare, prin rețea sau copieri de dischete, a unui mare număr de mașini. Dintre aceste programe distructive amintim următoarele:
• Virușii – reprezintă programe inserate în aplicații, care se multiplică singure în alte programe din spațiul rezident de memorie sau de pe discuri; apoi, fie saturează complet spațiul de memorie/disc și blochează sistemul, fie, după un număr fixat de multiplicări, devin activi și intră într-o fază distructivă (care este de regulă exponențială);
• Bomba software – este o procedură sau parte de cod inclusă intr-o aplicație "normală", care este activată de un eveniment predefinit. Autorul bombei anunță evenimentul, lăsând-o să "explodeze", adică să facă acțiunile distructive programate;
• Viermii – au efecte similare cu cele ale bombelor și virușilor. Principala diferență este aceea că nu rezidă la o locație fixă sau nu se duplică singuri. Se mută în permanență, ceea ce îi face dificil de detectat. Cel mai renumit exemplu este Viermele internet ului, care a scos din funcțiune o parte din internet în noiembrie 1988;
• Trapele – reprezintă accese speciale la sistem, care sunt rezervate în mod normal pentru proceduri de încărcare de la distanță, întreținere sau pentru dezvoltatorii unor aplicații. Ele permit însă accesul la sistem, eludând procedurile de identificare uzuale;
• Calul Troian – este o aplicație care are o funcție de utilizare foarte cunoscută și care, intr-un mod ascuns, îndeplinește și o altă funcție. Nu creează copii. De exemplu, un hacker poate înlocui codul unui program normal de control "login" prin alt cod, care face același lucru, dar, adițional, copiază într-un fișier numele și parola pe care utilizatorul le tastează în procesul de autentificare. Ulterior, folosind acest fișier, hacker-ul va penetra foarte ușor sistemul.
2.2.2 Modelul de securitate în rețele
Modelul de securitate pentru un calculator seamănă cu o ceapă. Niveluri de securitate înconjoară subiectul ce trebuie protejat. Fiecare nivel izolează subiectul și îl face mai greu de accesat în alt mod decât în cel în care a fost planificat.
1) Securitatea fizică reprezintă nivelul exterior al modelului de securitate și constă, în general, în încuierea echipamentelor informatice într-un birou sau într-o altă incintă. Securitatea fizică merită o considerație specială. Problema cea mai mare o constituie salvările pentru copii de rezervă ale datelor și programelor și siguranța păstrării suporților de salvare. În aceste situații, rețelele locale sunt de mare ajutor: dacă toate fișierele schimbate frecvent rezidă pe un server, aceleași persoane (sigure și de încredere), care lansează salvările pentru mainframe-uri, pot face același lucru și la server. Calculatorul, ca orice piesă costisitoare, ar trebui să fie protejat și. de pericolul furtului. Păstrarea în afara zonelor publice este una dintre cele mai bune forme de protecție. Simpla încuiere a echipamentelor va preveni mutările ascunse precum și furtul. Într-un sistem în care prelucrarea este distribuită, prima măsură de securitate fizică care trebuie avută în vedere este prevenirea accesului la echipamente. Pentru a învinge orice alte măsuri de securitate, trebuie să se dispună de acces fizic la echipamente. Acest lucru este comun tuturor sistemelor de calcul, distribuite sau nu.
2) Securitatea logică constă din acele metode care asigură controlul accesului Ia resursele și serviciile sistemului. Ea are, la rândul ei, mai multe niveluri, împărțite în două grupe mari: niveluri de securitate a accesului (SA) și niveluri de securitate a serviciilor (SS).
2.3 Măsuri pentru atenuarea riscului atacurilor asupra rețelelor
Principalele metode pentru atenuarea atacurilor asupra retelelor sunt:
criptarea
autentificarea
firewall
Criptarea si autentificarea au fost tratate in paragrafele anterioare. Sa ne ocupam acum de firewall.
Firewall-ul este componenta retea (gazda/router+software) situate intre “noi” si cei din afara (“ei”), iar rezultatul actiunii lui, pachetul filtrate de firewalls, este selectat in functie de sursa sau adresa de destinatie (de ex. Adresa IP, port).
Protectie la nivel IP:
autentificarea headerului: destinatarul poate autentifica expeditorul folosind codul de autentificare a mesajului (message autentification code – MAC)
criptarea continutului (algoritmi de criptare)
Protectie IPA:
– SSL-secure socket layer: support pentru autentificare si criptare
– numere de port: m443 pentru http cu SSL, 465 pentru smtp cu
SSL
Protectia la nivel Aplicatie:
posibilitatea mesajelor confidentiale
secure http: suporta multe autentificari, scheme de criptare
Capitolul 3
Prezentarea aplicatiei
3.1 Tehnici de programare
Platforma .NET Microsoft
3.1.1 Prezentare generala
Platforma .NET este un nou cadru de dezvoltare a softului, sub care se vor realiza, distribui si rula aplicatiile de tip forme Windows, aplicatii WEB si servicii WEB. Ea consta ın trei parti principale: Common Language Runtime, clase pentru platforma ¸si ASP.NET. O infrastructura ajutatoare, Microsoft .NET Compact Framework este un set de interfete de programare care permite dezvoltatorilor realizarea de aplicatii pentru dispozitive mobile precum telefoane inteligente si PDA-uri.
.NET Framework constituie un nivel de abstractizare ıntre aplicatie si kernel-ul sistemului de operare (sau alte programe), pentru a asigura portabilitatea codului; de asemenea integreaza tehnologii care au fost lansate de catre Microsoft incepand cu mijlocul anilor 90 (COM, DCOM, ActiveX, etc) sau tehnologii actuale (servicii Web, XML).
Platforma consta in cateva grupe de produse:
1. Unelte de dezvoltare – un set de limbaje (C#, Visual Basic .NET, J#, Managed C++, Objective-C, Python, Smalltalk, Eiffel, Perl, Fortran, Cobol, Lisp, Haskell, Pascal, RPG, etc), un set de medii de dezvoltare (Visual Studio .NET, Visio), infrastructura .NET Framework, o biblioteca cuprinzatoare de clase pentru crearea serviciilor Web (Web Ser-
vices)2, aplicatiilor Web (Web Forms) si aplicatiilor Windows (Windows Forms).
2. Servere specializate – un set de servere Enterprise .NET, continuatoare ale lui SQL Server 2000, Exchange 2000, BizTalk 2000 etc care pun la dispozitie functionalitati diverse pentru stocarea bazelor de date, email, aplicatii B2B3.
3. Servicii Web – cel mai notabil exemplu este .NET Passport – un mod prin care utilizatorii se pot autentifica pe site-urileWeb vizitate, folosind un singur nume si o parola pentru toate. Desi nu este omiprezent, multe site-uri ıl folosesc pentru a usura accesul utilizatorilor.
4. Dispozitive – noi dispozitive non–PC, programabile prin .NET Compact Framework, o versiune redusa a lui .NET Framework: Pocket PC Phone Edition, Smartphone, Tablet PC, Smart Display, XBox, set-top boxes, etc.
Motivul pentru care Microsoft a trecut la dezvoltarea acestei platforme este maturizarea industriei software, accentuandu–se urmatoarele directii:
1. Aplicatiile distribuite – sunt din ce ın ce mai numeroase aplicatiile de tip client / server sau cele pe mai multe nivele (n−tier). Tehnologiile distribuite actuale cer de multe ori o mare afinitate fata de producator si prezinta o carenta acuta a interoperarii cu Web-ul. Viziunea actuala se departeaza de cea de tip client/server catre una ın care calculatoare,
dispozitive inteligente si servicii conlucreaza pentru atingerea scopurilor propuse. Toate acestea se fac deja folosind standarde Internet neproprietare (HTTP, XML, SOAP).
2. Dezvoltarea orientata pe componente – este de mult timp ceruta simplificarea integrarii componentelor software dezvoltate de diferiti producatori. COM (Component Object Model) a realizat acest deziderat, dar dezvoltarea si distribuirea aplicatiilor COM este prea complexa.
Microsoft .NET pune la dispozitie un mod mai simplu de a dezvolta si a distribui componente.
3. Modificari ale paradigmei Web – de-a lungul timpului s–au adus ımbunatatiri tehnologiilor Web pentru a simplifica dezvoltarea aplicatiilor.
In ultimii ani, dezvoltarea aplicatiilor Web s-a mutat de la prezentare (HTML si adiacente) catre capacitate sporita de programare (XML si SOAP).
4. Alti factori de maturizare a industriei software – reprezinta constientizarea cererilor de interoperabilitate, scalabilitate, disponibilitate; unul din dezideratele .NET este de a oferi toate acestea.
3.1.2 Arhitectura platformei Microsoft .NET
Figura 1.1: Arhitectura .NET
Figura 1.1 schematizeaza arhitectura platformei Microsoft .NET. Orice program scris ıntr-unul din limbajele .NET este compilat ın Microsoft Intermediate Language (MSIL), ın concordanta cu Common Language Specification (CLS). Aceste limbaje sunt sprijinite de o bogata colectie de biblioteci de clase, ce pun la dispozitie facilitati pentru dezvoltarea de Web Forms, Windows Forms si Web Services. Comunicarea dintre aplicatii si servicii se face pe baza unor clase de manipulare XML si a datelor, ceea ce sprijina dezvoltarea aplicatiilor cu arhitectura n-tier. Base Class Library exista pentru a asigura functionalitate de nivel scazut, precum operatii de I/O, fire de executie, lucrul cu siruri de caractere, comunicatie prin retea, etc. Aceste clase sunt reunite sub numele de .NET Framework Class Library, ce permite dezvoltarea rapida a aplicatiilor. La baza tuturor se afla cea mai importanta componenta a lui .NET Framework – Common Language Runtime, care raspunde de executia fiecarui program. Mediul de dezvoltare Visual Studio .NET nu este absolut necesar pentru a dezvolta aplicatii (exista si alternative open-source pentru el), dar datorita extensibilitatii este cel mai bine adaptat pentru crearea aplicatiilor. Evident, nivelul inferior este rezervat sistemului de operare. Trebuie spus ca platforma .NET nu este exclusiv dezvoltata pentru sistemul de operare Microsoft Windows, ci si pentru arome de Unix (FreeBSD sau Linux – a se vedea proiectul Mono4).
3.1.3 Trasaturi ale platformei .NET
Putem rezuma urmatoarele trasaturi ale platformei .NET:
• Dezvoltarea multilimbaj: Deoarece exista mai multe limbaje pentru aceasta platforma, este mai usor de implementat parti specifice ın limbajele cele mai adecvate. Numarul limbajelor curent implementate este mai mare decat 10. Aceasta dezvoltare are ın vedere si debugging-ul aplicatiilor dezvoltate ın mai multe limbaje.
• Independenta de procesor si de platforma: IL este independent de procesor. O data scrisa si compilata, orice aplicatie .NET (al carei management este facut de catre CLR) poate fi rulata pe orice platforma. Datorita CLR-ului, aplicatia este izolata de particularitatile hardware sau ale sistemului de operare.
• Managementul automat al memoriei: Problemele de tipul memory leakage nu mai trebuie sa preocupe programatorii; overhead-ul indus de catre mecanismul de garbage collection este suportabil, fiind implementat ın sisteme mult mai timpurii.
• Suportul pentru versionare: Ca o lectie ınvatata din perioada de “DLL Hell”, versionarea este acum un aspect de care se tine cont. Daca o aplicatie a fost dezvoltata ¸si testata folosind anumite componente, instalarea unei componente de versiune mai noua nu va atenta la buna functionare a aplicatiei ˆın discutie: cele doua versiuni vor coexista
pasnic, alegerea lor fiind facuta pe baza manifestelor.
• Sprijinirea standardelor deschise: Nu toate dispozitivele ruleaza sisteme de operare Microsoft sau folosesc procesoare Intel. Din aceasta cauza orice este strans legat de acestea este evitat. Se foloseste XML si cel mai vizibil descendent al acestuia, SOAP. Deoarece SOAP este un protocol simplu, bazat pe text, foarte asemanator cu HTTP5, el poate trece usor de firewall-uri, spre deosebire de DCOM sau CORBA.
• Distribuirea usoara: Actualmente instalarea unei aplicatii sub Windows ınseamna copierea unor fisiere ın niste directoare anume, modificarea unor valori ın registri, instalare de componente COM, etc.
Dezinstalarea completa a unei aplicatii este in majoritatea cazurilor o utopie. Aplicatiile .NET, datorita metadatelor si reflectarii trec de aceste probleme. Se doreste ca instalarea unei aplicatii sa nu ınsemne mai mult decat copierea fisierelor necesare ıntr-un director, iar dezinstalarea aplicatiei sa se faca prin stergerea acelui director.
• Arhitectura distribuita: Noua filosofie este de a asigura accesul la servicii Web distribuite; acestea conlucreaza la obtinerea informatiei dorite. Platforma .NET asigura suport si unelte pentru realizarea acestui tip de aplicatii.
• Interoperabilitate cu codul “unmanaged”: Codul “unmanaged” se refera la cod care nu se afla ın totalitate sub controlul CLR. El este rulat de CLR, dar nu beneficiaza de CTS sau garbage collection. Este vorba de apelurile functiilor din DLL-uri, folosirea componentelor COM, sau folosirea de catre o componenta COM a unei componente
.NET. Codul existent se poate folosi in continuare.
• Securitate: Aplicatiile bazate pe componente distribuite cer automat securitate. Modalitatea actuala de securizare, bazata pe drepturile contului utilizatorului, sau cel din Java, ın care codul suspectat este rulat ıntr-un “sandbox”, fara acces la resursele critice este ınlocuit ın .NET de un control mai fin, pe baza metadatelor din assembly (zona
din care provine – ex. Internet, intranet, masina locala, etc) precum si a politicilor de securitate ce se pot seta.
3.2 Prezentarea generala a aplicatiei
Aplicatia se doreste a fi una de tip sniffer ce ofera utilizatorului date referitoare la reteaua vizibila si date despre ip-urile din reteaua vizibila.
Fig. Forma principala
3.2.1 Forma principala (NetMonitor) cuprinde:
un textbox cu ajutorul caruia se selecteaza interfata folosita
un filtru de tipul from-to cu ajutorul caruia se face selectia intervalului de IP-uri inainte de pornirea capturii
un filtru de tipul select IP, dupa care se face sortarea unei liste (dupa popularea acesteia cu date)
zona de butoane(Start/Stop, Filter List, Save File, About si Exit)
zona de afisare de tip listview
Ca proprietati ale formei implicite la pornire mentionez:
focusul pe selectia interfetei
dezactivarea butonului “Filter List”(conditiile de activare sunt: butonul Start/Stop pe Start, checkbox-ul de la filtrul corespunzator, selectat si existenta de date in lista)
marimea de pornire a aplicatie (setata si ca dimensiune minima)
localizarea formei la pornire de tip “CenterScreen”
Am incercat folosirea unei teme familiare utilizatorului de Windows, in vederea acomodarii usoare a acestuia cu aplicatia.
3.2.2 Forma user (User information)
La efectuarea unui dublu click pe unul din IP-urile din lista formei principale se declaseaza captura datelor referitoare la IP-ul selectat si acestea sunt afisate in forma “User information”.
Fig. Forma “User information”
Aceasta forma cuprinde:
zona de butoane(WhoIs, Refresh, Save File si Exit)
zona de informatii despre IP-ul selectat
zona de controale grafice (Total trafic, Upload si Download pt IP-ul selectat)
3.3 Clase componente.
3.3.1 Form1.cs
Aceasta forma este cea principala si contine:
functiile butoanelor
functia de captura a datelor (OnReceive)
functia de populare a listei
functia double click
functiile de filtrare
functia de dimensionare
functia de resize
functia timer de referesh a butonului “Filter List”.
3.3.1.1 Start/Stop
Dintre functiile butoanelor cea mai importanta este cea a butonului Start/Stop si care verifica daca se foloseste primul filtru, si incearca popularea listei (prima oara o curate – lview.Items.Clear();), atata timp cat conditia este indeplinita
(if (!bContinueCapturing)) si mesajele de eroare in cazurile in care conditiile nu sunt indeplinite.
private void btn1_Click(object sender, EventArgs e)
{
btn1.Text = "Stop";
if (ckbox1.Checked == true)
{
IPAddress SomeIP = new IPAddress(0);
if (!(IPAddress.TryParse(txtbox1.Text, out SomeIP)))
{
MessageBox.Show("IP format limits necessary!", "NetMonitor Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
else
IPIn = IPToInt(SomeIP);
if (!(IPAddress.TryParse(txtbox2.Text, out SomeIP)))
{
MessageBox.Show("IP format limits necessary!", "NetMonitor Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
else
IPOut = IPToInt(SomeIP);
FilterIP = true;
}
if (cboxin.Text == "")
{
MessageBox.Show("Select an Interface to capture the packets.", "NetMonitor Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
btn1.Text = "Start";
return;
}
try
{
if (!bContinueCapturing)
{
lview.Items.Clear();
//Start capturing the packets…
bContinueCapturing = true;
//For sniffing the socket to capture the packets has to be a raw socket, with the
//address family being of type internetwork, and protocol being IP
mainSocket = new Socket(AddressFamily.InterNetwork,
SocketType.Raw, ProtocolType.IP);
//Bind the socket to the selected IP address
mainSocket.Bind(new IPEndPoint(IPAddress.Parse(cboxin.Text), 0));
//Set the socket options
mainSocket.SetSocketOption(SocketOptionLevel.IP,
//Applies only to IP packets
SocketOptionName.HeaderIncluded, //Set the include the header
true); //option to true
byte[] byTrue = new byte[4] { 1, 0, 0, 0 };
byte[] byOut = new byte[4] { 1, 0, 0, 0 }; //Capture outgoing packets
//Socket.IOControl is analogous to the WSAIoctl
method of Winsock 2
mainSocket.IOControl(IOControlCode.ReceiveAll, //Equivalent to SIO_RCVALL constant
//of Winsock 2
byTrue,
byOut);
//Start receiving the packets asynchronously
mainSocket.BeginReceive(byteData, 0,
byteData.Length, SocketFlags.None,
new AsyncCallback(OnReceive), null);
}
else
{
btn1.Text = "Start";
bContinueCapturing = false;
//To stop capturing the packets close the socket
mainSocket.Close();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "NetMonitor Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
3.3.1.2 Functia de dimensiuni initiale
Prin aceasta functie stabilim dimensiunile si locatiile initiale ale elementelor componente ale formei (sau definit o serie de constante pentru usurarea calculelor):
public void initDim()
{
int a = 0;
int b = 0;
int c = 0;
int d = 0;
int f = 0;
a = ClientSize.Width;
b = ClientSize.Height;
c = 3;
d = 115;
f = b – 10;
gbox1.Left = c;
gbox2.Left = d + 2 * c;
gbox3.Left = d + 2 * c;
gbox4.Left = gbox3.Right + 4;
gbox1.Width = d;
gbox2.Width = a – d – 3 * c;
gbox4.Width = gbox2.Width – gbox3.Width – 4;
gbox1.Top = 0;
gbox2.Top = gbox3.Bottom – 5;
gbox3.Top = 0;
gbox4.Top = 0;
gbox1.Height = f + 5;
gbox2.Height = gbox1.Height – gbox3.Height + 4;
btn1.Width = gbox1.Width – 10;
btn2.Width = gbox1.Width – 10;
btn3.Width = gbox1.Width – 10;
btn5.Width = gbox1.Width – 10;
btn6.Width = gbox1.Width – 10;
btn1.Left = (d – btn1.Width) / 2;
btn2.Left = (d – btn1.Width) / 2;
btn3.Left = (d – btn1.Width) / 2;
btn5.Left = (d – btn1.Width) / 2;
btn6.Left = (d – btn1.Width) / 2;
lbl1.Left = (gbox1.Width – lbl1.Width) / 2;
cboxin.Left = (gbox1.Width – cboxin.Width) / 2;
lbl1.Top = gbox1.Top + 25;
cboxin.Top = lbl1.Bottom + 10;
btn1.Top = cboxin.Bottom + 20;
btn2.Top = btn1.Bottom + 20;
btn3.Top = btn2.Bottom + 20;
btn5.Top = btn3.Bottom + 20;
btn6.Top = btn5.Bottom + 20;
lview.Width = gbox2.Width – 10;
lview.Left = (gbox2.Width – lview.Width) / 2;
lview.Height = gbox2.Height – 18;
}
Functia de resize nu face decat sa apeleze tot aceasta functie determinand revenirea dimensiunilor la cele de start ale formei.
3.3.1.3 Save File
Aceasta functie salveaza continutul listei int-un fisier tip txt intr-un director definit in cod:
private void btn3_Click(object sender, EventArgs e)
{
saveFileDialog1.InitialDirectory = @”C:\Documents and Settings\George\Desktop”;
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
using (StreamWriter fall = new StreamWriter( File.Create(saveFileDialog1.FileName)))
{
Int32 CrtPos;
object[] Values = new object[lview.Columns.Count];
foreach (ListViewItem item in lview.Items)
{
CrtPos = 0;
foreach (ListViewItem.ListViewSubItem CrtSubItem in item.SubItems)
Values[CrtPos++] = CrtSubItem.Text;
fall.Write(String.Format(“{0}:{1} -> {2}:{3} Protocol {4} Lungime {5}B Tip {6} ({7})\r\n”,Values));
}
fall.Dispose();
}
}
Formatul in care apar datele in cadrul fisierului pastreaza pe cel din forma principala a aplicatiei.
3.3.1.4 Functia de populare a listei
Aceasta functie populeaza lista cu datele capturate, popularea facandu-se in
functie de protocolul folosit cu ajutorul unui switch. Coloanele listei sunt:
IP Source – arata IP-ul sursei
Source Port – arata portul folosit de catre IP-ul sursa folosit la transmiterea mesajului
IP Destination – arata IP-ul catre care este trimis mesajul
Destination Port – arata portul folosit de catre IP-ul destinatar pentru receptionarea mesajului
Protocol – arata protocolul folosit in cadrul transmisiei de date
Length(bates/s) – arata lungimea pachetului in bytes/s
Flag type – arata tipul pachetului
Time – data si ora transmiterii pachetului
private void ParseData(byte[] byteData, int nReceived)
{
IPHeader ipHeader = new IPHeader(byteData, nReceived);
if ((FilterIP) && (!(IPIsFiltered(ipHeader.SourceAddress))) && (!(IPIsFiltered(ipHeader.DestinationAddress))))
return;
ListViewItem CrtItem = lview.Items.Add(ipHeader.SourceAddress.ToString());
switch (ipHeader.ProtocolType)
{
case Protocol.TCP:
TCPHeader tcpHeader = new TCPHeader(ipHeader.Data, ipHeader.MessageLength);
CrtItem.SubItems.Add(tcpHeader.SourcePort.ToString());
CrtItem.SubItems.Add(ipHeader.DestinationAddress.ToString());
CrtItem.SubItems.Add(tcpHeader.DestinationPort.ToString());
CrtItem.SubItems.Add(“TCP”);
CrtItem.SubItems.Add(tcpHeader.MessageLength.ToString());
CrtItem.SubItems.Add(tcpHeader.Flags.ToString());
CrtItem.SubItems.Add(DateTime.Now.ToString());
break;
case Protocol.UDP:
UDPHeader udpHeader = new UDPHeader(ipHeader.Data, (int)ipHeader.MessageLength);
CrtItem.SubItems.Add(udpHeader.SourcePort.ToString());
CrtItem.SubItems.Add(ipHeader.DestinationAddress.ToString());
CrtItem.SubItems.Add(udpHeader.DestinationPort.ToString());
CrtItem.SubItems.Add(“UDP”);
CrtItem.SubItems.Add(udpHeader.Length.ToString());
CrtItem.SubItems.Add(“Datagram”);
CrtItem.SubItems.Add(DateTime.Now.ToString());
break;
case Protocol.Unknown:
CrtItem.SubItems.Add(“Unknown”);
CrtItem.SubItems.Add(“Unknown”);
CrtItem.SubItems.Add(“Unknown”);
CrtItem.SubItems.Add(“Unknown”);
CrtItem.SubItems.Add(“Unknown”);
CrtItem.SubItems.Add(“Unknown”);
CrtItem.SubItems.Add(“Unknown”);
break;
}
}
Lista este populate la nivel de element. Functia contine si o posibilitate de populare a listei in cazul in care prorocolul nu este nici TCP si nici UDP (caz denumit “Unknown”).
3.3.1.5 Functia timer pt refresh-ul butonului “Filter List”
Aceasta verifica in primul rand indepinirea conditiilor de activare a butonului modificand o varianta booleana in functie de indeplinirea conditiei sau nu.
private void timer1_Tick(object sender, EventArgs e)
{
if (lview.Items.Count > 0 && btn1.Text == "Start" &&
ckbox2.Checked == true)
{
btn2.Enabled = true;
}
else
{
btn2.Enabled = false;
}
}
Butonul “About” activeaza deschiderea formei “About”, forma in care sunt prezentate datele necesare.
3.3.2 User.cs
Aceasta forma prezinta informatii despre IP-ul selectat din lista formei Form1. Informatiile sunt de tip text si de tip graphic.
3.3.2.1 Functia WhoIs
Este declansata de apasarea butonului “WhoIs” si ofera informatii on-line despre IP-ul selectat din lista formei Form1.
private void btn7_Click(object sender, EventArgs e)
{
Process.Start("http://whois.domaintools.com/" +
IP.ToString());
}
3.3.2.2 Functia timer
Aceasta functie timer, din aceasta forma, permite refresul datelor afisate in controalele grafice de tip DataChart (user control) si a celor din label-urile ce afiseaza date in mod dinamic.
private void timer1_Tick(object sender, EventArgs e)
{
double speedUpload = upload – oldUpload;
double speedDownload = download – oldDownload;
double speedTotal = total – oldTotal;
oldUpload = upload;
oldDownload = download;
oldTotal = total;
dataChart2.UpdateChart(speedUpload);
dataChart3.UpdateChart(speedDownload);
dataChart1.UpdateChart(speedTotal);
lbl1.Text = "Packets : " + nTCP + " TCP, " + nUDP + " UDP";
lbl2.Text = "Time capture: " + (DateTime.Now –
tnow).Seconds + " s";
lbl5.Text = speedTotal.ToString()+ " B/s";
lbl7.Text = speedUpload.ToString() + " B/s";
lbl9.Text = speedDownload.ToString() + " B/s";
}
3.3.2.3 Functia de dimensionare si pozitionare initiala a formei
Aceasta functie, ca si cea precedenta, ofera pozitionarea initiala a formei, dimensionarea ei si a controaleleor ce sunt cuprinse.
public void initDimUser()
{
btn7.Top = gbox4.Top + 15;
btn8.Top = btn7.Bottom + 20;
btn9.Top = btn8.Bottom + 20;
btn10.Top = btn9.Bottom + 20;
btn7.Left = (gbox4.Width – btn7.Width) / 2;
btn8.Left = (gbox4.Width – btn8.Width) / 2;
btn9.Left = (gbox4.Width – btn9.Width) / 2;
btn10.Left = (gbox4.Width – btn10.Width) / 2;
}
3.3.2.4 Functia de scriere
In aceasta forma, scrierea se face intr-un control de tip listbox si datele afisate de acesta in cazul protocolului TCP, sunt:
IP-ul selectat din lista formei Form1
Source port – portul folosit pentru transmiterea pachetului
Protocol – protocolul folosit la transmiterea pachetului
Version – versiunea de protocol folosita
Message Length – lungimea mesajului(a pachetului)
Header Length – lungimea antetului
Checksum – suma de control (4 bytes)
Total length – lungimea totala a pachetului
Sequence number – numarul secventei, numarul pachetului din intregul mesaj
Identification – determina un user pentru o anume conexiune TCP
Fragmentation offset – determina daca pachetul este fragmentat sau nu (se fragmenteaza in cazul in care marimea pachetului este mai mare decat permite interfata) si difera de 0 atunci cand pachetul este fragmentat si egal cu 0 cand pachetul nu este fragmentat.
TTL – Time to live – este o limita de perioada si in Internet Protocol este reprezentat pe 8 biti si este al 9-lea octet (din 20) ai headerului.
In cazul protocolului UDP controlul listbox va afisa urmatoarele informatii:
IP-ul selectat din lista formei Form1
Source port – portul folosit pentru transmiterea datagramei
Protocol – protocolul folosit la transmiterea datagramei
Version – versiunea de protocol folosita
Length – lungimea mesajului
Header Length – lungimea antetului mesajului
Cheksum – suma de control (4 bytes)
Total Length – lungimea totala a mesajului
Identification – determina un user pentru o anume conexiune TCP
Fragmentation offset – determina daca pachetul este fragmentat sau nu (se fragmenteaza in cazul in care marimea pachetului este mai mare decat permite interfata) si difera de 0 atunci cand pachetul este fragmentat si egal cu 0 cand pachetul nu este fragmentat.
TTL – Time to live – este o limita de perioada si in Internet Protocol este reprezentat pe 8 biti si este al 9-lea octet (din 20) ai headerului.
Apasarea butonului de refresh are ca efect actualizarea datelor din cadrul
controlului listbox.
Celelalte functii cuprinse in clasa User.cs sunt similare cu cele din clasa
Form1.cs.
DataChart.cs
Aceasta clasa cuprinde dfinirea unui user control pentru afisarea grafica a unor informatii.
In regiune “Properties” se definesc toate proprietatile necesare desenarii si anume:
colorLine – culoarea de desenare
GridColor – culoarea gridului
InitialHeight- inaltimea initiala de desenare
chartType – tipul de reprezentare folosit (stick sau line)
GridPixels – stabileste distanta (in pixeli) dintre liniile gridului
Functia de desenare preia setarile de mai sus si face desenarea controlului in care introduce si datele de reprezentat.
protected override void OnPaint(PaintEventArgs e)
{
int count = _arrayList.Count;
if (count == 0) return;
double y = 0, yMax = InitialHeight;
for (int i = 0; i < count; i++)
{
y = Convert.ToDouble(_arrayList[i]);
if (y > yMax) yMax = y;
}
// se deseneaza dreptunghiul
Rectangle rt = this.ClientRectangle;
y = yMax == 0 ? 1 : rt.Height / yMax; // y ratio
int xStart = rt.Width;
int yStart = rt.Height;
int nX, nY;
Pen pen = null;
//se stabileste culoarea de background a controlului
e.Graphics.Clear(BackColor);
//desenarea propiu-zisa a controlului
if (GridPixels != 0)
{
pen = new Pen(GridColor, 1);
nX = rt.Width / GridPixels;
nY = rt.Height / GridPixels;
for (int i = 1; i <= nX; i++)
e.Graphics.DrawLine(pen, i * GridPixels, 0, i *
GridPixels, yStart);
for (int i = 1; i < nY; i++)
e.Graphics.DrawLine(pen, 0, i * GridPixels, xStart,
i * GridPixels);
}
// From the most recent data, so X <–––––|
// Get data from _arrayList a[0]..<–…a[count-1]
// “Desenarea” datelor pe control cu alegerea tipului de desenare
if (ChartType == ChartType.Stick)
{
pen = new Pen(LineColor, 2);
for (int i = count – 1; i >= 0; i–)
{
nX = xStart – 2 * (count – i);
if (nX <= 0) break;
nY = (int)(yStart – y *
Convert.ToDouble(_arrayList[i]));
e.Graphics.DrawLine(pen, nX, yStart, nX, nY);
}
}
else
if (ChartType == ChartType.Line)
{
pen = new Pen(LineColor, 1);
int nX0 = xStart – 2;
int nY0 = (int)(yStart – y *
Convert.ToDouble(_arrayList[count – 1]));
for (int i = count – 2; i >= 0; i–)
{
nX = xStart – 2 * (count – i);
if (nX <= 0) break;
nY = (int)(yStart – y *
Convert.ToDouble(_arrayList[i]));
e.Graphics.DrawLine(pen, nX0, nY0, nX, nY);
nX0 = nX;
nY0 = nY;
}
}
base.OnPaint(e);
}
About.cs
Aceasta este forma de prezentare a informatiilor despre aplicatie si programator.
private void About_Load(object sender, EventArgs e)
{
lbl4.Text = "Author:"+"\n"+" ing. Gheorghe
Parasca"+"\n"+" iunie 2008";
btn7.Left = (ClientSize.Width – btn7.Width) / 2;
}
IPHeader.cs
Aceasta clasa citeste si returneaza campurile specifice IP-ului, definite dupa cum
urmeaza:
– byVersionAndHeaderLength //Versiunea si lungimea headerului (8 biti)
– byDifferentiatedServices //Type of services – headerul datagramei (8 biti)
-usTotalLength //Lungimea totala a datagramei(16 biti)
-usIdentification //Identificare
-usFlagsAndOffset //Tipul flagului si fragmetare(8 biti)
-byTTL //Time to live(TTL) (8 biti)
-byProtocol //Tipul protocolului (8 biti)
-sChecksum //Suma de control (16 biti)
-uiSourceIPAddress //IP-ul sursa (32 biti)
-uiDestinationIPAddress //IP-ul destinatie (32 biti)
Tot aceasta clasa stabileste versiunea protocolului folosit :
public string Version
{
get
{
//Calculate the IP version
//The four bits of the IP header contain the IP version
if ((byVersionAndHeaderLength >> 4) == 4)
{
return "IP v4";
}
else if ((byVersionAndHeaderLength >> 4) == 6)
{
return "IP v6";
}
else
{
return "Unknown";
}
}
}
TCPHeader.cs
Aceasta clasa citeste si returneaza campurile specifice protocolului TCP, definite
dupa cum urmeaza:
-usSourcePort //Portul sursa (16 biti)
-usDestinationPort //Portul destinatie (16 biti)
-uiSequenceNumber //Numarul de secventa (32 biti)
-uiAcknowledgementNumber //Urmatorul byte asteptat (32 biti)
-usDataOffsetAndFlags //Tipul flagului sau marimea headerului (16
biti)
-usWindow //Marimea ferestrei(16 biti)
-sChecksum //suma de control (16 biti)
-usUrgentPointer //Pointerul pentru urgente (16 biti)
-byHeaderLength //Lungimea headerului
-usMessageLength //Lungimea mesajului
-byTCPData //marimea pachetului de date
UDPHeader.cs
Aceasta clasa citeste si returneaza campurile specifice protocolului UDP, definite
dupa cum urmeaza:
– usSourcePort; //Portul sursa
– usDestinationPort; //Portul destinatie
– usLength; //Lungimea header-ului UDP
– sChecksum; //suma de control (16 biti)
Mentionez ca in cazul protocolului UDP obiectul transmis este datagrama si nu
pachetul ca in cazul protocolului TCP.
Capitolul 4
Directii posibile de dezvoltare a aplicatiei. Concluzii.
In cazul in care se impune se poate face si decriparea mesajelor si vizualizarea lor. (atentie laincalcarea dreptului la intimidate a utilizatorului).
O alta functionalitate ce s-ar putea adauga ar fi cea de filtrare a pachetelor in functie de tipul lor (extensia).
In cazul in care se doreste ca aplicatia sa intervina in mod dinamic in retea ( sa constituie un manager de retea) se pot adauga functionalitati ca :
posibilitatea de restrictionare a accesului la retea;
posibilitatea de restrictionare a tipului protocoalelor;
posibilitatea de limitare a benzii allocate fiecarui IP ( pentru un management efficient al retelei in functie de necesitatile userilor si nu impartirea egala a benzii);
Concluzii
Aplicatia se adreseaza specialistilor in domeniu datorita informatiilor pe care le releva, dar cu o minima instruire poate fi un instrument capabil si in mana celor cu mai putina pricepere.
Aplicatia poate constitui un instrument puternic in supravegherea unei mici retele, din informatiile obtinute putandu-se identifica cine din retea acceseaza netul si ce anume acceseaza.
Aplicatia poate salva datele obtinute (in format txt) pentru o evauare ulterioara.
Bibliografie
Documentele RFC
http://tools.ietf.org/
http://www.rfc-editor.org/categories/rfc-standard.html
Internet Assigned Numbers Authority
http://www.iana.org/assignments/port-numbers
http://www.referat-e.ro/Referat-Securitatea_Internetului_Worm-10324.html
http://www.eff.org/
http://wapedia.mobi/ro/IP
– http://en.wikipedia.org/wiki/Transmission_Control_Protocol
Curs “Criptarea si securitatea informatiei”, Sef lucrari univ. dr. ing. Cerlinca Marius, Univeristatea “Stefan cel Mare”, Faculatatea de Inginerie Electrica si Stiinta Calculatoarelor, Suceava
Curs “Ingineria Programarii”, Conferentiar univ. dr. ing. Cristina Turcu, Univeristatea “Stefan cel Mare”, Faculatatea de Inginerie Electrica si Stiinta Calculatoarelor, Suceava
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Managementul Retelelor Wireless (ID: 148872)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
