Aspecte Despre Protocolul Tcp Ip

Cap. 1 Introducere

Prezentarea temei. Scopul lucrării.

O parte esențială și vitală din istoria civilizației umane este comunicarea. Fiind înzestrați cu capacitatea de a se relaționa, oamenii au comunicat din cele mai vechi timpuri, sub o formă sau alta. De la început ca și până astăzi vorbirea (capacitatea de a articula sunete) a fost instrumentul cel mai important pentru comunicare .

Dictionarul limbii române definește termenul comunicare astfel: 1. acțiunea de a comunica, 2. înștiințare, veste, știre, contact, relație, legătură.

Există o deosebire între comunicare și comunicație. Comunicația este: 1. Mijlocul de comunicare între două puncte diferite, 2. legătură, contact, sistem tehnic folosit pentru realizarea comunicației. Altfel spus comunicația este suportul fizic pe baza căruia se face posibilă comunicarea.

Dacă în vechime oamenii, care se aflau la o anumită distanță, când doreau să comunice ceva semenilor lor făceau un foc, iar fumul ce se ridica era un semn ce confirma sau infirma un anumit fapt, sau trimiteau porumbei ca și niște veritabili poștași care duceau diferite mesaje, astăzi trăim momente când metodele de a comunica sunt mult mai diversificate și sofisticate.

Odată cu dezvoltarea tehnologică au apărut noi forme de a comunica, astfel că între anii 1832-1844 apare telegrafia, mai apoi în anul 1876 telefonia, în anul 1895 radioul, apoi televiziunea în anul 1884, iar în cele din urmă în 1982 apare internetul.

Astăzi rețelele de comunicații reprezintă o realitate cotidiană pentru fiecare dintre noi indiferent de vârstă, în toate domeniile de activitate (comercial, financiar-bancar, administrativ, educațional, medical, militar etc.), dar și în mediul familial.

Fără a depinde de mediul fizic prin care se realizează (cablu metalic, fibră optică sau mediul wireless) sau de specificul rețelei de transmisie a informațiilor (de calculatoare, de telefonie fixă sau mobilă, de televiziune prin cablu, de distribuție a energiei electrice), securitatea comunicațiilor reprezintă un aspect esențial al serviciilor oferite, fiind critică în cazul informațiilor cu caracter secret din aplicații fianciar-bancare, militare, guvernamentale și nu numai acestea.

Se identifică mai multe aspecte ale securității unei rețele (securizarea accesului fizic și logic, securitatea serviciilor de rețea, secretizarea informațiilor) care se exprimă prin diverși termeni specifici: autentificare, autorizare, asociere cu un cont de utilizator și audit (AAAA – Authentication, Authorization, Accounting, Auditing), confidențialitate, robustețe.

Scopul acestei lucrări este acela de a trece în revistă câteva din aceste aspecte, de a analiza riscuri și vulnerabilități specifice unei rețele de calculatoare, precum și câteva soluții și strategii, tehnici și protocoale de securitate, punând baza pe criptografia datelor, arătată și prin partea pratică unde este prezentată aplicabilitatea algoritmului AES pentru criptare/decriptare.

Lucrarea de diplomă are următoarea structură:

– în cap.2 sunt prezentatefundamente teoretice despre rețelele de calculatoare utilizate în vederea elaborării aplicației, de la noțiuni generale până la a prezenta practic prin mici exemple proiectarea unei astfel de rețele.

– cap.3 conține aspecte de securitateprivind rețelele de calculatoare, totodată sunt menționate aspecte legate de criptografiere și descrierea criptării și a decriptării folosind algoritmul AES.

– cap.4 este prezentat modul de proiectare și implementare al standardului AES (192/256).

-iar în cap.5 aplicația concretă a algoritmului AES care este folosit pentru criptare/decriptare.

– bibliografia constituie o enumerare sub o formă bine precizată a lucrărilor folosite pentru elaborarea proiectului.

Cap. 2. Fundamente teoretice despre rețele de calculatoare utilizate în vederea elaborării aplicației.

2.1. Aspecte generale

În “lumea” calculatoarelor o rețea este practice o interfațare între două sau mai multe dispositive de calcul, în scopul schimbului de date. Rețelele de calculatoare sunt constituite atât dintr-o parte hardware cât și una software.

Deoarece în lucrarea de față nu mi-am propus să dezvolt noțiuni despre rețele la modul general(acestă lucrare pune accentul pe securitatea în rețele de calculatoare), voi enumera doar câtea dintre caraceristicile rețelelor de calculatoare.

O rețea de calculatoare, poate dispune de calculatoare legate între ele atât prin cabluri, linii telefonice cât și prin unde radio, sateliți sau chiar fascicole de lumină prin infraroșu. Orice rețea utilizează ca și echipament două piese esențiale: switch-uri și routere. Aceste elemente permint dispozitivelor conectate într-o rețea să comunice între ele.

Indiferent că vorbim despre rețele de calculatoare după întinderea lor geografică (LAN, MAN,WAN) sau după tipologia în care sunt alcătuite (inel, stea, bus) sau după priectarea lor (client/server, peer-to-peer), aspectul poate cel mai important pentru orice utilizator al unei rețele de calculoatoare îl reprezintă securitatea acestei rețele.

2.2. Aspecte despre protocolul TCP/IP.

Protocolul TCP/IP este standard pentru Internet datorită unor caracteristici, și anume:

permite comunicarea într-un mediu eterogen, deci se preteaza foarte bine pentru conexiunile din Internet (care este o rețea de rețele eterogene atât din punct de vedere hardware, cât si software);

furnizează un protocol de rețea rutabil, pentru rețele mari, fiind folosit din acest motiv drept protocol de interconectare a acestor rețele.

TCP/IP este o suită de protocoale, dintre care cele mai importante sunt TCP și IP, care a fost transformat în standard pentru Internet de către Secretariatul pentru Apărare al Statelor Unite, și care permite comunicația între rețele eterogene (interconectarea rețelelor).

Modelul de referință ISO/ OSI definește șapte niveluri pentru proiectarea rețelelor, pe când modelul TCP/ IP utilizează numai patru din cele șapte niveluri, după cum se vede din figura de mai jos(Fig.2.1).

Familia de protocoale TCP/IP are o parte stabilă, dată de nivelul Internet (rețea) și nivelul transport, și o parte mai puțin stabilă, nivelul aplicație, deoarece aplicațiile standard se diversifică mereu.

Tehnologia TCP/IP nu este proprietarea nici unei cmpanii, societăți profesionale sau organism de standardizare. Ca atare, documentațiile privind protocoalele, standardele și politicile de organizare și dezvoltare nu pot fi procurate de la un anume distribuitor. În schimb, NSF alocă fonduri unui grup anume constituit în cadrul companiei American Telephone and Telegraph (AT&T) ca să mențină și să distribuie informații privind TCP/IP si Internet-ul global. Inițial numit Network Information Center(NIC), acest grup este cunoscut azi sub numele de Internet Network Information Center (INTERNIC) și se ocupă nu numai de distribuirea documentațiilor ci și de detaliile privind administrarea Internet-ului.

Rapoartele privitoare la activitatea în și pentru Internet, propunerile pentru noi protocoale sau revizuirea lor, precum și standardele cu protocoalele TCP-IP apar într-o serie de rapoarte tehnice numite solicitări de comentarii [ Requests for Comments (RFC)]. Aceste rapoarte sunt numerotate în ordinea cronologică a redactării lor. RFC-urile revizuite sau actualizate poartă, deci, un nou număr de ordine.

Pentru găsirea mai rapidă a RFC-urilor de către cei interesați, numeroase site-uri din lume păstrează copii ale acestor rapoarte, ținându-le la dispoziția publicului. Ele pot fi obținute direct din Internet ( folosind un protocol de transfer de fișiere) sau prin poșta electronică ori prin poștă, la solicitare, de la INTERNIC.

Modelul OSI Modelul TCP/IP

Fig. 2.1 Comparație între modelele OSI și TPC/IP

În ceea ce privește nivelul gazdă-la-rețea (echivalentul nivelul fizic si legătură de date din modelul OSI), cel mai de jos nivel din cele patru, aceasta este mai puțin dependent de TCP/ IP

și mai mult de driver-ele de rețea și al plăcilor de rețea. Acest nivel face ca funcționarea nivelului imediat superior, nivelul Internet, să nu depindă de rețeaua fizică utilizată pentru comunicații și de tipul legăturii de date. Protocoalele din familia TCP/ IP tratează toate rețelele la fel[Tan97].

De aici rezultă un concept fundamental pentru rețelele TCP/ IP, și anume acela că, din punct de vedere al unei rețele globale, orice sistem de comunicații capabil să transfere date contează ca o singură rețea, indiferent de caracteristicile sale. Strategia de a construi nivelurile unui protocol se numește layering.

Toată rețeaua TCP/ IP (Internet-ul) este organizată dintr-un număr foarte mare de rețele mici care comunică între ele prin așa numitele porți (gateway), care sunt calculatoare ce se ocupă de interconectarea rețelelor care vor ieși în Internet, una dintre atribuțiile lor fiind si aceea de a ruta informația. TCP/ IP este construit ca fiind o secventă de datagrame.

O datagramăeste o colecție de date ce sunt trimise ca un singur mesaj; este o unitate de date si reprezintă obiectul cu care lucrează protocolul. Unpachet este un cumul de datagrame, ce apare pe Ethernet, linii telefonice sau alte tipuri de conexiuni fizice.

Fig. 2.2 Nivelurile modelului TCP/IP

O comparație între modelul OSI și modelul TCP/IP, precum și protocoalele mai importante din suita de protocoale TCP/IP este evidentiată în fig 2.3.

Fig.2.3. Arhitectura de protocoale TCP/IP

Nivelul gazdă- la-rețea

Despre acest nivel (numit și interfață- rețea) modelul TCP/ IP nu spune mare lucru despre ceea ce ar trebui să se întâmple aici, singura mențiune este aceea că o gazdă trebuie să se lege la rețea, pentru a putea transmite date, folosind un anumit protocol. Acest protocol nu este definit și nu variază de la gazdă la gazdă și de la rețea la rețea. Acest nivel face ca funcționarea nivelului superior, numit Internet si respectiv, rețea, să nu depindă de rețeaua fizică utilizată în comunicatie și de tipul legăturii de date. Internet-ul constă din calculatoare individuale (gazde si ruter-e) și o infrastructură de comunicație care le conectează. În cadrul unei singure clădiri sunt utilizate LAN-uri pentru interconectare, dar infrastructura este construită din linii închiriate, punct-la-punct[Crs09].

În practică, comunicația punct-la-punct este utilizată în principal în două situații:

în primul rând, mii de organizații au una sau mai multe LAN-uri, fiecare cu un anumit număr de calculatoare gazdă și un ruter.Internet-ul este construit din aceste rutere și liniile lor închiriate care realizează subrețelele de comunicație;

a doua situație în care liniile punct-la-punct joacă un rol major în internet o reprezintă milioanele de utilizatori individuali care au conexiuni de acasă la Internet folosind modem-uri și linii telefonice commutate.

Indiferent de modul de conectare la Internet, este necesar un protocol de legătură de date

punct-la-punct pentru încadrare, controlul erorilor și ale funcții.

La acest nivel evoluția protocoalelor este impulsionată de evoluția extrem de rapidă a tehnologiilor de comunicație, care introduc tipuri de legături cu viteze din ce în ce mai mari. Astefel, vom întâlnii linii telefonice închiriate, lucrând la viteze de 57,5 Kbps, cât si fibre optice de 1,544 Mbps. În momentul de față majoritatea calculatoarelor care utilizează TCP/ IP în rețele locale folosesc conexiuni Ethernet cu viteze cuprinse între 10 Mbps și 100 Mbps (rețele Fast-Ethernet).

Protocoalele de la acest nivel gestionează conexiunea la internet, începând cu sistemele de autentificare la server și terminând cu modemurile de transmisiea pachetelor de date.

La acest nivel sunt utilizate două protocoale, utilizate pentru conectarea la Internet și Web prin intermediul modemului:

SLIP (Serial Line Internet Protocol-protocol Internet pe linie serială)

Permite legături seriale asincrone, este cel mai vechi protocol și el definește o secvență de caractere pentru pachetele IP.

Dintre lipsurile acestui protocol enunțăm: nu face nici un fel de detecție sau corecție a erorilor; suportă doar protocolul IP; fiecare sistem trebuie să cunoască dinainte adresa IP a celuilalt sistem, nici o adresă nu poate fi ascociată dynamic; nu este un standard Internet aprobat; nu furnizează nici o formă de autentificare. Ceea ce trebuie reținut, din punct de vedere al unui utilizator al Internet-ului, este faptul că acest tip de legătură necesită o adresă fixă Internet pentru calculator, care este atribuită de provider-ul de servicii Internet. Acest protocol este utilizat în mod normal pentru linii dedicate și uneori pentru dial-up, iar ca viteză variază între 1200 bps si 19,2 Kbps;

PPP (Point to Point Protocol- protocol punct-la-punct) este un protocol mai robust decât SLIP, care rezolvă toate deficiențele protocolului SLIP și reprezintă un standard Internet. Acest protocol este definit de RFC-urile 1661,1662 si 1663. Este un protocol pentru comunicații între două calculatoare care folosește o interfață serială, utilizat în mod frecvent pentru conectarea la un server. Protocolul PPP, spre deosebire de SLIP, poate coordona mai multe tipuri de protocoale în același timp. Este utilizat din ce în ce mai mult, datorită faptului că permite legarea atât pe legături seriale asincrone, suportă mai multe

protocoale, permite ca adresele IP să fie negociablile în momentul conectării, permite autentificarea, etc. În cazul utilizării acestui tip de legătură, acordarea unei adrese se realizează automat, în momentul stabilirii legăturii la Internet[PilPop 94].

Un posibil scenariu ar arăta în felul următor: calculatorul apelează mai întâi ruter-ul ISP-ului prin intermediul unui modem. După ce modemul a răspuns apelului telephonic si s-a stability o conexiune fizică, calculatorul trimite ruter-ului o serie de pachete LCP (Link Control Protocol- este un protocol de legătură pentru a obține liniile, a le testa, a negocia opțiunile și pentru a elibera liniile atunci când nu mai este nevoie de ele).

După ce parametrii s-au stability de comun accord, sunt trimise mai multe pachete NCP (Network Control Protocol) pentru a negocia opțiunile nivelului rețea într-un mod independent de protocol folosit pentru nivelul rețea; avem câte un NCP pentru fiecare nivel de rețea suportat. Presupunem că sistemul vrea să ruleze o suită de protocoale TCP/ IP si va avea nevoie de adresa IP. Furnizorul asociază o adresă IP dinamică sistemului. NCP pentru IP este folosit pentru a realiza asocierea adreselor IP. Din acest moment calculatorul este un calculator gazdă Internet si poate trimite si primi pachete IP.

Când utilizatorul termină transmisia, NCP este folosit pentru a întrerupe conexiunea la nivelul legăturii de date. Trebuie subliniat faptul că între adresa IP și cea de rețea nu se află nici o legătură.Nivelul gazdă-la-rețea depinde mai puțin de protocolul TCP/ IP și maqi mult de driver-ele de rețea și al plăcilor de rețea.

Nivelul Internet

Nivelul Internet încapsulează pachetul într-o datagramă IP, completează antetul datagramei, utilizează algoritmul de dirijare pentru a determina dacă să livreze datagrama direct sau să o trimită unui router și pasează datagrama interfeței de rețea corespunzătoare pentru a fi transmisă.[CrS09]

Tot nivelul internet este cel care tratează datagramele care sosesc, verificându-le validitatea, și utilizează algoritmul de dirijare pentru a decide dacă datagrama trebuie prelucrată local sau trebuie trimisă mai departe.

Acest nivel corespunde nivelului Rețea al modelului OSI.

Adresele IP sunt date static de către administrator sau dinamic de DHCP sau BOOTP și depind de soft-ul de rețea .

Când se trimit sau primesc date, mesajul este împărțit în părți mai mici numite pachete sau datagrame . Fiecare pachet cuprinde adresa celui care trimite datele, dar și a celui care le primește[CrS09].

O datagramă IP arată conform fig.2.4.

Fig. 2.4. DatagramaIP[CrS09]

Pe lângă protocolul IP, care este utilizat pentru transferul de date, la acest nivel mai pot funcționa și alte protocoale, în vederea unei bune functionări a transmisiei, ele fiind de fapt protocoale de control la nivel de rețea.

Acestea sunt:

ICMP – Internet Control Message Protocol(protocolul mesajelor de control în Internet);

ARP – Address Resolution Protocol (protocolul de rezoluției a adresei), de menționat faptul ca acest protocol este utilizat atunci când cele două calculatoare (sursă și destinație) fac parte din aceeași rețea fizică, deci nu este necesară utilizarea routere-lor.

RARP – Reverse Address Resolution Protocol (protocolul de rezoluție inversă a adresei)– permite unui calculator să-și obțină, atunci când n-o cunoaște, adresa IP proprie;

Nivelul Transport

TCP ( Transmission Control Protocol) este un protocol orientat pe conexiuni, care permite ca un flux de octeți trimiși de un calculator să ajungă fără erori pe orice alt calculator din rețeaua Internet.

Pentru a realiza transferul de date, TCP fragmentează fluxul de octeți în pachete și transmite fiecare pachet la nivelul Internet. La destinație, procesul TCP receptor reasamblează pachetele primite într-un flux de ieșire.

Înainte de a începe transferul datelor, între cele două procese utilizator (programe de aplicație) se stabilește, prin intermediul rețelei, o conexiune logică numită circuit virtual.

Livrarea la destinație a fluxului de octeți în ordinea în care au fost emiși, fără pierderi și fără duplicate, se realizează prin folosirea unei tehnici de confirmare pozitivă cu retransmitere (dacă confirmarea de primire nu a fost transmisă într-un timp prestabilit, pachetul este transmis din nou), combinată cu fereastră glisantă (sistem de confirmare în espectativă). Mecanismul ferestrei glisante, utilizat de TCP, operează la nivelul octeților și nu al pachetelor, permițând o transmisiune eficientă și un control al fluxului[CrS09].

Principiul ferestrei glisante:

Emitentul transmite pachete către receptor fără să primească o confirmare, dar pornește un cronometru pentru fiecare pachet transmis

Receptorul transmite o confirmare pentru fiecare pachet primit, prin indicarea numărului de secvență al ultimului pachet primit corect

Emițătorul deplasează fereastra la fiecare mesaj de confirmare („glisează” fereastra)

Fereastra înainte de glisare

Fereastra după glisare

În cazul protocolului TCP principiul ferestrei glisante este folosit la nivel de octet; segmentele transmise și confirmările transportă numere de secvență pentru fiecare octet. Dimensiunea ferestrei este exprimată în număr de biți și nu în număr de pachete, și este determinată de către receptor după ce conexiunea a fost stabilită. Fiecare mesaj de confirmare include și dimensiunea ferestrei pe care receptorul o poate să o manipuleze.[CrS09].

unde:

A – octeți transmiși pentru care s-a primit confirmare

B- octeți transmiși pentru care nu s-a primit confirmare

C- octeți ce pot fi transmiși fără a se aștepta confirmare

D- octeți ce nu pot fi încă transmiși

Nivelul Aplicație

Nivelul Aplicație are rolul de a face legătura dintre o aplicație și serviciile oferite de rețea pentru acea aplicație. Are ca scop traducerea informațiilor în formate pe care mașinile care comunică între ele le pot înțelege.[CrS09].

Protocoalele care funcționează la acest nivel sunt:

TELNET -terminalul virtual,

FTP -transferul de fișiere,

SMPT- poșta electronică,

DNS – serviciul numelor de domenii.

FTP – File Transfer Protocol (FTP) este serviciul ce dă posibilitatea utilizatorilor de a transfera fișiere de la un calculator aflat în Internet, care se numește remote host, pe calculatorul local.[CrS09]

FTP este cea mai folosită metodă pentru transferul fișierelor de la un calculator la altul, prin intermediul Internetului, indiferent de tipul și dimensiunea acestora.

Transferul poate fi de două tipuri:

Upload-fișierele sunt transferate de pe calculatorul local pe cel de la distanță;

Downlod- fișierele sunt transferate de pe calculatorul aflat la distanță pe cel local;și este realizat în format text sau binar.

TELNETRemote Login – este un program simplu, pe bază de text, care permite clientului să se conecteze la alt computer, utilizând Internetul.

DNS(Domain Name Service) este un protocol care traduce adresele Internet literale în adrese Internet numerice, adrese utilizate de un calculator pentru a găsi un calculator receptor.[Dab09]

Caracteristicile sistemului DNS sunt:

folosește o structură ierarhizată;

deleagă autoritatea pentru nume;

baza de date cu numele și adresele IP este distribuită.

PING – Packet InterNet Groper –este un serviciu care poate fi utilizat pentru testarea conectivității între două sisteme. Este utilizat pentru controlarea configurațiilor și testarea conexiunilor.

2.3. Simularea unei rețele de calculatoare

Cu toate că nu este subiectul principal tratat de lucrarea de față, voi exemplifica în cele ce urmează, cum se poate configura o rețea de calculatoare.

Dar pentru început voi detaila, prin câteva paragrafe toretice, mai multe moduri de operare folosind deasemenea mai multe simulatoare pentru o rețea de calculatoare.

Moduri de operare:

1.privilegiat (administrator)

2.neprivilegiat(usermode)

3.setup

4. RxBoot

1.Este modul care permite monitorizarea și administrarea echipamentului.

2. Se poate vedea o mică parte din configurație. Se poate verifica conectivitatea cu celelalte dispozitive(cu ajutorul comenzilor ping si telnet).

3. Setup este un program care ajută utilizatorul necunoscător să configureze minimal router-ul. Este bun atunci când cumpărăm un router și nu știm nimic despre el.

4.RxBoot este un program de brutare. Se numește password recovery, ne folosește la intrarea pe router fără să știm parola de administrator.

Un router poate fi configurat în mai multe moduri:

de la un terminal în timpul instalării sale

via modem, folosind un port auxiliary

de la un terminal virtual(vty 0-4), după ce a fost instalat în rețea

de pe un server tftp

Când spunem că, configurăm un router ne referim la faptul că îi dăm un nume router-lui; o parolă de enable; setăm adrese logice ale tuturor plăcilor de rețea din router; activăm interfețe de rețea; lansăm în execuție programele care găsesc rute optime; creăm un firewall care să realizeze securitatea rețelei.

Interfețele pe care le găsim pe un router sunt: Ethernet; fast Ethernet; token ring; seriale si ISDN.

Câteva comenzi pe care le vom aplica la configurarea unui router:

1.configure termina //configurarea manuală a router-ului de la un terminal

2. configure memory //încărcarea informațiilor de configurare din memoria NVRAM

3.copy tftp running-config // încărcarea informațiilor de pe un server TFTP în memoria RAM

4. show running-config //afișarea configurării curente în RAM

5. copy running- config startup – config //memorarea configurării curente din memoria RAM în NVRAM

6. copy running-config tftp //memorarea configurării curente din memoria RAM pe un server TFTP

7.show startup-config //afișarea configurării salvate în NVRAM

8. erase startub- config //ștergerea conținutului NVRAM

Protocolul CDP (Cisco Discovery Protocol) este un protocol proprietate a CISCO și furnizează o comandă show, comandă ce permite administratorului să acceseze informații despre cum sunt configurate routerele conectate direct la router-ul administrat.

Dacă vom da comanda’’show cdp neighbors’’ne va afișa actualizări făcute de CDP pe router sau, despre rețelele conectate direct la respectivul router.

Nivelul internet trimite mesajele ICMP de eroare și de control, în funcție de necesități, și se ocupă de toate mesajele ICMP care sosesc.

În celece urmează folosindu-mă de simulatorul GNS3, voi arăta cum poate fi proiectata o rețea de calculatoare. Chiar dacă este un exemplu mai simplu se pot observa cu ușurință câteva dintre principiile care stau la baza proiectării unei rețele de calculatoare.

Pentru aceasta, într-o primă instanțătrebuie configurat GNS3-ul de așa manieră încât la finalul fiecărei sesiuni de lucru proiectul să fie salvat într-un același fisier. Setările pentru proiectul curent se găsesc sub meniul Edit/Preferences.(fig.2.6)[NG11].

Fig. 2.6

Este de recomandat să folosim ca imagini IOS -c7200-advipservicesk9-mz.122-33.SRE6.bin

IOS vine de laInternetwork Operating System și este sistemul de operarare care rulează pe routere și switchuri.

Nu este recomandat folosirea de imagini din serii mai mici de c2600 și în nici un caz c1700. Aceastea sunt sisteme în general instabile în GNS3.

Asocierea imaginilor cu echipamentele se face din aplicația GNS3, în meniu, la Edit -> IOS Images and Hypervisors(fig.2.7) se poate asocia un router cu o imagine asemeni exemplului alăturat. La Idle PC se lasă gol deocamdată iar dacă memoria RAM minim necesară nu este suficientă vom folosi tool-ul din partea de jos a ferestrei – “Verifică capacitatea minimă de RAM cerută”.

Fig.2.7

Apoi vom trece la generarea unei valori Idle PC.

Routerul are propriul procesor iar emularea unui sistem de operare de router va tinde sa ocupe întreaga putere de procesare a sistemului gazdă.

Astfel, fără Idle PC, în momentul în care vom porni un router, utilizarea procesorul calculatorului se va ridica la 100%, fapt care va îngreuna folosirea lui. Prin Idle PC se atribuie routerului putere de procesare doar în mod secvențial și nu continuu. Astfel, după atribuirea unei valori Idle PC, utilizarea procesorului va scădea înapoi la 2-3%[NG11].

Pentru generarea unei valori Idle PC, trebuie efectuați următorii pași:

se pornește routerul cu Start,

intrăm în consolă

introducem comenzile subliniate așa cum sunt in fig 2.8 – (cele subliniate cu roșu)

Fig.2.8

Vom proiecta în GNS3 topologia formată din două rutere R1, R2 si switch-ul SW1.(fig 2.9).

Fig. 2.9

Următorul pas va fi cel în care vom automatiza configurația inițială. Atunci când un nou ruter este adus în fereastra de lucru vine cu o configurație predefinită care poate fi găsită în fișierul baseconfig.txt, și care poate fi completat cu setări pe care le dorim default. Calea către baseconfig.txt este setată din meniul la Edit -> IOS Images and Hypervisors[1]

baseconfig.txt

!

hostname %h

!

no ip domain lookup

no ip icmp rate-limit unreachable

ip tcp synwait 5

!

line con 0

exec-timeout 0 0

logging synchronous

privilege level 15

no login

line aux 0

exec-timeout 0 0

logging synchronous

privilege level 15

no login

!

!

End

setari predefinite posibile

enable

conf t

alias exec c config t

no ip domain-lookup

ip tcp synwait 5

no service time log

no service time debug

line con 0

no login

no exec-timeout

logging synchronous

privilege level 15

exit

line vty 0 4

no login

privilege level 15

exit

După salvarea, modificările efectuate pot fi vizualizate prin adăugarea unui nou ruter ->Start -> Terminal, iar în terminalul deschis se rulează comanda show run.Considerând topologia din (Fig. 2.13) cele două rutere pot fi configurate[1] din terminalele asociate celor două rutere urmând comenzile marcate în chenar roșu din (Fig 2.10) în final configurația poate fi testată utilizând comanda ping.

Fig.2.10

În cele ce urmează vom adăuga host-uri folosindu-ne de VPCS poate simula pana la 9 PC-uri. Fiecare din ele utilizeaza pereche porturi UDP care comunică cu routerele Cisco care rulează sub mediul GNS3[NG11].

Vom rula fisierul executabil vpcs. Din comand line se poate selecta Virtual PC-ul dorit de la 1…n si implicit se pot atribui ip-uri VPCS. (fig.2.11).

Fig.2.11

Vom modifica tipologia din fig.2.9, adăugând încă un nod și un terminal de tip cloud(fig.2.12)

Fig.2.12

Routerele R1 și R2 le vom configura așa cum arată fig.2.13 (textul subliniat în roșu)

Fig.2.13

Vom testa rețeaua rezultată în VPCS folosind comenzile PING și TRACE.(fig.2.14).

Fig.2.14

Cap. 3. Aspecte de securitate în rețelele de calculatoare

Introducere

Securitatea informatică este o problemă vitală pentru toți utilizatorii de internet, fie că sunt furnizori de servicii fie că sunt utilizatori. Nevoia tot mai mare de comunicare, pe de o parte și nevoia de protecție și securitate a informațiilor pe de altă parte sunt două cerințe diferite și chiar opuse care trebuie asigurate în rețelele și sistemele informatice[Scrip08].

În condițiile în care milioane de ceățeni folosesc în mod curent rețelele de comunicații și calculatoare pentru operațiuni bancare, cumpărături, plata taxelor și serviciilor etc. problema securității este de maximă importanță. Au apărut multe organizații și organisme internaționale care se ocupă de cele mai diverse aspecte ale securității informaționale, de la aspectele legislative, la cele organizatorice, procedurale și funcționale.

Atacurile se identifică în trei mari categorii:

confidențialitate

disponibilitate

integritate.

Între acestea există o interdependență foarte strânsă, evidențiindu-se faptul că disponibilitatea și confidențialitatea sunt efectiv legate de integritate.

3.1 Modelul unei rețele sigure

În continuare voi prezenta un model general de rețea care respectă cerințele securității comunicației. Să presupunem că un mesaj trebuie transmis între două părți. Pentru ca această tranzacție să aibă loc, cele două parți trebuie să coopereze. Se stabilește un canal logic de comunicație, definind ruta dintre sursă și destinație, precum și folosirea cooperativă a protocoalelor de comunicație. Aspectele securității intră în joc când este necesară sau dezirabilă protejarea informației de un opponent care poate prezenta o amenințare la securitatea acesteia.

Toate tehniciile legate de securitate au două componente:

Transformări specifice securității a mesajului transmis, astfel de transformare este criptarea mesajului, astfel încât acesta devine neinterpretabil oponentului. De asemenea, se mai pot include secvențe care pot fi folosite pentrun identificarea sursei;

Părțile participante trebuie să împartă o informație secretă care să ajute destinatarul la reinterpretarea mesajului. Aceasta poate fi o cheie de criptare care va fi folosită la decriptarea informației.

O a treia parte poate fi implicată în desfăsurarea tranzacției. De exemplu, a treia poate fi răspunzătoare în distribuirea informației secrete folosite pentru descifrarea mesajelor sau poate avea rolul de a garanta autencititatea mesajelor si a celor două părți participante la tranzacție.

În general, modelul trebuie să îndeplinească patru sarcini pentru a proiecta un serviciu de securitate:

proiectarea unui algoritm care efectuează transformările necesare astfel încât informația transmisă să nu poata fi interpretată de oponent;

generarea unei informații secrete care să fie folosită împreună cu algoritmul proiectat

dezvoltarea de metode pentru distribuirea și partajarea informației secrete;

specificarea protocolului de comunicație folosit de algoritm și informația secretă pentru a obține efectele dorite ale serviciului de securitate.

A treia parte de încredere

(ex: ditribuitor de informație secretă)

Sursa Destinația

Mesaj canal informațional Mesaj

Informație secretă Informație secretă

Transformări specifice Transformări specifice

securitărții securității Oponent

Fig. 3.1 Modelul unei rețele sigure

De asemenea mai există un alt model de securitate diferit de cel prezentat mai sus. Al doilea model are ca scop principal protejarea sistemelor de informații.

Oponent canal de acces

-uman (craker)

-software (virus, toian) Funcția Guardian

Fig. 3.2 Modelul de securitate a unei rețele sigure

Intruși care vor sa obțină acces neautorizat în sistem. Un intrus poate fi un haker, adică o persoană cu intenții rele de a sparge și a pătrunde în sisteme la care nu îi este permis accesul. Pe lângă intrușii umani există și intruși de natură software cum ar fi virușii sau viermii care pot pătrunde în sistem prin introducerea lor fizică în cazul dischetelor infectate cât și prin rețea.

Mecanismele de securitate necesare pentru a combate accesul nedorit se împart în două categorii largi. Prima funcție majoră a acestor mecanisme este aceea de gardian. Această funcție include proceduri de logare bazate pe parole pentru a interzice accesul persoanelor neautorizate precum și rolul de a detecta și anihila orice formă de virus, vierme sau alte atacuri similare. A doua funcție a acestor menanisme este aceea de a anihila sau recupera orice ditrugere provocată de atacuri dacă acestea totuși au loc.

3.2Atacuri informatice

Când spunem tip de atac ne referim la modul în care un hacker(cracker) reușește să preia controlul unui sistem și ce poate el să facă după ce a reușit penetrarea lui. Făcând o paranteză hackerul este este un expert în informatică, care se ocupă cu studiul în profunzime al programelor informatice (sisteme de operare, aplicații), adesea folosind tehnici de inginerie inversă (demontare), cu scopul de a obține cunoștințe care nu sunt accesibile publicului larg.

Cei ce folosesc aceste cunoștințe în scopuri ilegale, pentru a compromitesecuritatea sistemelor informatice sau a aplicațiilor, sunt de fapt crackeri (spărgători), însă în percepția publicului (formată de obicei de mass-media) noțiunile de hacker și cracker adesea se confundă[2].

În general informațiile care circulă prin rețea au un flux normal, adică de la sursa acesteia la destinație. Atacurile de securitate asupra unui sistem de calculatoare sau o rețea se caracterizează cel mai bine ca fiind acele acțiuni care interceptează, modifică, distrug sau întârzie fluxul normal de informații, fig.3.3.

Pe scurt aceste tipuri de atac pot fi descrise în felul următor:

întreruperea – o componentă a sistemului este distrusă, devine indisponibilă sau nefolosibilă total sau pentru o anumită perioadă de timp. Acest tip de atac este un atac al disponibilității.Exemple de astfel de atacuri ar fi: distrugerea unor echipamente hardware, tăierea liniilor de comunicație,distrugerea sistemului de fișiere sau tehnici de supraîncărcare a sietemului, care duc la blocarea comunicațiilor sau a întregului sistem numite atacuri prin refuzul serviciilor (denial of service).

Interceptarea – o parte neautorizată obține acces la o componentă a sistemului. Acesta este un atac al confidențialității. Partea neautorizată poate fi o persoană , un program sau un calculator. Exemple de astfel de atacuri ar fi copierea ilegală a unor fișiere și programe sau taparea liniilor de comunicație.

Modificarea- partea neautorizată obține nu numai acces la o componentă din system, dar și falsifică informația obținută. Acesta este un atac al integrității. Exemple include modificarea unor valori din fișiere de date, modificarea unor programe sau transmiterea unor mesaje false prin rețea.

Construirea- partea neautorizată pătrunde în sistem și imită unele componente din acesta. Un atac de acest tip este un atac al autenticității. Exemple de acest gen sunt:introducerea unor mesaje false în rețea care sunt interpretate ca mesaje rele și inventarea unor fișiere care pot induce în eroare utilizatorii reali.

Fig. 3.3 Clasificarea atacurilor

O altă clasficare a atacurilor ar fi atacuri passive și atacuri active ceea ce se observă și din figura 3.4

Atacurile passive au scopul de intercepta și monotoriza transmisiile, scopul fiind obținerea informațiilor care sunt transmise. Există două tipuri de atac pasiv:

interecptarea mesajelor;

analiza traficului.

Metoda interceptării mesajelor este simplă de ințeles. O conversație telefonică,un mesaj e-mail sau un fișier care poate conține informații prețioase este interceptat și apoi intepretat.

Atacuri pasive

Intercepția Analiza de trafic (confidențialitate)

Atacuri active

Intreruperea Modificarea Construcția (Disponibilitate) (Integritate) (Autenticitate)

Fig. 3.4 Atacuri pasive și atacuri active

Al doilea tip de atac pasiv este mult mai subtil. În esență și acesta are aceeași rol de interceptare a informației. Pentru a împiedica interpretarea mesajelor în general se folosește o metodă de mascare a conținutului informației. Chiar dacă aceasta este interceptată, oponentul nu poate interpreta informația. Tehnica cea mai folosită de mascare a conținutului informației este criptarea. Totuși și prin criptare oponentul poate ghici locul, identitatea și tipul comunicării între cele două părți dupe frecvența, lungimea și modelul mesajelor trimise.

Cealaltă categorie majoră a atacurilor sunt atacurile active. Acestea implică modificarea fluxului normal de informații și chiar născocirea unor transmisii false. Atacurile active se împart în patru subdiviziuni: mascaradă, retransmisie, modificarea mesajelor și atacuri prin refuzul serviciilor.

O mascaradă are loc atunci când o entitate pretinde că este o altă entitate. Acest tip de atac este combinat și cu alte tipuri de atac activ.

De exemplu, secvențele de autentificare pot fi capturate și retransmise după o autentificare validă, efectuată de o entitate autorizată cu scopul de a obține privilegii suplimentare pentru a intra în rolul unei entități care are aceste privilegii.

Retransmiterea implică capturarea pasivă a datelor și retrasnmiterea lor pentru a obține un efect neutorizat.

Modificarea reprezintă simpla alterare sau intârziere unui mesaj autentic pentru a facilita accesul unor persoane neautorizate la informații senzitive.

Atacurile prin refuzul serviciilor inhibă folosirea și administrarea normală a facilitățiilor de comunicatie. Aceste atacuri pot avea o țintă precisă, de exemplu prin suprimarea mesajelor transmise către o anumită destinație. O altă formă a acestui atac este tăierea liniilor de comunicație, fie scoaterea din uz a rețelei prin supraîncărcarea ei cu mesaje.

Atacurile active prezintă opusul atacurilor pasive. Atâta timp cât atacurile pasive sunt dificile de dedectat, fiind totuși disponibile mecanisme de prevenire, atacurile active nu pot fi total prevenite deoarece ar fi necesare protecții fizice ale căilor de comunicație. În schimb, scopul este de a detecta atacurile active, de a anihila și recupera informațiile afectate de acestea

3.3Metode de protecție. Criptografia.

Există mai multe metode de a ne proteja împotriva acestor atacuri, atât la nivelul de personal computer cât și în cadrul unei rețele.(fig.3.5)

Fig.3.5 Nivele distincte pentru creșterea nivelului securității[Dab09]

Una dintre metode este folosirea de password-uri. Poate pare hazliu dar cei din cadrul Universității Carnegie Mellon din Statele Unite ale Americii au descoperit soluția perfectă pentru o parolă (password) care să fie greu de spart sau de aflat. Nu este vorba despre un algoritm complex si nici măcar despre o ecuație ce trebuie memorată, ci despre simple greșeli.

Cercetătorii Universității Carnegie Mellon din Statele Unite ale Americii spun ca o banală greșeală gramaticală și un typo fac dintr-o parolă foarte simplu de ghicit una extrem de greu de spart.

De o securitate îmbunătățită putem beneficia folosind și ultima versiune a aplicației "Windows Firewall"care este inclusă încă din sistemul de operare Windows Vista.

Dar securitate înseamnă mult mai mult decât updatarea sistemului de operare, o aplicație antispyware/antivirus sau o aplicație firewall. Un sistem de operare trebuie să ofere încredere utilizatorilor și să protejeze datele (mai mult sau mai puțin confidențiale) stocate pe aceste sisteme. În acest domeniu al securității (protecția datelor, identitate și control acces) intră și tehnologiile "User Account Control" sau "Internet Explorer 7 – Protected Mode"[Dab09].

"User Account Control" – tehnologie care nu există în Windows XP, apărând prima dată în Windows Vista și în Windows Server 2008 – reduce posibilitatea că o aplicație cu privilegii minime (low) să dobândească în mod automat și necontrolat privilegii sporite și să aibă acces la fișierele utilizatorului fără consimțământul acestuia. Antivirusul – un software instalat cu scopul clar de a te proteja de viruși, viermi și alte coduri malițioase. Majoritatea aplicațiilor antivirus monitorizează traficul în fiecare moment, scanând în timp ce se navighează pe Internet sau scanând mesajele primite pe mail (cu tot cu atașamente) și periodic oferind posibilitatea rulării unei scanări la nivelul întregului sistem în căutarea de cod malițios[Dab09];

Dar secretul transmisiei, confidențialitatea mesajelor și autentificarea surselor de informație se asigură prin diverși algoritmi de criptare a datelor. Criptografia reprezintă o ramură a matematicii, care se ocupă cu securizarea informației, precum și cu autentificarea și restricționarea accesului într-un sistem informatic.

Sau cu alte cuvinte,criptografia este știinta prin care mesajele secrete sunt create și menținute așa făcând imposibilă citirea lor de către persoanele neavizate. Altfel spus criptografia este știința mesajelor secrete.

În realizarea acestora se utilizează metode matematice, bazate de exemplu pe dificultatea factorizării numerelor foarte mari.

Mesajul inițial, care urmează a fi criptat se numește ,,plain text" (P); în criptografie P se numește scriere chiar dacă este un document de altă natură cum ar fi: voce, imagine sau date[DC05].

Mesajul cifrat sau criptograma denumit ,,cipher text" (C) este mesajul rezultat în urma procesului de criptare, interzis neavizaților.[3]

Criptarea[Scrip08] (encryption) reprezintă procesul de conversie a informației obișnuite (text în clar – plaintext – M) într-un text neinteligibil (text cifrat – ciphertext – C), cu ajutorul unei chei de criptare, Ke:

C = E Ke (M)

Decriptarea (decryption) este inversul criptării, adică, trecerea de la textul cifrat, neinteligibil, la textul original, cu ajutorul unei chei, Kd

M =D Kd (C)

Orice sistem format din:

algoritm

toate mesajele initiale (P)

toate textele cifrate (C)

toate cheile (K)

poate fi numit criptosistem

Criptanaliza este stiinta de spargere a cifrurilor, așadar stiinta prin care se obtin mesajele initiale (P) sau chiar și aflarea cheii (K) din mesajul cifrat (C)[Le99].

Există două categorii de tehnici de criptare, definite în funcție de tipul de cheie utilizat:

• criptarea cu cheie secretă;

• criptarea cu cheie publică.

Se cunosc numeroase tehnici de criptare bazate pe algebră (Laplace), topologie matematică și geometrie (Poincaré) sau combinatorică.Multe dintre acestea utilizează sisteme liniare, relativ ușor predictibile.

Algoritmii de criptare utilizați în prezent sunt:

AES

DES

3DES

RSA

MD4

MD5

SHA-1

Astăzi, se dezvoltă noi algoritmi de criptare a datelor mai performanți, cu timp redus de procesare și diversitate mare a cheilor de criptare, bazați pe noi teorii matematice și fizice (criptografie cuantică, criptografie haotică).

Metodele bazate pe teoria haosului pot fi aplicate cu succes pentru secretizarea și pot fi aplicate și în spații multidimensionale (ca în cazul imaginilor digitale 2D și 3D, respectiv pentru transmisii simultane de date-voce, audio-video etc)[Scrip08].

Principiul criptografiei bazate pe teoria haosului este dat de difuzia și confuzia parametrilor traiectoriilor generate pe baza cheii de criptare și a mesajului transmis.

3.3.1 Criptarea cu cheie secretă

Criptosistemele convenționale au fost concepute pe principiul cheii secrete, cu o funcție de criptare inversabilă cunoscută doar de utilizatori. Cheia secretă constituie punctul vulnerabil al sistemului deoarece odată aflată, securitatea tuturor informațiilor transmise este compromisă. Decriptorul aplică funcția inversă pentru deducerea secvenței originale, folosind aceeași cheie ca la criptare.(fig. 3.6)

Fig.3.6Schema de principiu a unui sistem de comunicații cu criptare cu cheie secretă

Criptarea cu cheie secretă, cunoscută sub numele de criptare simetrică, utilizează o singură cheie, K, pentru a cripta și decripta datele.

Algoritmii cu chei secrete se împart în două mari categorii:

• algoritmi bloc (block cipher), care procesează blocuri de date de lungime fixă;

• algoritmi de șiruri (stream cipher), care procesează la un moment dat un singur bit sau simbol.

.

3.3.2 Criptarea cu cheie publică

Un criptosistem cu cheie publică, bazat pe funcții greu inversabile, folosește de fapt o funcție inversabilă într-un singur sens (one-way function), a cărei inversă nu poate fi calculată practic întrucât acest calcul implică depașirea fie a capacității sistemelor de calcul utilizate, fie a timpului în care informațiile transmise sunt valabile și considerate secrete. (fig.3.7)

Acest principiu de criptare a fost propus în 1976 de doi cercetători, Diffie și Hellman (DH).

Fig.3.7.Schema de principiu a unui sistem cu criptare asimetrică

Criptarea cu cheie publică sau criptarea asimetrică utilizează o pereche de chei. Una dintre aceste chei, cheia publică ( Ke) este utilizată pentru criptarea informațiilor și se caracterizează prin faptul că este distribuită în rețeaua publică de comunicații, în timp ce cealaltă cheie, numită cheia secretă ( Kd ) folosită pentru decriptarea informațiilor trebuie să aibă caracter secret. Din cheia publică, este imposibil să se determine cheia secretă[Scrip08].

3.4 Criptarea și decriptarea folosind AES

3.4.1. Criptarea AES

Înainte de toate voi exemplifica în cele ce urmează câțiva dintre termenii folosiți în procesul de criptare respectiv de decriptare și anume:

transformările afine constă în înmulțirea cu o matrice urmată apoi de adunarea unui vector

vectorul de date este văzut ca și o colecție de entități identice

bit reprezintă un număr binar cu valoarea 0 sau 1

blocul de date constă într-o secvență binară de biți a cărui lungime este egală cu numărul de biți pe care îi conține

byte este un grup de 8 biți care sunt tratați fie ca o entitate singură fie ca un vector de 8 biți individuali

cheia de cifrare este cheia criptografică folosită în rutina de expansiune a cheilor pentru a genera un set de chei pe rundă; poate fi vazută ca și un vector rectangular de bytes având 4 rânduri și Nk coloane.

extinderea cheii este rutina de generare a cheilor de rundă din cheia inițială de cifrare

cheile de rundă sunt chei cu valori derivate din cheia de cifrare folosind algoritmul de generare a cheilor; ele se aplică asupra tabelei de stare în procesul de cifrare respectiv procesul invers cifrării

tabela reprezintă rezultatul intermediar cifrării și poate fi văzută ca și un vector rectangular de bytes care are 4 rânduri și Nb coloane

S-box este o tabelă neliniară folosită în diverse transformări precum și în algoritmul de extindere a cheilor [PAH06]

cuvântul reprezintă un grup de 32 de biți care sunt tratați fie ca o entitate de sine stătătoare fie ca un vector de 4 bytes

Algoritmul AES criptează blocuri de date pe 128 biți. Considerăm blocurile organizate în cuvinte cu lungimea de 32 de biți. Numărul de coloane este notat cu Nb și este egal cu lungimea blocului impărțită la 32. Astfel numărul de cuvinte este Nb = 4. Lungimea cheii poate lua valorile 128, 192 și 256 biti, această lungime fiind exprimată de Nk = 4, 6 sau 8. Tabelul 1 prezintă variantele posibile de AES și deasemenea numărul de runde necesare procesului de criptare [MS03].

Tab. 1[DJ02]

Ambele blocuri atât cel de intrare (in) cât și celde ieșire (out) de lungime 128 biți, sunt reprezentate ca tabele unde biți sunt mapați pe coloane și rânduri în timp ce textul care urmează a fi criptat reprezintă starea inițială a tabelei. Aceste 3 stări ale tabelei sunt ilustrate în Fig.3.8:

Fig.3.8

Pentru criptare la fel ca și pentru decriptare, algortimul AES folosește un anumit număr de runde, care conțin cele 4 tipuri de transformări numiti pași:

• SubBytes

• ShiftRows

• MixColumn

• AddRoundKey

Criptarea se desfășoară conform pseudocodului ilustrat de algortimul:

Rijndael(State,CipherKey)

{

KeyExpansion(CipherKey,ExpandedKey) ;

AddRoundKey(State,ExpandedKey);

For( i=1; i<Nr; i++) Round(State,ExpandedKey + Nb*i);

}[4]

3.4.2. Decriptarea AES

Algoritmul de decriptare AES poate fi văzut ca o operație inversă criptării.Constă în inversarea celor 4 transformări cu mențiunea ca acești pași sunt făcuți în ordine inversă.

Singura operație care nu suferă modificări este AddRoundKey, pentru ca această transformare este propria ei inversă. Fig.3.9 descrie mai bine functia InvShiftRows().

Fig. 3.9

Transformarea InvSubBytes() anulează efectul direct al operației SubBytes(). InvShiftRows() va deplasa biții de această dată la dreapta, începând cu randul 2 care va fi deplasat cu 1 poziție adică un octet, rândul 3 cu 2 poziții și rândul 4 cu 3 poziții. Similar, InvMixColumn() operează linear pe coloanele matricii de stare.

Cap.4. Proiectarea și implementarea standardului AES

4.1. Implementarea criptării folosind AES 192

Algoritmul de generare a cheilor:

se ia ca și intrare cheia de date pe 192 biti, păstrând constanta de runda pe 8 biți (la fel ca în cazul AES 128);

după ce unitatea de cheie procesează informația dată ca și intrare, va returna la ieșire următoarea cheie de rundă pe 192 biți dar deasemenea și următoarea constantă de rundă pe 8 biți așa cum se poate observa în Figura 3.10.

Pentru ca unitatea de cheie să returneze valorile corecte menționate mai sus, sunt necesare niste artificii: în primul rând, deoarece folosim calea de date comună pentru toate implementările și pentru că fiecare rundă folosește doar 128 biți din cheia de rundă, a trebuit să împărțim generarea următoarei chei de rundă în 2 părți, astfel: una care ne va da cei mai semnificativi 128 biți și una care va conține cei 64 de biți mai puțin semnificativi.

În consecință pentru a genera cei mai semnificativi 128 biți vom deplasa cei 64 de biți mai puțin semnificativi astfel încât acum aceștia vor deveni cei mai semnificativi așa cum se poate observa în Fig.3.11.

Mai mult, la fiecare 3 runde vom genera o cheie de date completă așa cum este definită de standard. Pentru a implementa cele menționate mai sus a fost nevoie să separam cele 3 cazuri.

De aceea am folosit o variabilă fanion pe 2 biți, care va declanșa folosirea primilor 128 biți de cheie când valoarea variabilei fanion este 0, sau când să folosim cei 64 de biți rămași concatenați la următorii 64 de biți generati, când variabila fanion este 1, sau cazul final când valoarea fanionului este 2. Primele 2 cazuri conțin toate cele 4 transformări în timp ce în cazul 3 nu se efectuează nici o operatie ci doar SAU EXCLUSIV.

Fig. 3.10

Aceste artificii descrise mai sus pot fi observate în Fig. 3.11 a) (când fanion = 0), b) (când fanion = 1) și c) (când fanion = 2).

b) c)

Fig. 3.11

Tot din fig.3.11 reiese și faptul că atunci când variabila fanion are valoarea 0 prima cheie de rundă reprezentată aici de Rk1 se folosește în runda 1 pentru a genera următoarea cheie de runda Rk2.

Dupăcum se poate observa, în această rundă se efectuează cele 4 transformări fundamentale care stau la baza criptarii AES.

Cei 64 de biti rămași (adică cei mai puțin semnificativi) sunt deplasați la stânga urmând ca ei să devină cei mai semnificativi 64 de biți și să fie folosiți după cum urmează: la ei se concatenează următorii 64 de biți mai semnificativi, calculați anterior.

Cu alte cuvinte la ei se concatenează primii 64 de biți din cei 128 de biți obținuti în urma aplicării celor 4 transformări. Astfel, în runda a doua, exemplificată de valoarea variabilei fanion care este 1, asupra primilor 128 de biți (din acești 128 de biți cei mai semnificativi 64 de biți sunt exact aceia pe care i-am deplasat în runda precedenta) se aplică iar cele 4 transformări, rezultând de aici următoarea cheie de runda Rk2 și încă o dată cei 64 de biți rămași sunt deplasați la stânga, ei urmând a fi folosiți în runda următoare.

În runda 3, atunci când valoarea fanionuli este 0, nu se efectuează nici o transformare din cele 4 și încă o dată cei 64 de biți rămași nefolosiți sunt deplasați la stânga urmând să fie folosiți în runda următoare.

Astfel se obtine cheia de runda Rk2. De fiecare dată la cei 64 de biți nefolosiți sunt concatenați cei 128 biți rezultați în urma transformărilor, obținându-se în fiecare runda câte o cheie de cifrare pe 192 de biți așa cum este definită de standardul AES.

Acest proces se reia până când se epuizează cele 12 runde așa cum sunt ele descrise de standardul AES.

4.2. Implementarea decriptării folosind AES 192

Procesul de decriptare decurge în sens invers.

Algoritmul de generare a cheilor pentru decriptare debutează în felul următor:

se ia ca și intrare cheia de date pe 192 biți obținută în runda finală a decriptării, păstrând constanta de rundă pe 8 biti (la fel ca în cazul AES 128);

după ce unitatea de cheie procesează informația dată ca și intrare, va returna la ieșire următoarea cheie de runda pe 192 biți dar deasemenea și următoarea constantă de rundă pe 8 biți așa cum se poate observa în Fig.3.10.

Pentru ca unitatea de cheie să returneze valorile corecte menționate mai sus, sunt necesare niste artificii: în primul rând, deoarece folosim calea de date comună pentru toate implementările și pentru că fiecare rundă folosește doar 128 biți din cheia de rundă, a trebuit să impărțim generarea următoarei chei de runda în 2 părți: una care ne va da cei mai semnificativi 128 biți și una care va conține cei 64 de biți mai puțin semnificativi.

În consecintă pentru a genera cei mai semnificativi 128 biți vom deplasa cei 64 de biți mai puțin semnificativi astfel încât acum aceștia vor deveni cei mai semnificativi așa cum se poate observa în Fig.3.12.

Mai mult, la fiecare 3 runde vom genera o cheie de date completă așa cum este definită de standard.

Pentru a implementa cele menționate mai sus a fost nevoie să separăm cele 3 cazuri.

De aceea am folosit o variabilă fanion pe 2 biți, care va declanșa folosirea primilor 128 biți de cheie când valoarea variabilei fanion este 0, sau când să folosim cei 64 de biți rămași concatenați la următorii 64 de biți generați, când variabila fanion este 1, sau cazul final când valoarea fanionului este 2.

Primele 2 cazuri conțin toate cele 4 transformări în timp ce în cazul 3 nu se efectuează nici o operație ci doar SAU EXCLUSIV.

Aceste artificii descrise mai sus pot fi observate în Fig.3.12. a) (când fanion = 2), b) (când fanion = 1) și c) (când fanion = 0).

b) c)

Fig.3.12

Tot din fig.3.12 reiese și faptul că atunci când variabila fanion are valoarea 2 prima cheie de rundă reprezentată aici de Rk0 se folosește în runda 1 pentru a genera următoarea cheie de runda Rk1.

Dupăcum se poate observa, în această rundă nu se efectuează nici o transformare din cele 4 care stau la baza decriptării AES. Cei 64 de biti rămași sunt deplasați la dreapta urmând ca ei să fie folosiți în runda următoare.

Astfel, în runda a doua, exemplificată de valoarea variabilei fanion care este 1, asupra primilor 128 de biti (din acesti 128 de biți cei mai semnificativi 64 de biți sunt exact aceia pe care i-am deplasat în runda precedentă) se aplică cele 4 transformări, rezultând de aici următoarea cheie de runda Rk2 și încă o dată cei 64 de biți rămași sunt deplasați la dreapta, ei urmând să fie folosiți în runda următoare.

În runda 3, atunci când valoarea fanionuli este 0, se efectuează din nou cele 4 transformări și încă o dată cei 64 de biți rămași nefolositi sunt deplasați la dreapta urmând a fi folosiți în runda următoare. Astfel se obține cheia de runda Rk3.

De fiecare dată cei 64 de biți nefolosiți sunt concatenați la noile chei obținute rezultând în fiecare rundă câte o cheie de cifrare pe 192 de biți așa cum este definită de standardul AES.

Acest proces se reia până când se epuizează cele 12 runde așa cum sunt ele descrise de standardul AES[4].

4.3. Implementarea criptării folosind AES 256

Algoritmul de generare a cheilor:

se ia ca și intrare cheia de date pe 256 biți, păstrând constanta de runda pe 8 biți (la fel ca în cazul AES 128);

după ce unitatea de cheie procesează informația dată ca și intrare, va returna la ieșire următoarea cheie de rundă pe 256 biți dar deasemenea și urmatoarea constantă de rundă pe 8 biti așa cum se poate observa în Fig.3.13.

Pentru ca unitatea de cheie să returneze valorile corecte menționate mai sus, sunt necesare niște artificii: în primul rând, deoarece folosim calea de date comună pentru toate implementările și pentru că fiecare rundă folosește doar 128 biți din cheia de rundă, a trebuit să împărțim generarea următoarei chei de runda în 2 părti: una care ne va da cei mai semnificativi 128 biți și una care va conține cei 128 de biți mai puțin semnificativi.

În consecință pentru a genera cei mai semnificativi 128 biți vom deplasa la stânga cei 128 de biți mai puțin semnificativi astfel încât acum aceștia vor deveni cei mai semnificativi așa cum se poate observa în Fig.3.14.

Mai mult, la fiecare 2 runde vom genera o cheie de date completă așa cum este definită de standard. Pentru a implementa cele menționate mai sus a fost nevoie să separăm cele 2 cazuri.

De aceea am folosit o variabilăfanion pe 1 bit, care va declanșa folosirea primilor 128 biți de cheie când valoarea variabilei fanion este 0 sau folosirea celeilalte jumătăți de cheie rămasă când variabila fanion este 1. Primul caz conține toate cele 4 transformări în timp ce în cazul 2 se efectuează doar operația S-box.

Fig.3.13

Aceste artificii descrise mai sus pot fi observate în Fig.3. 14 a) (când fanion = 0) și b) (când fanion = 1).

Tot din fig.3.14 reiese și faptul că prima cheie de rundă reprezentată aici de Rk1 se folosește în runda 1 pentru a genera următoarea cheie de rundăRk3. După cum se poate observa, în urma efectuării celor 4 transformării fundamentale se obține Rk3.

Tot în runda 1 a doua jumătate a cheii de date, asta însemnând a doua cheie de rundă reprezentată aici de Rk2 este deplasată la stânga cu 128 de poziții (128 de biți). Deoarece cheia de rundă numărul 2 nu are aplicată asupra ei nici o operație, deci rămânând nemodificată, ea va deveni prima jumătate a noii chei la care se va concatena cheia de rundăRk3, obținându-se astfel întreaga cheie de cifrare.

Când variabila fanion este 1 se preia cheia obținută din etapa anterioară când variabila fanion a fost 0 și se împarte la fel în doi pași, singura diferență de aceasta dată fiind faptul că se executa doar operația S-box astfel: cheia Rk3 va fi deplasată la stânga cu 128 de poziții rezultând prima jumătate a noii chei, în timp ce asupra cheii de runda Rk2 se execută operația S-box, obținându-se în final a doua jumătate a cheii, Rk4. Concatenând pe Rk3 cu Rk4 se obține o cheie finală pe 256 de biți. Acest proces se reia până când se epuizează cele 14 runde așa cum sunt ele descrise de standardul AES [3].

b)

Fig. 3.14

4.4. Implementarea decriptării folosind AES 256

Cazul decriptării este similar.

Astfel algoritmul de generare a cheilor este următorul:

se ia ca și intrare cheia de date pe 256 biți obținută din runda finală a criptării, păstrând constanta de rundă pe 8 biți (la fel ca în cazul AES 128);

după ce unitatea de cheie procesează informația dată ca și intrare, va returna la ieșire următoarea cheie de runda pe 256 biți dar deasemenea și următoarea constantă de runda pe 8 biți așa cum se poate observa în Fig. 3.13.

Pentru ca unitatea de cheie să returneze valorile corecte menționate mai sus, sunt necesare niște artificii: în primul rând, deoarece folosim calea de date comună pentru toate implementarile și pentru că fiecare rundă folosește doar 128 biți din cheia de rundă, a trebuit să împărțim generarea următoarei chei de rundă în 2 părti: una care ne va da cei mai semnificativi 128 biți și una care va conține cei 128 de biți mai puțin semnificativi.

În consecință pentru a genera cei mai semnificativi 128 biți vom deplasa cei 128 de biți mai puțin semnificativi astfel încât acum aceștia vor deveni cei mai semnificativi așa cum se poate observa în Fig. 3.15.

a) b)

Fig. 3.15

La fiecare 2 runde vom genera o cheie de date completă așa cum este definită de standard. Pentru a implementa cele menționate mai sus a fost nevoie să separăm cele 2 cazuri. De aceea am folosit o variabila fanion pe 1 bit, care va declanșa folosirea primilor 128 biți de cheie când valoarea variabilei fanion este 0 sau folosirea celeilalte jumătăți de cheie rămasă când variabila fanion este 1. Primul caz conține toate cele 4 transformări în timp ce în cazul 2 se efectuează doar operația S-box.

Aceste artificii descrise mai sus pot fi observate în Fig.3 15 a) (când fanion = 1) și b) (când fanion = 0). Tot din figura 11 reiese și faptul că prima cheie de rundă reprezentată aici de Rk1 se folosește în runda 1 pentru a genera următoarea cheie de runda Rk3.

Dupa cum se poate observa, în urma efectuării operației S-box se obține Rk3. Tot în runda 1 a doua jumătate a cheii de date, asta însemnând a doua cheie de rundă reprezentată aici de Rk2 este deplasată la dreapta cu 128 de poziții (128 de biți). Deoarece cheia de rundă numărul 2 nu are aplicată asupra ei nici o operație, deci rămânând nemodificată, ea va deveni a doua jumătate a noii chei care se va concatena cheia de runda Rk3, obținându-se astfel întreaga cheie de cifrare.

Când variabila fanion este 0 se preia cheia obținută din etapa anterioară când variabila fanion a fost 1 și se împarte la fel în doi pași, singura diferență de această dată fiind faptul că se execută în loc de operația S-box cele 4 transformări fundamentale astfel: cheia Rk1 va fi deplasată la dreapta cu 128 de poziții rezultând a doua jumătate a noii chei, în timp ce asupra cheii de rundăRk0 se execută cele 4 operații fundamentale, obținându-se în final a doua jumătate a cheii, Rk2.

Concatenând pe Rk2 cu Rk1 se obține o cheie finală pe 256 de biți. Acest proces se reia până când se epuizează cele 14 runde așa cum sunt ele descrise de standardul AES[4].

Cap. 4. Aplicație practică. Algoritmul AES.

Exemplu al folosirii algoritmului AES(Rijndael) pentru criptarea fișierelor.

Linia de comandă este:

aesxam input_file_name_output_file_name[D|E] hexadecimalkey

unde E reprezintă criptarea iar D decriptarea fișierului pe care îl dorim să-l folosim cu cheia hexadecimală cu secvențe de 32,48 și 64 de cifre:

Exemplu de criptare sau decriptare aes.enc:

esxam file.c file.enc E 0123456789abcdeffedcba9876543210

aexam file.enc file2.c D 0123456789abcdeffedcba9876543210

care ar trebui să returneze un fișier ”file2.c” identic cu ”file.c”

Aplicație:

#include <stdio.h>

#include <stdlib.h>

#include<memory.h>

#include ” aes.h”

#define BLOCK_LEN 16

#define READ_ERROR -7

#define WRITE_ERROR -8

void cycles (unsigned long *rtn)

{

_asm

{

_emit 0x0f // completează operațiile în așteptare

_emit 0xa2

_emit 0x0f //citește contorul de timp

_emit 0x31

mov ebx,rtn

mov [ebx],eax

mov [ebx + 4],edx

_emit 0x0f // se completează operațiile în așteptare

_emit 0xa2

}

}

#define RAND (a,b) (((a=36969* (a&65535) + (a >>16))<<16)+\

(b=18000*(b & 65535)+(b >>16 )) )

void fillrand (char *buf,cons int len)

{ static unsigned long a [2], mt=1,count =4;

static char r[4];

int i;

if (mt) {mt=0;cycles (a); }

for (i=0;i<len; ++i)

{

If(count =4)

{

*(unsigned long *) r =RAND (a [0], a [1];

count =0;

}

buf [i]=r[count++];

}

}

int encfile(FILE *fin, FILE * fout, aes_ctx* ctx,const char* ifn, const char * ofn)

{ char but [BLOCK_LEN], dbuf[2* BLOCK_LEN];

fpos_t flen;

unsigned long i, l, rlen;

fillrand(dbuf,BLOCK_LEN) //stabilește un model aleator

fseek(fin, 0, SEEK_END) // obține lungimea unui fișier

fgetps(fin, &flen); rlen=(unsigned long) flen;

fseek (fin,0,SEEK_SET); // se resetază de la start

if (rlen<BLOCK _ LEN) // se testează dacă lungimea unui fișier este mai mică decât a unui block (cheii)

{

1=fread(dbuf+BLOCK_LEN ,1, BLOCK_LEN, fin),rlen -=1;

If(rlen) // se citesc biți și se verifică lungimea

return READ_ERROR;

for(i=0;i<1;++i)

dbuf [i+BLOCK_LEN] ^=dbuf[i];

aes_enc_blk(dbuf,dbuf,ctx); // se criptează mai puțin de jumătate din buffer

// se criptează biți de la poziția 1 la poziția 1+ BLOCK_LEN

//este prezentată o adoua criptare a biților rămași

aes_enc_blk(dbuf+1, dbuf+1,ctx);

1+=BLOCK_LEN; // se scriu biții cripatați

if(write (dbuf,1,1 fout!=1)

return WRITE_ERROR;

}

else

{

aes_enc_blk(dbuf,buf,ctx); // se criptează și se scrie biții din block

if (fwrite(buf, 1,BLOCK_LEN, fout) ! =BLOCK_LEN)

return WRITE_ERROR;

while(!feof(fin)&&rlen)

{ //citește un block

1=fread(buf, 1, BLOCK_LEN,fin),rlen -=1; // numară biții

if(1!=BLOCK_LEN&&rlen) // verifică lungimea și citește

return READ_ERROR; // numai ultima citire aparține block-ului

for(I =0; i<BLOCK_LEN;++i) // face înlănțuirea înainte de criptare

buf [i] ^=dbuf[i];

aes_enc_blk(buf,dbuf,ctx);

if(rlen<BLOCK_LEN) //testează dacă doar o parte din block rămâne

{

if (rlen&&fread (dbuf+BLOCK_LEN,1,BLOCK_LEN!=rlen)

return READ_ERROR; // dacă dbuf[] atunci citeste prima parte

// se criptează de la poziția rlen to rlen + BLOCK_LEN până la ultimul bit din fisier și o parte din ultimul block criptat, acestă parte de cod se mai numește și ”furt cifrat”

for (i=0;i<rlen;++i) //face înlănțuirea înainte de criptare

dbuf[ I + BLOCK_LEN] ^ = dbuf[i];

aes_enc_blk(dbuf + rlen, dbuf + rlen, ctx);

1=rlen+BLOCK_LEN); //lungimea finală a buffer-lui

}

if(fwrite(dbuf,1,1, fout) !=1)

return WRITE_ERROR; // scrie block-ul criptat

}

}

return 0;

}

int decfile (FILE*fin,FILE * fout,aes_ctx*ctx,const char * ifn,const char *ofn)

{ char buf[BLOCK_LEN], buf2[BLOCK_LEN), dbuf[2*BLOCK_LEN];

char *b1, *b2, *bt;

fpos _t flen;

unsigned long i,l,rlen;

fseef(fin,0,SEEK_END);

fgetpos (fin,&flen);rlen =(unsigned long)flen;

fseek(fin,0,SEEK_SET);

if (rlen<2*BLOCK_LEN) //se testează dacă lungimea inițială este mai mică decât a unui block

{

1=fread (dbuf,1,2 * BLOCK_LEN,fin), rlen-=1;

If (rlen) // se citesc biții și se verifică lungimea

return READ_ERROR

1-=BLOCK_LEN

// se decriptează de la prima poziție până la poziția 1+BLOCK_LEN

aes_dec_blk(dbuf+1,dbuf+1,ctx);

aes_dec_blk(dbuf,dbuf,ctx); // se decriptează partea ”mai puțin importantă” din buffer

for(i= 0; I < 1;++i)

dbuf[i] ^= dbuf [i+BLOCK-LEN];

if (fwrite(dbuf,1,1,fout)!=1) // se scriu biții decriptați

return WRITE_ERROR;

}

else

{ // vom avea nevoie de 2 fanioni care să rețină criptarea anterioară , pointerii b1 și b2 se schimbă odată într-o buclă

rlen-=BLOCK_LEN;b1=buf1; b2 =buf2;

if(fread(b1, 1,BLOCK_LEN,fin)!= BLOCK_LEN)

return READ_ERROR

aes_dec_blk(b1,b1,ctx);

while (!feof(fin)&& rlen)

{

1=fread(b2, 1 ,BLOCK_LEN,fin),rlen-=1; // numără biții

if(1!=BLOCK_LEN&&rlen //verifică lungimea și citește

return READ_ERROR;

If (rlen<BLOCK_LEN)

{

for(i=0; i<BLOCK_LEN;++i) // mută penultimul bit în jumătatea inferioară a dbuf

dbuf[i] = b2[i];

if(rlen++ fread (dbuf+ BLOCK_LEN,1, BLOCK_LEN,fin)! = rlen)

return READ_ERROR; // citește biți rămași din dbuf

// se decriptează de la poziția rlen până la rlen + BLOCK_LEN

aes_dec_blk(dbuf + rlen, dbuf + rlen,ctx)

for (i=0; i < rlen; ++i)

dbuf [i+BLOCK_LEN] ^= dbuf[i]; //se stabilește lungimea finală corectă

b2 =dbuf; 1= rlen + BLOCK_LEN;

}

aes_dec_blk(b2,dbuf,ctx); // se decripteză folosinf fanionul de intrare

for(I = 0, i <BLOCK_LEN; ++i)

dbuf [i] ^= b1[i];

if(fwrite(dbuf,1,1,fout) !=1)

return WRITE_ERROR; // se scrie block-ul(cheia) decriptat și se interschimbă fanionii

bt =b1, b1=b2 ,b2=bt;

}

}

return 0

}

int main (int arge, char *argv[])

{ FILE *fin=0, *fout=0;

char *cp,ch,key [32];

int i,by,key_len, err =0;

aes_ctx ctx[1];

if(arge ! =5 || toupper(* argv [3]) ! = ‘D’ && toupper (* argv[3]) ! = ‘E’)

{

printf (“usage : aesxam in _ filename out _ filename[d/e] key_in_hex\n”);

err = -1; goto exit;

}

ctx-> n_md = 0; // toate fanioanele sunt zero

ctx->n_blk=0;

cp = argv[4]; // acesta este un pointer hexazecimal

i=0;

while (i<64 && *cp)

{

ch = toupper (*cp++);

if (ch>=’0’&& ch <=’9’)

by = (by <<4) + ch – ‘0’;

else if (ch>= ‘A’&& ch <=’F’)

by = (by <<4) + ch – ‘A’ + 10;

else// va da eroare dacă nu este hexazecimal

{

printf (“key must be in hexadecimal notation \n”);

err = -2; goto exit;

}

// memoreză un bit al cheii pentru fiecare pereche de caractere hexazecimale

if (I ++ & 1)

key [i/2-1]= by & 0xff;

}

if(*cp)

{

printf(“The key value is too long\n”);

err=-3, goto exit;

else if ( I <32||(i &15))

{

printf (‘The key length must be 32,48 or 64 hexadeciamal digits’n”);

err=-4;goto exit;

}

key_len=i/2;

if (!(fin = fopen(argv[1],”rb”)))

{

printf (“The inputb file :%s could not be epened\n”,argv [1]);

err=-5,goto exit;

}

if(!fout=fopen(argv[2], “wb”))) // se încarcă să se deschidă fișierul de ieșire

{

printf (“The input file %s could not be epened\n”,argv[1];

err=-6,goto exit;

}

if(toupper(*argv[3])=’E’) // criptarea în modul Cipher Block Chaining

{

aes_enc_key(key,key_len,ctx);

err=encfile(fin, fout, ctx, argv[1],argv[2]);

}

else // decriptarea în modul Chiper Block Chaining

{

aes_dec_key(key,key_len,ctx);

err=decfile(fin,fout,ctx,argv[1],argv[2]);

}

exit:

if (err == READ_ERROR)

printf(”Error reading to output file: %s\n”, argv[1]);

if (err == WRITE_ERROR)

printf (“Error writing to output file: %s\n”, argv[2]);

if (fout)

fclose(fout);

if (fin)

fclose(fin);

return err;

}

Bibliografie

[Tan97] Andrew S. Tanenbaum, „Rețele de calculatoare”, Ed. Computer Press Agora, 1997.

[PilPop 94] Florin Vladimir Pilat, Sorin Popa, Sorin Deaconu, Florin Radu, ”Introducere în interenet”, Ed. Teora 1994.

[Scrip08]Luminița Scripcariu, Ioan Bogdan, Ștefan Victor Nicolaescu,Cristina Gabriela Gheorghe,Liliana Nicolaescu. ”Securitatea rețelelor de informații”, Ed. Venus Iași 2008.

[Dab09] Dabija George ”Securitatea sistemelor de calcul și a rețelelor de calculatoare”

[CrS09] Crăciunescu Simona ”Rețele de calculatoare. Materiale de predare”

[IoD07]Ionescu Dan. ”Rețele de calculatoare”, Ed. All, Alba Iulia 2007.

[DJ02] J. Daemen, V. Rijmen: “The design of Rijndael. AES – The Advanced Encryption Standard”, Springer, Heidelberg Berlin, 2002.

[NG11] Narcis Ghiță. “Simularea rețelelor de calculatoare” UPT Timișoara 2011.

[DC05] D. Canright, “A Very Compact S-Box for AES,” in CHES, pp. 441–455,2005.

[PAH06] P. Hamalainen, T. Alho, M. Hannikainen, and T. D. Hamalainen, "Design and Implementation of Low-Area and Low-Power AES Encryption Hardware Core", in DSD’06: Proceedings of the 9th EUROMICRO Conference on Digital System Design, pp. 577–583, IEEE Computer Society, 2006.

[AdR13] Adrian Runceanu ”Rețele de calculatoare” Univ. Constantin Brâncuși Tg. Jiu 2013

[MS03] S. Morioka and A. Satoh, “An Optimized S-Box Circuit Architecture for Low Power AES Design,” in CHES ’02: Revised Papers from the 4th International Workshop on Cryptographic Hardware and Embedded Systems, pp. 172–186, Springer-Verlag, 2003.

[Le99] Lee, NIST Special Publication 800-21, Guideline for Implementing Cryptography in the Federal Government, National Institute of Standards and Technology, Noiembrie, 1999.

[1] Microsoft Corporation https://onedrive.live.com

[2] www.wikipedia.org

[3] Computer Security Objects Register (CSOR): http://csrc.nist.gov/csor/.

[4] Using AES encryping http://csrc.nist.gov/publications/flips/aes

DECLARAȚIE DE AUTENTICITATE

A

LUCRĂRII DE FINALIZARE A STUDIILOR

Titlul lucrării _____________________________________________________________________

________________________________________________________________________________

________________________________________________________________________________

Autorul lucrării _____________________________________________________________________

Lucrarea de finalizare a studiilor este elaborată în vederea susținerii examenului de finalizare a studiilor organizat de către Facultatea _________________________________________ din cadrul Universității din Oradea, sesiunea_______________________ a anului universitar ______________.

Prin prezenta, subsemnatul (nume, prenume, CNP)_____________________

___________________________________________________________________

___________________________________________________________________,

declar pe proprie răspundere că această lucrare a fost scrisă de către mine, fără nici un ajutor neautorizat și că nici o parte a lucrării nu conține aplicații sau studii de caz publicate de alți autori.

Declar, de asemenea, că în lucrare nu există idei, tabele, grafice, hărți sau alte surse folosite fără respectarea legii române și a convențiilor internaționale privind drepturile de autor.

Oradea,

Data Semnătura

Similar Posts

  • Piata de Automobile

    CUPRINS Introducere Capitolul 1 – Fundamente teoretice privind tema studiată 1.1 Vânzarea de mașini în România 1.2 Noțiuni teoretice despre leasing 1.3 Închirierea de mașini (Rent a car) Capitolul 2 – Noțiuni teoretice despre uneltele folosite în realizarea aplicației 2.1 Limbajul Java. Generalități. 2.2 Elemente pentru realizarea interfețelor grafice în Java 2.3 Lucrul cu baze…

  • Proiect la Bazele Sistemelor de Achizitii de Date

    Introducere Scurta prezentare Proiectul consta in creearea unei mini-statii meteo care sa furnizeze date despre prinicipalele caracteristicii alea aerului si anume: temperatura si umiditatea. Pentru realizarea obiectivului am utilizat placa de dezvoltare Arduino Uno R3 cu microcontroler-ul ATMEGA328P, senzorul de precizie DHT22 care preia date atat despre umiditate cat si despre temperatura si un LCD…

  • Sistem de Control Acces

    Cuprins Cuprins 1 1. Introducere 3 2. Considerente teoretice 4 2.1. Portul paralel al Pc-ului 4 2.1.1. IEEE 1284 4 2.1.2. Conectoarele 6 2.1.3. Cablul de conectare la Port 8 2.1.4. Modul de Funcționare Electric 8 2.1.4.1. Modul de Compatibilitate 8 2.1.4.1.1. Liniile de Date 9 2.1.4.2. Modul pe Nibluri 10 2.1.4.3. Modul pe Octeți…

  • Serviciile DIN Domeniul Informaticii

    CUPRINS Cuprins………………………………………………………………………………………….2 Marketingul Serviciilor informatice………………………………………….3 1.1. Ciber-Comunicarea…………………………………………………….5 Societatea Informațională………………………………………………………11 2.1. Tehnologia Informatiei – Internetul………………………………….10 2.2. “e” – Viitorul Prefix al Vieții Noastre……………………………….11 2.2.1. e-commerce – cum să demarezi propria ta afacere….12 2.2.2. e-business. Modele de Afaceri pe Internet……………..13 2.2.3. e-governence……………………………………………………..13 2.2.4. e-communities……………………………………………………14 2. 3. Convergența tehnologiilor informației și comunicațiilor. Internet computing………………………………………………………14 2.4 Schimbarea relației dintre…

  • Sistemul de Prevenire a Scurgerilor de Date, Bazat pe Informatiile Colectate din Retea

    Listă de figuri Figura 1.1 – Nivelele modelului de referință OSI și ale modelului TCP/IP 10 Figura 1.2 – Protocoale TCP/IP 12 Figura 1.3 – Lanț de comunicații HTTP folosind intermediari 13 Figura 1.4 – Modelul operațional FTP [1] 17 Figura 1.5 – Procesul Client/Server TCP/IP 19 Figura 2.1 – Clientul solicită pagina Google România…

  • Implementarea Unei Interfete Web Pentru O Companie de Imobiliare

    Cuprins Introducere Lucrаreа de fаță аre cа și scop reаlizаreа unui site web pentru o compаnie de imobiliаre. Аplicаțiа este reаlizаtă în Codeigniter, o plаtformă inovаtoаre și modernă ce permite scriereа unor аplicаții complexe, oferind fiаbilitаte și securitаte. In primul capitol am prezentat principalele componente ale unei afaceri de tip electronic, modalitatile de implementare ale…