Sunteți pe pagina 1din 39

Bartha Hunor Sistem criptografic de tip secure chat 1.

Cuprins

Bartha Hunor Sistem criptografic de tip secure chat 2. Fundamentare

Teoretic

2.1. Noiuni criptografice


2.1.1. Introducere
Cuvntul criptografie (cryptography) provine din limba greac din combinarea cuvintelor kryptos care nseamn ascuns !i graphia care nseamn scris" Criptografia ne ofer metode pentru ascunderea n#elesului unor mesa$e n a!a fel nct numai anumite persoane s le n#eleag% precum !i metode pentru a asigura ca con#inutul mesa$ului s rmn nealterat &Bo'(()" *n istorie% rolul criptografiei era cel descris mai sus% ns n lumea de a+i criptografia ofer mult mai mult" *n acest paragraf vom pre+enta cteva no#iuni de ba+ legate de criptografie" o Ce este un C,-. Codul este coresponden#a dintre un repertoriu fi/ de mesa$e la un set de simboluri stabilite n preambul" 0n e/emplu de cod binecunoscut este codul 1SC22 folosit la calculatoare pentru repre+entarea caracterelor !i a semnelor de punctua#ie" 3olosirea unui cod nu nseamn neaprat criptare% chiar dac codul este secret% !i are ca limitare faptul c nu se pot coda mesa$ele care nu au corespondent in setul de codare" o Ce este criptarea. Criptarea este procesul de transformarea unui mesa$ clar ( plain text) ntr4un mesa$ cifrat sau criptat (ciphertext)" 5rocesul de cifrare !i descifrare este pre+entat n figura 2.1.1:
Text necripta t

Criptar e

Decript ext are decripta t Diagrama unei cod ri

T ext criptat

o 6esa$e !i criptare -ac notam mesa$ul clar cu 6% mesa$ul cifrat cu C% func#ia de criptare cu 7% iar func#ia de decriptare cu - atunci n general trebuie respectat rela#ia8 D(E(M)) = M (2.1.1) o 1utentificare% 2ntegritate !i alte termeni Cum am +is mai devreme criptografia% n afar de cifrarea mesa$elor mai poate fi folosit !i la autentificare% verificarea integrit#ii mesa$ului% etc" Autentificarea nseamn% c destinatarul% cel care prime!te mesa$ul criptat poate fi sigur de originea acestuia" Integritate receptorul mesa$ului trebuie s aib posibilitatea de a verifica% daca mesa$ul a fost sau nu schimbat dup momentul trimiterii" Nerepudiere adic posibilitate de a ne asigura c cel care trimite mesa$ul s nu poate nega acest fapt" o 6esa$e !i chei 0n algoritm criptografic folosit pentru criptare respectiv decriptare este o func#ie matematic" Securitatea este oferit doar n ca+ul n care algoritmul este pstrat secret" *n acest ca+ vorbim de un algoritm restrns&Schn(9) :

Bartha Hunor Sistem criptografic de tip secure chat Criptografia modern re+olv acest neavanta$% prin folosirea cheilor de criptare% care pot lua valori ntr4un domeniu larg" *n acest ca+ rela#ia (:"1"1) devine8 D!(E!(M)) = M (2.1.2)

0nele algoritmi folosesc chei diferite pentru criptare !i decriptare% rela#ia care descrie acest procedeu este8 D!1(E!2(M)) = M (2.1.")

-iferen#a esen#ial a acestor algoritmi% fa# de algoritmii restrn!i este securitatea con#inut n cheie !i nu n algoritm% acest lucru permi#nd ca algoritmii s fie publica#i !i anali+a#i fr compromitarea securit#ii" *n figura urmtoare est ilustrat procedeul cu aceste algoritmi8
;e/t necriptat C heie K

%riptare

$ext criptat

C heie K

Decriptare

$ext decriptat

;e/t necriptat

C heie K1

%riptare

$ext criptat

C heie K2

Decriptare

$ext decriptat

criptarea cu chei simetrice si asimetrice o ;ipuri de algoritmi de criptare 7/ist trei tipuri de algoritmi folosi#i n criptografie" 1lgoritmi cu chei simetrice% algoritmi cu chei publice !i algoritmi de sens unic% numite !i func#ii hash ( message digest algorithms)"

2.1.2. Criptografia simetric


Criptografia simetric sau criptografia cu cheie secret este o form mai tradi#ional a criptografiei" 1ceste algoritmi de obicei folosesc acela!i cheie pentru criptarea !i decriptare" 1ceast metod% n afar de ascunderea mesa$ului ofer si autentificare% prin coduri de autentificare a mesa$ului (message authentification codes 61C) &<S1==)" 0n 61C este un cmp de autentificare% numit !i sum de control ( checksum)% ob#inut prin aplicarea unei cheme de autentificare% mpreun cu o cheie secret% adugat la mesa$" Spre deosebire de semnturile digitale 61C4urile sunt calculate !i verificate cu acela!i cheie% deci pot fi verificate doar de cel care prime!te mesa$ul" 5roblema principal este de a face ca emi#torul !i receptorul s fie de acord despre cheia secret fr ca s afle altcineva" -ac ei se afl n +one fi+ice separate% ei trebuie s aib ncredere ntr4un curier% sau un sistem de telefoane% sau alt sistem de transmisie a datelor% s nu le de+vluie cheia secret care este comunicat" ,ricine interceptea+ cheia n timpul transmisiei poate mai tr+iu s citeasc toate mesa$ele criptate cu acea cheie" 1vanta$ul ns este vite+a acestor algoritmi% care este mult mai mare fa# de algoritmii cu chei publice" 1lgoritmi simetrici pot fi clasificate n dou categorii% conform &'''=1)8 cele care criptea+ blocuri de date (#lock ciphers) !i cele care criptea+ flu/uri de date (stream ciphers)" 1lgoritmii care lucrea+ cu flu/uri criptea+ un mesa$ul bit cu bit pe cnd cele care lucrea+ cu blocuri iau mai mul#i bi#i !i le procesea+ ca !i o unitate >

Bartha Hunor Sistem criptografic de tip secure chat Cteva e/emple de algoritmi bloc sunt8 <C:% <i$ndael% -7S !i ;riple-7S" ?om pre+enta pe rnd fiecare n cele ce urmea+"

2.1.2.1. Algoritmul DES


-7S (-ata 7ncryption Standard) este unul din cei mai folosi#i algoritmi n lume" -es este un algoritm care operea+ pe blocuri de 9@ de bi#i" 0n te/t de 9@ bi#i este transformat n 9@ de bi#i coda#i" 1cela!i cheie este folosit att la criptare ct !i la decriptare" Aungimea de cheie este de B9 bi#i" (Cheia de obicei este e/primat ca !i un numr de 9@ de bi#i dar fiecare al C4lea bit este folosit pentru verificare de paritate !i este ignorat aceste bi#i de paritate sunt bi#ii cei mai nesemnificativi din octe#i")" Cheia poate fi orice numr de B9 bi#i !i poate fi schimbat n orice moment" Sunt cteva numere care sunt considerate chei slabe dar ele pot fi evitate cu u!urin#" 1lgoritmul aplic pe te/tul de codat o nlocuire urmat de o permutare% acesta repre+int o rund" -7S are 19 runde% deci aplic combina#ia tehnicilor de mai sus de 19 ori" 1lgoritmul folose!te aritmetic standard !i opera#ii logice pe numere de ma/im 9@ bi#i% deci a fost u!or de implementat chiar !i cu tehnologia anilor D=" Eatura repetitiv a algoritmului l fac ideal de implementat pe un chip special" Descrierea algoritmului Cum am preci+at -7S operea+ pe blocuri de 9@ de bi#i" -up o permutare ini#ial blocul este despr#it n dou blocuri de cte >: bi#i fiecare" 1poi urmea+ 19 runde de opera#ii identice numite 3unc#ii f% n care datele sunt combinate cu cheia" -up ultima rund cele dou $umt#i sunt compuse din nou !i o permutare final (inversa celei ini#iale) este efectuat" *n fiecare rund bi#ii cheii sunt deplasa#i apoi @C bi#i sunt selecta#i din cele B9 ai cheii" 5artea dreapt a datei este e/pandat la @C bi#i% 4 folosind o permutare de e/pansie combinat cu cei @C bi#i selecta#i a cheii folosind func#ia F,<% trecut prin C blocuri S (blocuri de substitu#ie)% producnd >: bi#i noi !i permutat iar!i" 1ceste opera#ii repre+int Funcia f" <e+ultatul 3unc#iei f este combinat cu partea stng folosind F,<" <e+ultatul acestor opera#ii devine noua parte dreapt" 1ceste opera#ii sunt repetate de 19 ori% repre+entnd 19 runde -7S" -iagrama opera#iilor este pre+entat n figura :":"1" ermutarea iniial nu afectea+ securitatea algoritmului% a fost introdus probabil pentru a u!ura implementarea pe procesoare pe 19 !i >: bi#i" Transformarea c!eii" ini#ial cheia de 9@ bi#i este redus la B9 bi#i (bi#ii de paritate sunt elimina#i)" -up reducerea cheii o sub4cheie de @C bit este generat pentru fiecare rund -7S" -eterminarea sub4cheii este reali+at n felul urmtor8 cheia de B9 bi#i este divi+at n dou $umt#i de :C bi#i" 1ceste $umt#i sunt deplasa#i circular n stnga cu unu sau doi bi#i% n func#ie de rund" Eumrul de bi#i cu care trebuie deplasat cheia este dat n tabelul :"1 8 &und 1 2 " ' ( ) * + , 1 2 1 1 2 1 2 2 1 " 2 1 ' 2 1 ( 2 1 ) 1

.r. 1 1 2 2 2 2 2 2 1 #i/i $a#el 2.1 .um rul de #i/i cu care este deplasat cheia0 1n func/ie de rund

Bartha Hunor Sistem criptografic de tip secure chat

2igura 2.2.1 Diagrama algoritmului DE3 -up deplasare @C din cele B9 bi#i sunt selecta#i" -eoarece acest algoritm nu numai schimb ordinea bi#ilor dar !i selectea+ un sub4set din bi#ii cheii se nume!te algoritm de compresie" -in cau+a deplasrii un sub4set diferit de bi#i este folosit n fiecare sub4cheie" ermutarea de e#pandare" 1ceast opera#ie mre!te numrul de bi#i n blocul drept al datelor de la >: la @C bi#i" 1ceast opera#ie repet anumite bi#i% de acea este numit opera#ie de e/pandare (e/pansie)" Scopul opera#iei este de a face blocul de mrime egal cu cheia% pentru a aplica F,<% mai departe ofer un re+ultat mai lung care poate fi compresat n procesul de substituire" 6ai are efect !i din punct de vedere criptografic% deoarece un singur bit afectea+ dou substituiri% dependen#a bi#ilor de ie!ire de bi#ii de intrare se rspnde!te mai repede" 1cest efect se nume!te Gefectul de avalan!H" -7S a fost conceput% ca s a$ung ct mai repede n starea% n care fiecare bit din te/tul cifrat s fie dependent de fiecare bit din te/tul de intrare" $locul de su%stituire &$locul S' -up ce cheia compresat este compus cu blocul e/pandat% prin F,<% re+ultatul de @C bi#i intr n blocul de substituire" 1ceste substituiri sunt reali+ate de C blocuri de substituire% care au 9 bi#i ca intrare !i @ ca ie!ire" Cei @C bi#i sunt descompu!i n C blocuri de cte 9 bi#i care sunt trecute prin blocurile S" 1ceste blocuri repre+int de fapt tabele cu patru linii !i 19 coloane% avnd n fiecare po+i#ie un numr de @ bi#i" Cei 9 bi#i ce intr specific po+i#ia valorii care va fi ie!irea" -e e/emplu dac avem intrarea b1b:b>b@bBb9% bi#ii b1 cu b9 formea+ un numr pe : bi#i care va specifica rndul din tabel (=4>)% cei @ bi#i b :b>b@bB formea+ un numr ntre = !i 1B care va specifica coloana din tabel" <e+ultatul acestor substitu#ii produc C grupe de @ bi#i care sunt recombinate ntr4un bloc de >: bi#i" 1cest grup este transmis mai departe la blocul de permutare 5" $locul de ermutare " 1cest bloc face o mapare a fiecrei bit de intrare la o alt po+i#ie la ie!ire" Eici un bit nu este folosit de dou ori !i nici unul nu este ignorat" ;abela dup care se face maparea este urmtoarea8 B

Bartha Hunor Sistem criptografic de tip secure chat 1 ) 2 * + 2 2 ' 2 1 1 ' 2 , " 2 1 2 1 1 1 2 2 2 + * ( " ) 2 " , 1 1 " ) * , " $a#el 2.2 4ermutarea de #loc 4 ( 2 2 1 + 1 1 " 1 ' 1 2 (

*n final re+ultatul acestei permutri este compus prin F,< cu partea stng a blocului ini#ial de 9@ bit% apoi partea dreapt este schimbat cu partea stng !i se ncepe un nou rund" ermutaia final este inversa celei ini#iale" -ecriptarea cu -7S ,pera#iile de la criptare au fost concepute n a!a fel nct acela!i func#ie poate fi folosit la decriptare% ce am folosit !i la criptare" Singura diferen# este% c trebuie s folosim cheile n ordine invers" 1lgoritmul care generea+ sub4cheile folosite la fiecare rund este tot similar cu cel de la criptare% cu diferen#a c deplasarea se face n dreapta% !i numrul po+i#iilor cu care deplasm sunt8 &und 1 2 " ' ( ) * + , 1 2 1 1 2 1 2 2 1 " 2 1 ' 2 1 ( 2 1 ) 1

.r. - 1 2 2 2 2 2 2 1 #i/i $a#el 2." 4o5i/iile de deplasare la decriptarea DE3 Securitatea DES

-e4a lungul multor ani de testare !i criptanali+ -7S s4a dovedit un algoritm sigur% singurele slbiciuni fiind cteva chei slabe !i lungimea cheii" 2ni#ial -7S a fost proiectat cu chei de lungime 11: bi#i% dar pn ce a a$uns standard acesta era redus la B9 de bi#i" 6ul#i au considerat lungimea cheilor nesatisfctoare mpotriva unui atac de for# brut" Cu cre!terea vite+ei chipurilor de$a posibilitatea de a reali+a un aparat care s fie capabil s descifre+e un mesa$ codat a devenit din ce n ce mai accesibil" 5e cnd n 1(C1 Hellman !i -iffie au estimat reali+area unui astfel de aparat la B= de milioane de dolari% n 1((> 6ichael Ieiner a proiectat un astfel de aparat avnd costul de 1 milion de dolari% care era capabil de reali+area unui atac de for# brut reu!it n >%B ore" Ca !i remediu au aprut o sumedenie de algoritmi care au ca ba+ -7S dar ncearc mrirea securit#ii acestuia" Cel mai cunoscut !i rspndit este ;riple-7S"

2.1.2.2. Triple DES


;riple-7S folose!te pur !i simplu algoritmul -7S de trei ori cu trei chei diferite% folosite n ordine stabilit" 1stfel ob#inem practic o lungime a cheii de >J9@ K 1(: bi#i (fr a lua n considerare bi#ii de paritate)" -iagrama de operare a algoritmului este pre+entat n figura :":":" Se mai folose!te criptarea tripl !i cu dou chei% folosind L1 la primul bloc% L: la al doilea !i iar!i L1 la al treilea bloc" 1stfel ob#inem o lungime teoretic de cheie de 1:C bi#i practic 11: bi#i% lund n considerare bi#ii de paritate" *n &Schn(9) se recomand folosirea variantei cu trei chei"

Bartha Hunor Sistem criptografic de tip secure chat


Criptare -7S ;e/t decriptat

DES L L : DES

DES L ;e/t > DES

1 DES

criptat

-ecriptare 2igura 2.2.2 3chema de principiu a cod rii $ripleDE3

2.1.2.(. )C2
Conform &<S1==)% <C: este un algoritm de criptare cu chei de lungime variabil proiectat de <on <ivest de la <S1 Security 2nc" 7ste un algoritm proprietar% iar detaliile de implementare nu au fost fcute publice" <C: operea+ pe blocuri de 9@ bi#i !i a fost proiectat pentru a nlocui -7S" Conform afirma#iilor firmei este de > ori mai rapid dect -7S% vite+a algoritmului fiind dependent de lungimea cheii alese" 6otivul pentru care <C: !i <C@ sunt folosite destul de mult este n#elegerea ntre S51 (Soft'are 5ublisher 1ssociation) !i guvernul Statelor0nite% conform cruia <C: !i <C@ procesul de aprobare a e/portului algoritmilor este mult mai simpl% cu condi#ia ca cheile s fie mai scurte dect @= de bi#i" ;otu!i% ce ne d de gndit n legtur cu securitatea algoritmului este tocmai aceast n#elegere" 7ste aproape sigur c guvernul S01 nu ar aproba e/portul algoritmilor pe care nu le poate sparge" &Schn(9)

2.1.2.*. )i+ndael
-eoarece -7S a devenit nesigur% nevoia de a4l nlocui a fost din ce n ce mai mare" 5entru a reali+a acest lucru E2S; (Eational 2nstitute of Standards and ;echnology) a #inut o competi#ie n anul 1((D pentru a proiecta 17S (1dvanced 7ncryption Standard)% ca !i succesorul -7S" Ca !i solu#ie temporal a fost acceptat folosirea ;riple-7S% ca un standard temporal pn ce se termin proiectarea 17S" Cei cinci candida#i final pentru 17S au fost 61<S% <i$ndael% Serpent% !i ;'ofish" *n anul :==1 <i$ndael a fost ales ca algoritmul pentru 17S" 1lgoritmul a fost proiectat de Moan -aemem !i ?incent <i$men" Aungimea de cheie poate fi 1:C% 1(:% sau :B9 bi#i conform cerin#elor 17S" Aungimea cheii trebuie s fie una din valorile preci+ate mai sus% nu poate fi arbitrar" Si lungimea de bloc poate fi tot de 1:C% 1(:% :B9 bi#i% teoretic fiind posibile toate cele ( combina#ii a lungimilor cheii !i a lungimilor de bloc% ns lungimea de bloc oficial 17S este 1:C bi#i% deoarece criptanali+a efectuat nainte de a pronun#a <i$ndael standard s4a concentrat mai ales pe blocurile de lungimea 1:C" Eumrul de runde din algoritm este variabil ntre 1= !i 1@ fiind dependent de lungimea de bloc" 1lgoritmul a fost destul de mult criticat pentru numrul redus de runde% dar numrul de runde poate fi schimbat cu u!urin#% dac se va considera c este necesar acest lucru" -escrierea n detaliu a algoritmului poate fi gsit pe pagina &'''=1)

Bartha Hunor Sistem criptografic de tip secure chat

2.1.(. Criptografie asimetric


Criptografia asimetric% numit !i criptografia cu chei publice a fost inventat n 1(D9 de Ihitfield -iffie !i 6artin Hellman pentru a re+olva problema de management a cheilor" *n noul sistem% fiecare persoana prime!te o pereche de chei% denumite cheie public !i cheie privat" Cheia public a fiecrei persoane este publicat iar cheia privat este pstrat secret" Eevoia pentru emi#tor !i receptor s4!i comunice informa#ie este eliminat8 toate comunica#iile se folosesc doar de cheile publice !i nici o cheie privat nu este transmis" Eu mai este necesar s se aib ncredere n canalul de comunica#ie pentru a fi sigur de confiden#ialitate" ,ricine poate transmite mesa$e confiden#iale doar folosind informa#ie public% dar poate fi decriptat cu o cheie privat care este doar n posesia receptorului vi+at" 6ai mult chiar% criptografia cu chei publice poate fi folosit att pentru autentificare ct !i pentru securi+are" -eoarece ntr4un sistem cu chei publice e/ist o legtur matematic bine definit !i cunoscut de toate lumea ntre cheia privat !i cheia public tot timpul e/ist posibilitatea de ataca acest sistem prin calcularea cheii private din cheia public" -e obicei aceste sisteme sunt prote$ate de aceste atacuri prin calcularea cheilor n a!a fel nct opera#iile inverse s fie ct se poate de dificile" -e e/emplu pentru atacarea acestor sisteme ar fi necesar din partea atacatorului s descompun n factori numere foarte mari% cee4a ce este practic imposibil de reali+at n timp util" 1ceasta este ideea pe care se ba+ea+ <S1" 5rin e/isten#a unei chei publice !i unei chei private este posibil ca% cheia public s fie accesibil de toat lumea% de e/emplu pe site4uri publice" 0n e/emplu de comunicare ar fi urmtoarea8 dac 6aria dore!te s transmit un mesa$ privat lui 6ihai atunci ea folose!te cheia public a lui 6ihai% criptea+ mesa$ul% !i trimite te/tul cifrat" 6ihai% descifrea+ mesa$ul folosind cheia lui privat" Singura persoan care poate decripta mesa$ul este 6ihai deoarece numai el are cheia privat corespun+toare cheii publice folosit la criptare"

2.1.(.1. Atacuri posi%ile asupra sistemelor cu c!ei pu%lice


Cel mai evident atac ar fi calcularea cheii private din cheia public% dar acest lucru este destul de greu pentru c fiecare algoritm cu chei publice se ba+ea+ pe o func#ie de Gsens unicH% cu care este foarte u!oar calcularea cheilor private !i publice dar opera#ia invers% cunoscnd numai una dintre chei este foarte dificil" 6etodele cele mai eficiente de spargerea acestor sisteme de criptare nu se ndreapt spre spargerea efectiv a algoritmului prin calcularea cheii private ci se folosesc de slbiciunile unor protocoale% folosite" Impersonificarea este procedeul prin care un atacator pretinde c ar fi unul din persoanele care doresc s comunice" 5ornind din e/emplul precedent% dac un atacator ar dori s afle ce vorbe!te 6ihai cu 6aria ar putea s ncerce urmtorul lucru8 !i generea+ cheile lui% !i trimite un mesa$ul G7u sunt 6ihai aici este cheia mea public"H la 6aria" 6aria cre+nd c are vorbe!te cu 6ihai codea+ mesa$ul cu cheia public primit% si trimite pe canalul nesigur" 1tacatorul interceptea+ mesa$ul% decriptea+ cu cheia lui privat% !i criptea+ din nou cu cheia public real a lui 6ihai% apoi trimite te/tul cifrat mai departe la 6ihai% adugnd cheia lui public ca !i cum ar fi chei public a lui 6aria" 6ihai folosind cheia primit rspunde la mesa$ care iar!i ca fi interceptat de atacator% decriptat% criptat din nou !i trimis la 6aria" 1cest scenariu presupune c 6ihai !i 6aria nu au o surs sigur de unde pot s afle cheia public a celuilalt" 5entru evitarea acestor tipuri de atacuri s4au format autorit#ile de certificare (C1)" 1ceste autorit#i ofer certificate digitale care garantea+ c cheia public con#inut n certificate apar#ine persoanei cruia i4a fost emis certificatul"

Bartha Hunor Sistem criptografic de tip secure chat

2.1.(.2. )SA &)i,est S!amir Adleman'


Cel mai popular algoritm cu chei publice n +iua de a+i este <S1" Eumele algoritmului provine de la ini#ialele inventatorilor <on <ivest 1di Shamir !i Aeonard 1dleman% !i a re+istat la mai mult de := de ani de criptanali+ intensiv" Securitatea algoritmului se ba+ea+ pe dificultatea factori+rii numerelor mari" Cheile private !i publice sunt func#ia a dou numere mari prime" Descrierea algoritmului 1lgoritmul <S1 func#ionea+ astfel8 se iau dou numere prime% p !i N% !i se face produsul n = p6O Se alege un numr e mai mic dect n !i relativ prim cu (p71)(671)% !i se gse!te inversul su modular d astfel nct (ed71) se divide cu (p71)(671)O e !i d se numesc e/ponen#i publici% respectiv priva#i" Cheia public este perechea (n0 e)O cheia privat este d" 3actorii p !i 6 trebuie s fie #inu#i secret sau s fie distru!i" 7ste foarte dificil s se ob#in cheia privat d din cheia public (n%e)" *ntreaga securitate a <S1 se ba+ea+ pe presupunerea c descompunerea n factori este dificil" , metod u!oar de factori+are ar PspargeH <S1" 0n e/emplu despre modul n care func#ionea+ criptarea cu <S18 6aria dore!te s transmit un mesa$ privat% m% lui 1ndrei" 6aria creea+ un mesa$ criptat e/ponen#nd c=m8e mod n% unde e !i n sunt cheia public a lui 1ndrei" Ca s decripte+e% 1ndrei e/ponen#iea+ de asemenea m=c8d mod n% !i recuperea+ mesa$ul originalO rela#ia ntre e !i d asigur c 1ndrei recuperea+ corect mesa$ul m" -in moment ce numai 1ndrei cunoa!te d% numai 1ndrei poate s decripte+e mesa$ul" Securitatea )SA Securitatea <S1 se ba+ea+ n ntregime pe dificultatea de a factori+a numere mari" *n afar de factori+are mai este posibilitatea de a ghici valoarea ( p71)(691)" 1cest atac este la fel de dificil ca !i factori+area lui n" 7ste posibil !i atacul de for#4brut prin ncercarea tuturor valorilor posibile ale lui d% pn ce gsim valoarea corect" 1ceast metod este mai lent dect factori+area modulului% conform &Schn(9)" 1lte metode se folosesc de slbiciunile implementrilor specifice <S1" Sunt foarte multe asemenea scenarii% descrise n detaliu n &Schn(9)% noi vom anali+a numai cteva dintre acestea" 3cenariul 1: Qtefan% ascultnd canalul pe care comunic 6aria% interceptea+ un mesa$ cifrat c% criptat cu cheia ei privat" 5entru a citi mesa$ul Qtefan vrea s afle m0 care matematic nseamn8 m = cd" 5entru a recupera m el alege un numr aleator r astfel nct r:n" 3olosind cheia public a lui 6aria el calculea+8 x = re mod n y = xc mod n t = r71 mod n dac x = re mod n0 atunci r = xd mod n. Cumva Qtefan reu!e!te s aran$e+e ca 6aria s semne+e y cu cheia ei privat% re+ultatul semnrii fiind8 u = yd mod n" 1vnd aceste informa#ii Qtefan acum poate s calcule+e m8 tu mod n = r71yd mod n = r71xdcd mod n = cd mod n = m 3cenariul 2: (

Bartha Hunor Sistem criptografic de tip secure chat S presupunem c 6aria este un notar public" -ac cineva dore!te s ob#in un document semnat trimite la 6aria care trimite napoi mesa$ul semnat" -ac in infractor dore!te s ob#in un document semnat 4 care% n mod normal nu ar fi semnat de 6aria pe care numim m1" 2nfractorul ia o valoare arbitrar x !i calculea+ y = xe mod n% e fcnd parte din cheia public a lui 6aria" 1poi calculea+ m = ym1 mod n% !i trimite la 6aria ca ea s semne+e" Ce va primi de la 6aria va fi md mod n" -up ce atacatorul calculea+ (md mod n)x71 mod n = m1d mod n care este semntura pentru m1" -e fapt sunt mai multe metode pentru a ob#ine acest lucru% comun fiind n toate faptul c e/ploatea+ urmtoarea lege matematic8 (xm)d mod n = xdmd mod n Semntura digital 3olosind criptografia cu chei publice este posibil autentificarea persoanei care a trimis mesa$ul% !i asigurarea ca mesa$ul nu a fost alterat ntre timp" 1cest procedeu se nume!te semntur digital% !i nseamn de fapt criptarea mesa$ului cu chei privat" <S1 permite ca pentru criptarea s folosim oricare dintre chei% acestea putnd fi folosite n mod simetric% anume datele criptate cu una dintre chei pot fi decriptate cu cealalt cheie" -e e/emplu dac 6aria dore!te s trimit un mesa$ semnat lui 6ihai atunci ea criptea+ mesa$ul cu cheia ei privat% care va putea fi decodat folosind cheia ei public" ;rebuie preci+at c n e/emplul de mai sus nu mai e/ist confiden#ialitate deoarece mesa$ul criptat de 6aria poate fi decriptat de oricine% deoarece cheia public este accesibil tuturor" -ac 6aria dore!te s pstre+e securitatea mesa$elor atunci trebuie prima dat s cripte+e mesa$ul cu cheia public a lui 6ihai dup care criptea+ nc o dat re+ultatul ob#inut cu ei privat" 1stfel a ob#inut securitate !i autentificare" 6ihai dup ce prime!te mesa$ul prima dat decriptea+ cu cheia public a lui 6aria% asigurndu4se c mesa$ul a fost trimis de ea apoi decriptea+ cu cheia lui privat" ;otu!i folosirea aceluia!i pereche de chei pentru criptare !i semntur are de+avanta$e% !i poate fi e/ploatat de infractori" Solu#ia pentru aceast problem este folosirea certificatelor digitale"

2.1.(.(. Certificate digitale


5rin introducerea criptografiei cu chei publice s4a eliminat problema distribu#iei cheilor de criptare care era cel mai mare de+avanta$ a criptografiei simetrice% ns a aprut o alt problem% anume nevoia autorit#ilor de certificare (C1)" C1 garantea+ c o cheie public apar#ine unei anumite persoane% astfel nu apare posibilitatea impersonificrii" , C1 emite un certificat digital% cu cheia public a beneficiarului ata!at !i semnea+ acest certificate" Semntura C1 poate fi verificat de oricine care are cheia public a autorit#ii respective% sau un certificat cu cheia public a acestuia" 1stfel se a$unge la o ierarhie de ncredere care are la vrf o organi+a#ie% n care toate lumea are ncredere" -eci se poate spune c un certificat face legtura ntre o nume !i o cheie public" *n mod absurd cele mai puternice tehnici de criptare se ba+ea+ pe ncredere" Eu putem avea securitate% numai dac avem ncredere n cineva care ne garantea+ c cheia public pe care vrem s folosim apar#ine celui care pretinde c i apar#ine" 1stfel ma$oritatea infrastructurilor cu cheie public (5L2) se ba+ea+ pe certificate digitale" Standardul folosit pentru certificate digitale este standardul F"B=(" 1cest standard a fost elaborat de 2;04;% detaliile putnd fi gsite n &rfc:@B()" Conform &rfc:@B() un certificat F"B=( are cmpurile din tabelul urmtor8
?ersiune (?ersion) Eumr crt" (Serial Eumber)

1=

Bartha Hunor Sistem criptografic de tip secure chat


2dentificator algoritm (1lgorythm 2-) ,rgani+a#ia emi#toare (2ssuer) ?aliditate (?alidity) Eot before8 Eot after8 Beneficiar (Sub$ect) 2nforma#ii cheie public beneficiar (Sub$ect public Rey info8 1lgorythm and 2-) 7mi#tor 2- (2ssuer 0niNue 2-) Beneficiar 2- (Sub$ect 0niNue 2-) 7/tensii (7/tesions) 1lgoritm de semnare certificat (Certificate signature algorithm) Semntur certificat (Certificate signature)

$a#el 2.".1 %;mpurile certificatelor <.(-, 0n e/emplu de certificat cu cmpurile pre+entate n tabelul :">"1 completate este pre+entat n figura :">"1" *n figura :">"1 avem un certificat F"B=( ?>% cu algoritmul de semntur 6-B'ith<S1" ;rebuie men#ionat c la crearea semnturilor digitale nu se semnea+ ntregul mesa$% n ca+ul nostru ntregul certificat% ci se creea+ o sum de control sau hash folosind un algoritm de acest tip% !i numai codul hash este semnat digital" 1cest procedeu este mult mai eficient !i mai sigur din punct de vedere criptografic" 6dB<S1 nseamn c s4a folosit func#ia hash 6-B pentru creare de hash% iar <S1 pentru semnarea documentului" *n cmpul GSub$ectH se mai poate specifica n afar de nume !i numele organi+a#iei% adresa% #ara 2igura 2.".1 %ertificat <.(-, etc" Conform &rfc:@B() certificatele trebuie s fie codate folosind regulile 1SE"1 (1bstract Synta/ Eotation) -7< (-istinguised 7ncoding <ules) pentru fiecare element" , descriere detailat 1SE"1 poate fi gsit n &'''=:)" -7< este un set de reguli de codare care este de fapt un sub4set al 1SE"1" 0n e/emplu de comunicare ntre 6aria !i 6ihai% folosind certificate8 6aria ia certificatul lui 6ihai dintr4o ba+ de date !i verific autenticitatea acestuia" -ac C1 care a emis certificatul este acela!i pentru amndou atunci verificarea este foarte simpl% 6aria verific doar semntura C1 de pe certificatul lui 6ihai" -ac ns C1 care a emis nu este acela!i cu al lui 6aria atunci situa#ia se complic pentru c ea nu are cheia public (adic certificatul) autorit#ii care a emis certificatul lui 6ihai" 7a trebuie s ia dintr4o ba+ de date certificatul respectivului C1 !i s verifice autenticitatea acestuia% cu certificatul autorit#ii care a emis certificatul" 1cest ciclu se repet pn ce se a$unge la un certificat care e/ist n lista de certificate a 6ariei (adic a$ungem la o autoritate de ncredere din punctul de vedere a 6ariei)" Se poate percepe ca !i o structur de tip arbore% e/emplificat n figura :">":"

11

Bartha Hunor Sistem criptografic de tip secure chat


C1 de ba+ (<oot C1)

%>1 %>1 1
6aria

%>2 %>1 2

%>"

Miha %>11 %>12 i 22 1 2igura 2.".2 3tructura de ar#ore a lan/ului de certificare

Se poate observa c C11 este primul punct comun n lan#ul de certificate% adic C11 este autoritatea de certificate n care au ncredere amndou participan#i"

;rebuie preci+at ca s avem un 5L2 func#ional to#i participan#ii trebuie s aib n lista lor de certificate de ncredere (;rusted certificates) un C1 de ba+ numit !i C1 rdcin" 1ceast arhitectur ns are o mare slbiciune% acest lan# de certificate este la fel de slab ca !i elementul cel mai slab din lan#" 1 garanta identitatea cuiva nu ofer garan#ie asupra e/igen#ei acestuia n verificarea identit#ilor crora le va emite certificate" ;rebuie selectate cu aten#ie autorit#ile pe care considerm c pot fi de ncredere% dar aceast op#iune este dat pentru toat lumea% avnd acces la lista privat de certificate cu posibilitatea de a aduga sau a !terge certificate din list" &;an=>)

2.1.(.*. -CS .12 & ersonal Information E#c!ange S/nta# Standard'


Standardele 5LCS (5ublic4Ley Cryptography Standards) sunt un set de standarde pentru criptografia cu chei publice elaborate de <S1 Aaboratories n cooperare cu 1pple 6icrosoft% -7C% Aotus% Sun !i 62;" 1ceste standarde sunt concepute att pentru date binare ct !i pentru date 1SC22" Sunt compatibile cu standardele F"B=( 2;04;% mai departe% includ att implementri algoritm specifice ct !i implementri independente de algoritm" 5LCS S1: specific un format portabil pentru stocarea sau transportarea cheilor private% certificatelor sau altor secrete" Conform &<S1(() e/ist patru moduri de inter4schimbare a cheilor prin combinarea modurilor de secreti+are (pri=acy modes) cu modurile de integritate (integrity modes)" 6odurile de secreti+are folosesc criptarea pentru a prote$a informa#iile private iar modurile de integritate prote$ea+ informa#iile personale mpotriva posibilelor alterri accidentale sau inten#ionate" 0odurile de secreti1are o 3ecreti5are cu cheie pu#lic : 2nforma#ia personal este pus ntr4o anvelop folosind o cheie public de ncredere a platformei% pe care dorim s transportm informa#iile" 1ceast anvelop digital poate fi deschis cu cheia privat corespondent cheii publice cu care s4a fcut criptarea" o 3ecreti5are cu parol : 2nforma#ia personal este criptat cu o cheie simetric% derivat din numele de utili+ator !i o parol introdus" 0odurile de integritate o 2ntegritate cu cheie public8 2ntegritatea informa#iilor este garantat printr4o semntur digital efectuat asupra con#inutului fi!ierului pf/ folosind o cheie privat de la platforma surs" Semntura poate fi verificat pe platforma destina#ie folosind cheia public corespun+toare" 1:

Bartha Hunor Sistem criptografic de tip secure chat o 2ntegritate cu parol8 2ntegritatea este garantat printr4un 61C (6essage 1uthentification Code) derivat dintr4o parol introdus" -in punct de vedere a securit#ii sunt preferabile modurile cu cheie public" ;otu!i nu este tot timpul posibil s folosim aceste moduri% cum ar fi de e/emplu situa#ia cnd nu !tim n momentul e/portrii care va fi platforma de destina#ie" ;oate platformele care se conformea+ standardului trebuie s ofere posibilitate de a e/porta !i de a importa fi!iere pfx 4D?" 1cestor fi!iere n func#ie de modul folosit pot fi semnate% sau le este ata!at un 61C" Sinta/a 53F 5-0 ;oate modurile de schimb folosesc acela!i forma 5-0% 1SE"1 !i codarea B7< asigur independen#a de platform" Standardul specific un singur tip de e/port% anume e/portul 1SE"18 53F" 2nstan#ele 53F con#in urmtoarele cmpuri8 1" Indicator de ,ersiune (acest cmp este v> dac se conformea+ standardului 5LCS S1:) :" ContentInfo (preluat din 5LCS SD) a crui cmp de tip contentT/pe este signedData dac s4a folosit modul de integritate cu cheie public sau data dac s4 a folosit modul de integritate cu parol" >" 0acData% care este o instan# op#ional fiind pre+ent numai n modul de integritate cu parol% care con#ine cmpurile% definite n (5LCS SD)% DigestInfo% con#innd valoarea 61C% macSalt !i iterationCount" Cmpul macSalt este folosit pentru a ngreuna atacurile de dic#ionar (dictionary attacR) prin adugarea de date aleatoare la parol" *n &<S1(() se poate gsi o descriere detailat a formatului pf/% a tipurilor folosite n acest standard conform 1SE"1 B7<"

2.1.*. Funcii 2AS2


3unc#iile H1SH efectuea+ transformri asupra unei intrri de o lungime arbitrar genernd o ie!ire de lungime fi/ care este o imagine a intrrii" ?aloarea GimaginiiH returnate se nume!te valoare H1SH" 1ceste func#ii se mai numesc !i func#ii Gmessage digestH% deoarece din valoarea H1SH este imposibil de reconstruit intrarea despre care s4a fcut imaginea" 7/ist multe func#ii care pot transforma intrarea de lungime arbitrar la o ie!ire de lungime fi/% ns func#iile care pre+int interes din punct de vedere criptografic sun func#iile hash de sens unic (one'ay hash functions)" 7cua#ia general care descrie func#iile hash este dat de ecua#ia :">"1% unde @ este func#ia% h valoare hash% M intrarea8 h = @(M)0 unde h are lungimea m. (2.".1) Caracteristicile speciale ale func#iilor de sens unic sunt urmtoarele8 o 5entru orice intrare M este u!or de calculat h" o 1vnd h este dificil de calculat M astfel nct se fie satisfcut rela#ia (:">"1)" o 5entru un M dat este dificil de gsit M1 astfel nct @(M) = @(M1). 1ceste propriet#i ale func#iilor hash de sens unic folosite n criptografie sunt e/trem de importante deoarece dac un atacator ar putea gsi cu u!urin# o valoare de intrare M1 care produce acela!i re+ultat cu M atunci dac cineva semnea+ M atacatorul ar putea afirma c M1 a fost semnat" Ca o cerin# adi#ional pentru aceste func#ii este ca s fie dificil de gsit dou mesa$e aleatoare care s aib acela!i imagine% altfel spus8 o 7ste dificil de gsit mesa$ele aleatoare M !i M1 astfel nct @(M) = @(M1)" 1>

Bartha Hunor Sistem criptografic de tip secure chat 0n posibil atac% dac ultima cerin# nu este ndeplinit ar fi atacul numit Gatacul +ilei de na!tereH (birthday atacR)" 1cest tip de atac !i4a primit numele de la parado/ul +ilelor de na!tere" *n mod surprin+tor% se poate dovedi matematic c probabilitate ca n orice grup de :> de persoane doi sau mai mul#i indivi+i s aib acela!i +i de na!tere este mai mare dect T" 1tacul descris n &Schn(9) presupune folosirea unei func#ii hash care produce un re+ultat de 9@ bi#i" 5a!ii care trebuie parcur!i pentru ca 6ihai s ob#in o semntur de la 6aria pe un document care n4ar fi semnat n condi#ii normale niciodat de 6aria8 1" 6ihai pregte!te dou versiuni a documentului% una care este n ordine !i va fi semnat de 6aria% !i una care con#ine informa#ii false care nu ar fi semnate de 6aria" :" 6ihai face schimbri subtile pe fiecare document (de e/" inserare de spa#ii etc")% ob#innd ::> variante ale documentelor" >" 6ihai calculea+ valorile Hash a fiecrei variante ale celor dou documente% !i gse!te cte una din fiecare grup care produc acelea!i valori H1SH" @" 6ihai trimite varianta modificat a documentului pe care 6aria este dispus s semne+e% folosind un protocol unde se semnea+ numai valoare H1SH" B" 6ihai acuma poate sus#ine c documentul pereche cu informa#iile false a fost semnat de 6aria" Eu este u!or de gsit o func#ie care satisface toate cerin#ele de mai sus% totu!i e/ist destul multe mai mult sau mai pu#in sigure func#ii H1SH folosite n criptografie" &Schn(9) ofer o descriere a celor mai cunoscute dintre aceste func#ii% noi vom aminti doar cteva"

2.1.*.1. 0D3
6-B este o func#ie hash de sens unic% proiectat de <on <ivest" 6- provine din 6essage -igest" 1lgoritmul produce un hash% sau altfel +is imagine de 1:C bi#i a mesa$ului de intrare" 5rincipiile dup care s4a reali+at algoritmul sunt urmtoarele8 o 3ecuritate" Sunt imposibil de gsite dou mesa$e care au acela!i imagine% presupunnd c nu e/ist alt metod de criptanali+ dect cea a for#ei4brute" o 3ecuritate direct " Securitatea nu se ba+ea+ pe presupuneri% cum ar fi de e/emplu dificultatea de a factori+a numere mari% ca !i n ca+ul <S1" o Aite5 " 1lgoritmul trebuie s fie potrivit pentru implementri de soft'are rapide% ba+ndu4se pe manipula#ii de bit cu operan+i de >: bit" o 3implicitate Bi compactitate" 1lgoritmul trebuie s fie ct se poate de simplu% fr structuri mari de date% sau un program complicat" o 2a=ori5are de arhitecturi Cittle7Endian. 1lgoritmul este optimi+at pentru arhitecturi de microprocesoare (mai ales 2ntel)" Calculatoarele mai performante fac transformrile necesare" 5rima variant a algoritmului a fost 6-@% dar acesta dup ce a fost introdus a fost criptanali+at cu succes n pr#i% ce l4a ndemnat pe autor s4si mbunt#easc codul" 1stfel a fost conceput 6-B% ca variant mbunt#it 6-@" Descrierea algoritmului -up ni!te procesri ini#iale 6-B procesea+ te/tul de intrare n blocuri de B1: de bi#i% care sunt mai departe separa#i n 19 sub4blocuri de >: bi#i fiecare" 1lgoritmul produce un set de @ blocuri de >: bi#i% care concatenate dau ie!irea de 1:C bit" 6esa$ul este mrit pentru a fi multiplu de B1:" 1cest procedeu se reali+ea+ prin adugarea unui bit de 1 la sfr!itul mesa$ului !i attea +erouri c#i sunt necesari ca mesa$ul original s aib o lungime cu 9@ de bi#i mai scurt dect un multiplu de B1:" , repre+entare pe 1@

Bartha Hunor Sistem criptografic de tip secure chat 9@ de bi#i este apoi adugat la sfr!itul mesa$ului" 1cest procedeu asigur ca% complementarea s arate diferit pentru mesa$ele diferite" Aa nceput sunt ini#iali+ate patru variabile% numite variabile de legtur8 > = -x-12"'()* D = -x+,a#cdef % = -xfedc#a,+ D = -x*)('"21*ncepe ciclul principal al algoritmului% care este repetat n func#ie de numrul de blocuri de B1: din mesa$ul de intrare" Cele patru variabile sunt copiate n alte variabile% anume8 > n a% D n #% % n c iar D n d. Ciclul principal are patru runde asemntoare" 3iecare rund folose!te o opera#ie diferit de 19 ori" 3iecare opera#ie aplic o func#ie ne4liniar pe trei din variabilele a0#0c0d% adugnd re+ultatul la al patrulea variabil% la un sub4bloc a te/tului de intrare !i o constant" 1poi rote!te re+ultatul ob#inut la dreapta cu un numr variabil de bi#i !i adaug re+ultatul la unul dintre variabilele a0#0c0 sau d" *n final re+ultatul este copiat ntr4unul dintre variabilele de dinainte" 3unc#ionarea buclei principale a algoritmului este pre+entat n figura :"@"1"

< unda 1 unda

< unda :

< unda >

< @

2igura 1.'.1 Ducla principal MD( Sunt patru func#ii neliniare folosite n fiecare opera#ie" Se folose!te o func#ie diferit n fiecare rund" 3unc#iile neliniare sunt8 2(<0E0F) = (< G E) H ((I<) G F) J(<0E0F) = (< G F) I(E (IF)) @(<0E0F) = < xor E xor F K(<0E0F) = E xor (< H (IF)) Considernd 6$ fiind blocul L din sub4blocul de mesa$e% !i UUUs fiind o rota#ie circular de s bi#i cele patru opera#ii sunt8 22(a0#0c0d0ML0s0ti) 1nseamn JJ(a0#0c0d0ML0s0ti) 1nseamn @@(a0#0c0d0ML0s0ti) 1nseamn KK(a0#0c0d0ML0s0ti) 1nseamn a = # 9 ((a 9 2(#0c0d ) 9 ML 9 ti) ::: s) a = # 9 ((a 9 J(#0c0d ) 9 ML 9 ti) ::: s) a = # 9 ((a 9 @(#0c0d) 9 ML 9 ti) ::: s) a = # 9 ((a 9 K(#0c0d ) 9 ML 9 ti) ::: s)

Cele patru runde (9@ de pa!i) sunt pre+entate n tabelul :"@"1" Constantele ti sunt alese astfel nct n pasul i ti este partea ntreag a valorii 2"2Ma#s(sin(i))0 unde i este n radiani" -up parcurgerea celor 9@ de pa!i valorile a0#0c0d sunt adugate la >0D0%0D !i ciclul se repet cu urmtorul bloc de date" 2e!irea final va fi concatenarea valorilor >0D0% !i D"

1B

Bartha Hunor Sistem criptografic de tip secure chat )unda 1


33 (a% b% c% d% 6=% D% =/dD9aa@DC) 33 (d% a% b% c% 61% 1:% =/eCcDbDB9) 33 (c% d% a% b% 6:% 1D% =/:@:=D=db) 33 (b% c% d% a% 6>% ::% =/c1bdceee) 33 (a% b% c% d% 6@% D% =/fBDc=faf) 33 (d% a% b% c% 6B% 1:% =/@DCDc9:a) 33 (c% d% a% b% 69% 1D% =/aC>=@91>) 33 (b% c% d% a% 6D% ::% =/fd@9(B=1) 33 (a% b% c% d% 6C% D% =/9(C=(CdC) 33 (d% a% b% c% 6(% 1:% =/Cb@@fDaf) 33 (c% d% a% b% 61=% 1D% =/ffffBbb1) 33 (b% c% d% a% 611% ::% =/C(BcdDbe) 33 (a% b% c% d% 61:% D% =/9b(=11::) 33 (d% a% b% c% 61>% 1:% =/fd(CD1(>) 33 (c% d% a% b% 61@% 1D% =/a9D(@>Ce) 33 (b% c% d% a% 61B% ::% =/@(b@=C:1)

)unda 2
VV (a% b% c% d% 61% B% =/f91e:B9:) VV (d% a% b% c% 69% (% =/c=@=b>@=) VV (c% d% a% b% 611% 1@% =/:9BeBaB1) VV (b% c% d% a% 6=% :=% =/e(b9cDaa) VV (a% b% c% d% 6B% B% =/d9:f1=Bd) VV (d% a% b% c% 61=% (% =/=:@@1@B>) VV (c% d% a% b% 61B% 1@% =/dCa1e9C1) VV (b% c% d% a% 6@% :=% =/eDd>fbcC) VV (a% b% c% d% 6(% B% =/:1e1cde9) VV (d% a% b% c% 61@% (% =/c>>D=Dd9) VV (c% d% a% b% 6>% 1@% =/f@dB=dCD) VV (b% c% d% a% 6C% :=% =/@BBa1@ed) VV (a% b% c% d% 61>% B% =/a(e>e(=B) VV (d% a% b% c% 6:% (% =/fcefa>fC) VV (c% d% a% b% 6D% 1@% =/9D9f=:d() VV (b% c% d% a% 61:% :=% =/Cd:a@cCa)

)unda ("
HH (a% b% c% d% 6B% @% =/fffa>(@:) HH (d% a% b% c% 6C% 11% =/CDD1f9C1) HH (c% d% a% b% 611% 19% =/9d(d91::) HH (b% c% d% a% 61@% :>% =/fdeB>C=c) HH (a% b% c% d% 61% @% =/a@beea@@) HH (d% a% b% c% 6@% 11% =/@bdecfa() HH (c% d% a% b% 6D% 19% =/f9bb@b9=) HH (b% c% d% a% 61=% :>% =/bebfbcD=) HH (a% b% c% d% 61>% @% =/:C(bDec9) HH (d% a% b% c% 6=% 11% =/eaa1:Dfa) HH (c% d% a% b% 6>% 19% =/d@ef>=CB) HH (b% c% d% a% 69% :>% =/=@CC1d=B) HH (a% b% c% d% 6(% @% =/d(d@d=>() HH (d% a% b% c% 61:% 11% =/e9db((eB) HH (c% d% a% b% 61B% 19% =/1fa:DcfC) HH (b% c% d% a% 6:% :>% =/c@acB99B)

)unda ("
22 (a% b% c% d% 6=% 9% =/f@:(::@@) 22 (d% a% b% c% 6D% 1=% =/@>:aff(D) 22 (c% d% a% b% 61@% 1B% =/ab(@:>aD) 22 (b% c% d% a% 6B% :1% =/fc(>a=>() 22 (a% b% c% d% 61:% 9% =/9BBbB(c>) 22 (d% a% b% c% 6>% 1=% =/Cf=ccc(:) 22 (c% d% a% b% 61=% 1B% =/ffeff@Dd) 22 (b% c% d% a% 61% :1% =/CBC@Bdd1) 22 (a% b% c% d% 6C% 9% =/9faCDe@f) 22 (d% a% b% c% 61B% 1=% =/fe:ce9e=) 22 (c% d% a% b% 69% 1B% =/a>=1@>1@) 22 (b% c% d% a% 61>% :1% =/@e=C11a1) 22 (a% b% c% d% 6@% 9% =/fDB>DeC:) 22 (d% a% b% c% 611% 1=% =/bd>af:>B) 22 (c% d% a% b% 6:% 1B% =/:adDd:bb) 22 (b% c% d% a% 6(% :1% =/ebC9d>(1)

$a#el 2.'.2 Npera/iile din rundele MD(

2.1.*.2. Secure 2as! Algorit!m S2A


E2S; mpreun cu ES1 au propus algoritmul SH1 pentru standardul de semntur digital" -iferen#a cea mai important dintre 6-B !i SH1 este lungimea imaginii produse% care n ca+ul lui SH1 este 19= bi#i" Cu ct este mai lung imaginea produs de func#ie cu att mai mare este fidelitatea cu care aceast imagine caracteri+ea+ sursa% deci scade probabilitatea ca dou mesa$e diferite s produc acela!i hash" *ns ideea de ba+% pentru care s4a introdus crearea de imagine a mesa$elor este tocmai s se ob#in date de lungime redus care vor fi semnate% asigurnd astfel vite+a necesar semnrii digitale a documentelor" -eci putem afirma c lungimea este de fapt un compromis ntre fidelitatea imaginii !i vite+a procesului de semnare" 1lgoritmul SH1 a fost proiectat inspirndu4se din 6-B% astfel multe din opera#iile sunt similare" Completarea mesa$ului de intrare la multiplu de B1: bi#i este reali+at e/act la fel ca !i la 6-B" SH1 folose!te cinci variabile de >: bi#i (s ne amintim c 6-B folosea numai @)% ob#inndu4se astfel ie!irea de 19= bi#i prin concatenarea ie!irilor din cele cinci blocuri" Ca !i conclu+ie se poate afirma c SH1 este o versiune mbunt#it a algoritmului 6-B"

19

Bartha Hunor Sistem criptografic de tip secure chat

2.2. Ar!itectura C4IENT5SE)6E)


2.2.1. Introducere
;ermenul CA27E;WS7<?7< a fost ini#ial introdus n anii 1(C= ca referin# la calculatoarele dintr4o re#ea" 6odelul propriu +is de client server a fost acceptat spre sfr!itul anilor XC=" 1rhitectura soft'are clientWserver este o infrastructur modular% ba+at pe mesa$e% care are scopul de a mbunt#ii fle/ibilitatea% inter4operabilitatea% scalabilitatea !i u!urin#a de folosire fa# de arhitectura centrali+at ba+at pe mainframe4uri" Cnd au aprut primele sisteme de calcul pre#ul !i mrimea unui astfel de echipament nu permiteau e/isten#a lor n numr mare n cadrul companiilor" 1stfel de obicei utili+atorii foloseau terminale% fr unit#i de procesare individuale% care foloseau un mainframe% cu mediu de stocare a datelor centrali+at% care fcea toate procesrile necesare" Spre sfr!itul anilor 1(D= !i nceputul anilor 1(C= au fost construite sisteme mai mici% mai accesibile% care au nceput s fie folosite din ce n ce mai mult" 1stfel a aprut nevoia de a accesa resursele de pe un microcomputer sau 5C de la un alt calculator" Spre sfr!itul anilor 1(D=% a fost introdus standardul !i tehnologia care este cunoscut a+i sub numele de 7thernet" 1cest sistem a oferit moduri de a uni ntro4o re#ea local A1E sau I1E calculatoare de productori diferi#i sau care aveau sisteme de operare diferite"

2.2.2. Ce este C4IENT respecti, SE)6E)


%lient este definit ca un solicitor de ser=icii. >stfel clientul poate fi un calculator al unui utili5ator sau o aplica/ie care reali5ea5 anumite opera/ii local0 dar care trimite Bi recep/ionea5 cereri de la mai multe sau un singur ser=er. 3er=er este definit ca furni5or de ser=icii sau informa/ii. >stfel ser=erul este format dintr7un calculator0 sau chiar mai multe calculatoare care recep/ionea5 Bi procesea5 cererile de la clien/i.

1D

Bartha Hunor Sistem criptografic de tip secure chat

2.(. 0ediul de de1,oltare


Aucrarea de fa# a fost reali+at pe platforma "E7;% limba$ul de programare fiind CS" 5latforma "E7; este un mediu de de+voltare multo4limb pentru proiectare !i crearea aplica#iilor" 1re trei mari pr#i8 o CA< 1ceast component este responsabil pentru gestionarea alocrii de memorie% pornirea !i oprirea proceselor !i firelor de e/ecu#ie% for#area aplicrii politicii de securitate !i re+olvarea dependen#elor componentelor ntre ele" o Clasele de programare unificate (unified programming classes) 5latforma ne ofer un set ierarhic% unificat de librrii de clase cu posibilitate de e/tensibilitate% orientate pe obiect" Se ob#ine astfel unificarea 63C cu I3C" 1ceste clase comune % mpreun cu CA< pentru toate limbile ofer posibilit#i de mo!tenire indiferent de limba$% pre+entnd o fle/ibilitate foarte mare pentru programatori" o 1S5"E7; ba+ndu4se pe clasele oferite de platforma "E7; ofer un model pentru reali+area aplica#iilor de 'eb" ,fer un set de controale% printre care !i numeroasele elemente de interfa# cu utili+atorul" 1ceste controale rulea+ pe serverul de 'eb interfe#ele lor fiind transmise ca !i H;6A la bro'serul utili+atorului"

2.(.1. 4im%a+ul C.
Conform &msdnm) limba$ul CS ofer puterea CYY !i simplitatea ?isual Basic" ,biectiva principal a fost simplitatea% nu att vite+" S4a reali+at un compromis interesant prin sacrificarea vite+ei pentru numeroasele beneficii cum ar fi Ggarbage collectionH automatic sau siguran#a de tip" 1u fost introduse numeroase mbunt#iri fa# de CYY% cum ar fi aparenta ine/isten# a referin#elor(pointerilor)% care era principala surs de erori n CYY% sau introducerea tipului Boolean care poate avea valoare $rue sau 2alse ne4fiind posibil folosirea altor tipuri ca !i condi#ii" 1cest tip nici nu poate fi convertit n nici un alt tip" 0n alt element de modernitate este mbunt#irea controlului erorilor prin introducerea e/cep#iilor% care pot fi prinse sau aruncate mai departe" 1cest fel de tratarea erorilor este cel mai eficient n pre+ent !i este folosit !i n Mava" 1stfel se simplific enorm codul surs devenind mult mai clar prin dispari#ia liniilor condi#ionate de valoarea returnat de fiecare func#ie" 5utem ncadra un segment mai mare de cod ntr4un bloc de try% catch astfel asigurnd claritatea codului surs ct !i stabilitatea codului deoarece vom detecta orice tip de eroare din oricare func#ie apelat n blocul try" CS este un limba$ pur orientat pe obiecte" S4a eliminat posibilitatea de mo!tenire multipl" S4a introdus no#iunea de func/ii delegate care sunt echivalentul pointerilor de func#ii din cYY" Ca !i conclu+ie putem afirma c limba$ul de+voltat de microsoft mo!tene!te puterea !i libertatea din cYY% dar ofer un mediu de de+voltare mult mai sigur% fle/ibil !i stabil"

1C

Bartha Hunor Sistem criptografic de tip secure chat (.

roiectare

(.1. Specificaie funcional


5roiectul de fa# este o aplica#ie de tip messenger care permite comunicarea sigur pe un canal nesigur" 5rogramul este alctuit din dou mari pr#i clientul ( %rypto Messenger) respectiv serverul(%rypto ser=er)" 1rhitectura aplica#iei este pre+entat n figura de mai $os8

Cry pto 6es senger

(canal (canal nesecuri+at) nesecuri+at)

E7;I, E7;I, <L <L

C rypto S erver

2igura 2.2.1 >rhitectura aplica/iei Se folose!te att criptografia simetric ct !i cea nesimetric pentru implementarea unei cheme de securitate care permite autentificarea% schimbarea cheilor de sesiune !i transmisia datelor sensibile folosind un algoritm simetric% sigur !i rapid" 0tili+atori !i datele lor personale sunt stocate ntr4o ba+ de date la care are acces nelimitat serverul% clien#ii putnd accesa datele din ba+a de date numai prin intermediul programului server% dup ce s4a stabilit cone/iunea !i au fost satisfcute condi#iile necesare comunica#iei sigure" 1tt serverul ct !i fiecare utili+ator de#in o pereche de chei !i un certificat pentru cheia public" 5rocesul de conectare la server se reali+ea+ prin schimbarea de certificate% ob#innd astfel cheia public a celuilalt% transmiterea cheii de sesiune de la server la client% !i folosind criptarea simetric se transmite numele de utili+atori respectiv parola de la client% la server" -up ce serverul a recep#ionat datele de la utili+ator verific ba+a de date% !i dac datele sunt corecte clientul se poate conecta la server" 1cest algoritm de conectare poate fi u!or urmrit pe figura :"1":"
BHProtocol : Client1 : Server : BHProtocol : Client2 : BHProtocol :

ProcessOutput mesaj impachetat pachet1 Process nput Handle!essage ProcessOutput pachet2 Se considera ca, clientii sunt deja conectati la server si au fiecare cate o cheie simetrica

pachet2

Process nput On!essage

Pentru simplitate pe diagrama nu figureaza criptarea, dar se considera ca datele sint criptate si decriptate la capetele canalelor

2igura 2.1." %omunicarea 1ntre clien/i

-up ce s4a reali+at cu succes conectarea la server datele despre utili+atorul recent conectat sunt trimise la restul clien#ilor conecta#i" 1(

Bartha Hunor Sistem criptografic de tip secure chat Comunicarea ntre doi clien#i se reali+ea+ prin intermediul serverului% deci datele sunt trimise la server care trimite mai departe la clientul corespun+tor" 1stfel se elimin dificult#ile de comunicare ntre clien#ii care fac parte din re#ele locale diferite" 1ceast secven# este pre+entat n detaliu pe figura :"1">
BHCr"pter : Client : Connect %ccept Certificatul serverului 2igura 2.2."4rocesul de transmitere a mesaLelor ProcessCertificate Certificatul clientului SetPeerPu$lic3e" &ncr"pt'ith(S% )ume utilizator si parola criptate #ecr"pt'ith(S% #ate decriptate s)e*+ser,username.%/S& s0alidPass*ord,pas*ordConfirmare nume utilizator si parola 1(+& SetPeerPu$lic3e" ProcessCertificate Begin%ccept Server : BHCr"pter : BH#ata$ase!anager :

&ncr"pted!essage

&ncr"pt'ith(S% date criptate Cerere cheie de sesiune #ecr"pt'ith(S% date decriptate 2enerateSession3e" cheie simetrica SetSession3e"

#ecr"pt'ith(S% cheie simetrica decriptata

cheie simetrica criptata

&ncr"pt'ith(S% cheie simetrica criptata

SetSession3e"

2igura 2.1.2 >lgoritmul de OlogareP la ser=er :=

Bartha Hunor Sistem criptografic de tip secure chat Serverul este responsabil de generarea cheilor de sesiune care sunt diferite pentru fiecare client% la fel datele de la un client sunt decriptate !i criptate din nou de server cu cheile corespun+toare fiecrui client" 1cest scenariu este pre+entat pe figura :"1">"
Client1 : !esaj1 criptat cu cheia S1 /oo7upClient Serverul mentine o lista cu clientii conectati momentan6 O$iectele din lista contin referinta la soc7etul, numele de utilizator si cheia simetrica a clientului6 Server : Client2 :

!esaj1 criptat cu cheia S2

2igura 2.1." Jestionarea cheilor simetrice ?i+ibilitatea clien#ilor este ba+at pe Gliste cu prieteniiH% stocate n ba+a de date conform cruia se vd numai clien#ii care sunt reciproc pre+en#i n listele de prieteni" 5rogramul ofer posibilit#i de modificare a listei cu prietenii% prin !tergere sau adugare de noi prieteni" -iagrama secven#ial este pre+entat pe figura :"1"@"
Client : Server : BH#ata$ase!anager :

4clientul este deja conectat, are cheia simetrica5 prieten nou %dd.riend,src+ser, ne*.rinend%dd.riend1o#ata$ase,ne*.riendprietenul adaugat la lista

friendlist modificat Send.riend/ist,src+Ser-

2igura 2.1.' >d ugare de proieteni la list 6ai este un scenariu care pn acum nu a fost men#ionat% anume crearea contului unui utili+ator nou pe server" 1cest lucru nseamn pe scurt% adugarea datelor utili+atorului la ba+a de date" Crearea contului este reali+at prin intermediul programului client !i este in mare parte asemntor cu procesul de conectare cu un nume de utili+ator% de$a e/istent% cu u!oare diferen#e" 2mplementarea acestui scenariu s4a reali+at ba+ndu4se pe algoritmii !i func#iile de$a e/istente" 1stfel conectarea socRetului% schimbarea de certificate% trimiterea certificatului este reali+at n mod similar ca !i ca+ul conectrii normale" Se folose!te un artificiu pentru crearea contului" 5entru pstrarea acelora!i algoritmi se reali+ea+ o conectare cu un nume de utili+ator special8 GneQ?serH" 1cest nume de utili+ator este re+ervat% !i pentru server nseamn c este vorba de un utili+ator nou% deci se va a!tepta la ni!te date au/iliare% care vor fi adugate la ba+a de date" Considernd diagrama din figura :"1": modificrile care apar sunt dup verificarea numelui de utili+ator" Qtiind c este vorba de un utili+ator nou se continu procesul e/act cum se arat pe :1

Bartha Hunor Sistem criptografic de tip secure chat diagram dar ca !i un ultim pas se mai adaug o transmisie a datelor noului utili+ator% care vor fi introduse n ba+a de date% dup care cone/iunea va fi nchis" *nchiderea conectrii este necesar pentru c posibilit#ile clientului conectat cu numele de utili+ator re+ervat sunt limitate la trimiterea datelor personale% deci men#inerea unei astfel de cone/iuni este absolut inutil"

(.2. Consideraii de implementare


Aa proiectare programelor s4a ncercat ob#inerea fle/ibilit#ii prin folosirea unor clase bine proiectate% cu ncapsulare ct se poate de accentuat% !i posibilitate de refolosire" 2nterfa#a cu utili+atorul este simpl !i u!or de folosit chiar !i pentru cei care nu sunt familiari cu criptografia" Securitatea aplica#iei este asigurat prin criptarea tuturor datelor care sunt trimise pe canal% considernd ca serverul !i clientul rulea+ pe calculatoare care sunt sigure" -e asemenea se presupune% c ba+a de date este pe acela!i calculator cu serverul sau legtura ntre ele% dac nu rulea+ pe acela!i calculator% este sigur" 1plica#ia asigur securitatea doar din punct de vedere a trimiterii datelor pe canal% ns securitatea ntregului sistem presupune securitatea sta#iilor pe care rulea+ programele% securitatea ba+ei de date% !i pstrarea n siguran# a cheilor private" Ca !i orice sistem criptografic siguran#a sistemului depinde de elementul cel mai nesigur% dintr4un lan# de elemente diferite" Varantarea siguran#ei absolute nu este posibil% numai pentru un element din acest lan#% care n ca+ul nostru este comunica#ia pe canal" Sc!ema criptografic" 5entru criptare asimetric se folose!te <S1" Cheile publice se schimb folosind certificate F"B=(" -up schimbarea cheilor publice se transmite de la server la client cheia simetric generat" -up recep#ionarea cheii simetrice de ctre client se trece la criptarea simetric folosind algoritmul ;riple-es% cu chei de lungime de 1(: bi#i" -up ce se stabile!te cheia se trimite numele de utili+atori !i codul Hash a parolei% de la client la server" Serverul verific datele recep#ionate n ba+a de date !i dac corespund atunci clientul este considerat conectat"

(.2.1.1. Ser,erul &Cr/pto Ser,er'


Serverul este partea cea mai important a sistemului deoarece prin el se accesea+ ba+a de date% serverul verific autenticitatea clien#ilor !i face legtura ntre ei"

(.2.1.2. Clasele folosite


Cele mai importante clase din programul Crypto ser=er sunt8 o BHCrypter clasa care reali+ea+ criptarea datelor% folosind suportul furni+at de platforma" 3igura :"1"1 o BHClient implementea+ clasa SocRet furni+at de platform% adugnd func#ionalitatea necesar pentru comunica#ia asincron" -iagrama clasei este pre+entat n figura :"1":" o BHServer implementea+ clasa BHClient implementnd un server multi4user% cu un fir de e/ecu#ie separat pentru comunicarea cu fiecare client% figura :"1"> o BH5rotocol implementea+ protocolul de comunicare ntre client !i server" -iagrama 06A a clase este pre+entat n figura :"1"@ o BH-atabase6anager furni+ea+ func#iile necesare comunicrii cu ba+a de date 6ySZA" -iagrama 06A se poate vedea pe figura :"1"@

::

Bartha Hunor Sistem criptografic de tip secure chat o 0ser-ata repre+int datele necesare de la utili+atori n momentul crerii contului" -atele din aceast clas sunt stocate n ba+a de date" 3igura :"1"9 o 5f/,pen clasa care deschide fi!ierele 5LCS S1: pentru a ob#ine cheia privat respectiv public a utili+atorilor" 3igura :"1"D o 6ain3rame con#ine elementele din interfa#a cu utili+atorul a programului" o 0ser-ata3orm fereastra pentru vi+ionarea datelor utili+atorilor din ba+a de date" *n cele ce urmea+ vom descrie fiecare clas n parte% precum !i rela#ia respectiv dependen#a ntre ele"

(.2.1.(. 2.1.1.1 $2Cr/pter


1ceast clas este responsabil pentru criptarea datelor care sunt trimise pe canal" Clasa ofer func#ii pentru criptare simetric respectiv asimetric" 6ai departe e/ist func#ii pentru e/tragerea cheii publice din certificatele F"B=(" -iagrama 06A a clasei este pre+entat n figura :"1"1" Cele mai folosite func#ii din aceast clas sunt cele pentru criptare !i decriptare" 1ceste func#ii sunt supra ncrcate pentru a permite intrri de mai multe tipuri cum ar fi string sau #yteRS" Constructorul clasei permite ini#iali+area obiectelor din fi!ierul pfx% care con#ine cheia privat !i public" 5entru a putea folosi func#iile de criptare respectiv decriptare asimetric avem nevoie de cheia public a partenerului" 3unc#ia 4rocess%ertificate e/trage cheia public din certificatul partenerului" 6ai departe clasa ofer o func#ie create@ash pentru generare de coduri Hash% aceast func#ie folose!te algoritmul 6-B" S4a optat pentru 6-B !i nu pentru SH11 pentru c aceast func#ie este folosit pentru crearea imaginilor de pe parole% care va fi trimis pe canal !i stocat n ba+a de date" 2e!irea de 1:C bi#i a algoritmului este suficient pentru c intrrile sunt de lungime redus deci probabilitatea ca dou intrri s genere+e acela!i hash este foarte mic" 3unc#iile folosite pentru criptarea simetric sunt Encrypt respectiv Decrypt care folosesc algoritmul ;riple-7S"

:>

Bartha Hunor Sistem criptografic de tip secure chat


BHCrypter
4namespace8BHClasses5

9 9 9 9 9 9 ; ; ; ; ; 9 ; ; ; ; ; ; 9 ; ; ; ; ; ; ; ; ; ; ;

ass"metric3e"Size : int container)ame : string m"(S% : (S%Cr"ptoServiceProvider peer(S% : (S%Cr"ptoServiceProvider desCSP : 1riple#&SCr"ptoServiceProvider pf: : Pf:Open ver$ose : $ool 8 false BHCr"pter,BHCr"pter,filename : string, pass* : stringClean+p,- : void getCertB"tes,filename : string- : $"te<= setPeerCertificate,certB"tes : $"te<=- : void ProcessCertificate,:>?@Certificate : $"te<=- : $ool 2enerateSession3e",7e"Size : int, user)ame : string- : $"te<= SetSession3e",session3e" : $"te<=, init0ector : string- : void &ncr"pt,msg : string- : $"te<= &ncr"pt,data : $"te<=- : $"te<= #ecr"pt,encr"pted!sg : $"te<=- : $"te<= SetPeerPu$lic3e",pp7 : (S%Parameters- : void 2et(S%3e"s,pf:Path : string, pf:P*d : string, cerPath : string- : void 2enerate(S%3e"s,3e"Size : int, Container)ame : String- : void &ncr"pt'ith(S%,data1o&ncr"pt : string- : $"te<= &ncr"pt'ith(S%,data1o&ncr"pt : $"te<=- : $"te<= #ecr"pt'ith(S%,encripted#ata : $"te<=- : $"te<= #ecr"pt'ith(S%,encripted#ata : $"te<=, returnString : $ool- : string CreateCertificate,- : $"te<= 2et/ocalCertificate,cerPath : string- : $"te<= #elete3e"s,Container)ame : string- : void createHash,str : string- : $"te<= 3e"size,- : int 4accessor5

2igura 2.1.1 %lasa D@%rypter folosit pentru criptarea datelor. 1lgoritmul asimetric folosit este <S1" 3unc#iile folosite n acest scop sunt EncryptTith&3> respectiv DecryptTith&3> supra ncrcate pentru toate tipurile de parametrii de intrare necesare" EncryptTith&3> cifrea+ informa#iile cu cheia public a partenerului% iar DecryptTith&3> descifrea+ mesa$ul cu cheia privat local" 5entru a reali+a acest lucru avem definite dou cmpuri n cadrul clasei de tipul &3>%rypto3er=ice4ro=ider% anume my&3> care este ini#iali+at cu cheile locale% respectiv peer&3> care este ini#iali+at cu cheia public a partenerului" 2ni#iali+area peer&3> este fcut folosind func#ia Set4eer4u#lic!ey. 3igura :"1": 5re+int secven#a de ini#iali+are8

:@

Bartha Hunor Sistem criptografic de tip secure chat


m"Cr"pter :BHCr"pter Parent o$ject :

BHCripter BCO)S1(+C1O(C pf: 8 ne* Pf:Open,-A pf:6/oadPf:,filename, ref pass*-A CspParameters cp 8 ne* CspParameters,-A cp63e"Container)ame 8 pf:6containerA cp63e")um$er 8 ,int-pf:67e"specA m"(S% 8 ne* (S%Cr"ptoServiceProvider,cp-A

ProcessCertificate,certB"tesSetPeerPu$lic3e",pu$lic3e"-

(S%Parameters pu$lic3e" 8 ne* (S%Parameters,-A pu$lic3e"6&:ponent 8 e:ponentA pu$lic3e"6!odulus 8 modulusA if,peer(S%88null-4 peer(S% 8 ne* (S%Cr"ptoServiceProvider,-A 5 peer(S%6 mportParameters,pu$lic3e"-A

2igura 2.1.2 3ec=en/a de ini/iali5are pentru D@%rypter -iferen#a dintre func#ia de criptare !i decriptare este subtil dar foarte important8 pu#lic #yteRS EncryptTith&3>(#yteRS data$oEncrypt)U byte&) encrypted-ata K peer<S1"7ncrypt(data;o7ncrypt% false)O return encryptedDataV W public byte&) -ecryptIith<S1(byte&) encripted-ata)[ byte&) decrypted-ata K my<S1"-ecrypt(encripted-ata% false)O return decryptedDataV W 5entru criptarea simetric avem doar o singur variabil% anume des%34 de tipul $ripleDE3%rypto3er=ice4ro=ider. 2ni#iali+area acestui cmp este fcut de func#ia 3et3ession!ey n ca+ul n care cheia simetric nu este generat local% altfel ini#iali+area se face cu func#ia Jenerate3ession!ey.

(.2.1.*. 2.1.1.2 $2Client


1ceast clas implementea+ clasa SocRet cu toate adaptrile !i modificrile necesare pentru proiectul de fa#" -iagrama clasei este pre+entat n figura :"1":" 5rocedeul folosit pentru ob#inerea func#ionalit#ii necesare s4a folosit tehnologia de delegare a sarcinilor" Se poate observa c e/ist un cmp de tip SocRet n clas cruia i sunt delegate toate opera#iile de trimiterea !i recep#ionarea datelor de pe re#ea" 3unc#ionalitatea clasei SocRet este ns mrit prin introducerea mesa$elor folosind func#ii delegate% care sunt apelate cnd este nevoie" 1stfel se reali+ea+ trimiterea !i recep#ionarea datelor n mod asincron% func#iile delegate% membre ale claselor care instan#ia+ obiecte de tip D@%lient% fiind apelate cnd s4a recep#ionat ceva% sau s4a ntrerupt legtura cu serverul"

:B

m"Soc7et :BHClient Start(eceive,-

ParentO$ject : Se apeleaza daca avem date pe soc7et

Bartha Hunor Sistem criptografic de tip secure chat


Se porneste un thread separat pentru ascultarea canalului On(eceive,data(eceivedOn#isconnect,Se apeleaza daca s9a intrerupt legatura, sau soc7etul a fost inchis

2igura 2.1." &ecep/ia asincron Clasa ne ofer func#ii supra ncrcate pentru trimitere !i recep#ionare sincron% asincron% avnd parametrii de intrare de tip vector de #yte sau string" -e asemenea avem !i func#ii care criptea+ sau decriptea+ mesa$ul trimisWrecep#ionat% prin versiunea 3end(3tring message0 #ool Encrypt). 5arametrul boolean preci+ea+ dac dorim ca datele s fie criptate sau nu ( n ca+ul din urm datele probabil au fost de$a criptate)" 7ste de remarcat c pn ce clientul nu este considerat conectat (este diferit de conectarea socRetului\) comunicarea care are loc ntre client !i server este sincron" Clientul este considerat conectat doar dup ce s4a autentificate cu un nume de utili+ator valid !i o parol corespun+toare" Aa server o referin# la obiectul D@%lient este introdus n lista clien#ilor% care va fi !tears n momentul deconectrii" -oar clien#ii care apar n lista de clien#i a serverului sunt considera#i conecta#i" ?om pre+enta mai n detaliu clasa care este inima programului% anume D@3er=er.
BHClient
4namespace8BHClasses5

9 9 9 9 9 9 9 9 ; ; ; ; ; ; ; ; ; ; ; ; 9 ; ; ; ; ; ; ; ; 9 ; ; ; ; ;

clientSoc7et : Soc7et remote p%ddress : string remotePort : int receive1hread : 1hread cr"pter : BHCr"pter timeout : int 8 >??? On(eceive : On(eceive#elegate On#isconnect : On#isconnect#elegate On(eceive#elegate,msg : $"te<=- : delegate void On#isconnect#elegate,- : delegate void BHClient,on(eceive : On(eceive#elegate, on#isconnect : On#isconnect#elegateBHClient,soc7 : Soc7et, on(eceive : On(eceive#elegate, on#isconnect : On#isconnect#elegateBHClient,soc7 : Soc7etnitCr"pter,session3e" : $"te<=, init0ector : string- : void CreateCr"pter,init0ector : string- : void Connect,(emote P : string, (emotePort : int- : void *or7Soc7et,- : Soc7et 4accessor5 (eceive,decr"pt : $ool- : $"te<= (eceive,- : $"te<= Start(eceive,- : void (eceiveCall$ac7,ar : %s"nc(esult- : void SendDsinc,message : String, encr"pt : $ool- : void SendDsinc,message : String- : void SendDsinc,message : $"te<=, encr"pt : $ool- : void SendDsinc,message : $"te<=- : void Send,message : String, encr"pt : $ool- : void Send,message : String- : void Send,message : $"te<=, encr"pt : $ool- : void Send,message : $"te<=- : void SendCall$ac7,ar : %s"nc(esult- : void #isconnect,- : void nitiate#isconnect,- : void getPeer P,- : string get/ocalPort,- : string Connected,- : $ool 4accessor5

2igura 2.1.2 Diagrama clase D@%lient.

(.2.1.3. 2.1.1.( $2Ser,er

:9

Bartha Hunor Sistem criptografic de tip secure chat 5oate fi considerat cea mai important clas din acest program deoarece prin cadrul acestei clase este reali+at acceptarea ncercrilor de conectarea a clien#ilor% transmiterea datelor ntre clien#i !i ctre clien#i% gestionarea listelor cu clien#ii conecta#i% gestionarea firelor de e/ecu#ie asociate cu fiecare client" 1ceast clas ofer o implementare a socRetului% oferind suport pentru clien#i multipli !i suport pentru multi7threading" 2nterfa#a clasei este pre+entat n figura :"1">" BHServer 2nterfa#a clasei este foarte 4namespace8BHClasses5 simpl% ma$oritatea opera#iilor fiind ; !%ED+S&()%!&D/&)21H : int 8 12F client/ist : Hashta$le re+olvate intern% cu func#ii private ; 9 m"#ataBase : BH#ata$ase!anager : BHCr"pter care nu trebuie s fie vi+ibile% 99 m"Cr"pter cr"ptoProtocol : BHProtocol 9 c$On%ccept accesibile clasei care declar 9 on#isconnect: :%ccept#elegate #isconnect#elegate instan#e de obiecte de tipul 9 on nput : nput#elegate 9 online : $ool 8 false D@3er=er" Cele mai importante 9 port : int 9 serverSoc7et : Soc7et func#ii sunt cele de oprire respectiv 9 accept#one : !anual(eset&vent : 1hread pornirea serverului" 1ceste func#ii 9; Chec7Clients1hread %ccept#elegate,ht : Hashta$le- : delegate void #isconnect#elegate,user)ame : String- : delegate void sunt8 3top3er=er respectiv 3tart7 ; ; nput#elegate,remote+ser # : String, msg : $"te<=- : delegate void 3er=er" 5rimul desfiin#ea+ thread4 ; BHServer,function : %ccept#elegate, on!sg : nput#elegate, on#isc : #isconnect#elegate; Port,- : int 4accessor5 ul de ascultare a conectrilor pe ; StartServer,/isteningPort : int- : $ool StopServer,- : void portul specificat (>ccepting$hread)% ; 9 Chec7Clients,- : void : void nchide socRetul ser=er3ocket% iar al 99 %ccept,On%ccept,result : %s"nc(esult- : void : BHClient- : +ser#ata doilea e/act invers% porne!te 99 get+ser#ata,client d$g,str : string- : void 9 d$g,data : $"te<=: void threadul de ascultare% ini#iali+ea+ 9 add.riends1o#B,src+ser : string, msg : string- : void 9 send.riend/ist,destination+ser # : String- : void socRetul" 9 user sOnline,username : string- : $ool 5entru reali+area de trimitere 9 handle!essage,source+ser)ame : String, destination+ser)ame : String, msg : String- : void nput,src+ser # : String, msg : $"te<=- : void efectiv a datelor pe re#ea se 99 handle handle#isconnect, # : String- : void # : String- : void folose!te tehnica delegrii% aceste 99 initiate#isconnect, displa"&rror,e : &:ception- : void func#ii fiind ndeplinite de variabila 2igura 2.1.".%lasa ser=er3ocket de tip 3ocket" D@3er=er 1vem trei func#ii delegate% membre ale clasei care folose!te D@3er=er. 3unc#iile delegate pot avea orice implementare singura condi#ie este s aib acelea!i parametrii de intrare !i tipul returnat s fie de tipul specificat" 1vem o func#ie delegat pentru ca+ul n care se deconectea+ un client% pentru a trimite un mesa$ c s4a recep#ionat ceva !i pentru a semnali+a c s4a acceptat o cone/iune" Cum clasa Main2rame are un parametru de tipul D@3er=er aceste func#ii delegate sunt importante pentru re mprosptarea elementelor grafice de interfa# cu utili+atorul" -e fapt putem spune c func#iile delegate pot fi folosite ca !i mesa$ele din ?isual CYY" 1cceptarea clien#ilor se face pe un thread separat% pentru a preveni blocarea interfe#ei cu utili+atorul" 1ceast clas folose!te e/tensiv clasele pre+entate mai sus% pentru comunicare !i criptarea datelor" BHServer are o list de tipul Hash;able care con#ine referin#e la obiecte de tip %lient care sunt versiuni subtil modificate a clasei D@%lient fiind mai pu#in abstracti+at% avnd un cmp au/iliar care con#ine numele de utili+ator" <ela#ia dintre clasele pre+entate pn acum8
Soc7et 666 666 BHCr"pter 666 666 BHClient Soc7et: clientSoc7et BHCr"pter: m"Cr"pter 666 On(eceive#elegate On#isconnect#elegate 666 Client BHClient: cr"ptoClient String: user)ame 666 BHServer Hash1a$le: client/ist 666 666 client/ist contine referinte la o$iecte de tip Client

3igura :"1"@ <ela#iile

(.2.1.7. 2.1.1.* $2 rotocol

:D

Bartha Hunor Sistem criptografic de tip secure chat Clasa implementea+ protocolul de comunica#ie ntre clien#i !i server" S4a ncercat reali+area unei clase u!or e/tensibile% fr ca adugarea noilor func#ionalit#i s afecte+e clasele care se folosesc de$a de cele e/istente" 1cest lucru este foarte important deoarece un protocol de comunica#ie evoluea+ cu timpul mereu apar noi nevoi% fiind nevoie de introducerea mesa$elor noi" Clasa permite introducere de mesa$e noi fr s fie nevoie de orice fel de modificare n clasele care folosesc D@4rotocol. 1ceast fle/ibilitate este oferit de folosirea func#iilor delegate" 2deea este ca s se apele+e o func#ie delegat pentru fiecare tip de mesa$ (bine n#eles dac este definit func#ia delegat respectiv)" -ac func#ia delegat care trebuie apelat la recep#ionarea unui tip de mesa$ nu este definit (adic referin#a la func#ie are valoarea null) nu se ntmpl nimic% este ca !i cum n4ar fi recunoscut mesa$ul respectiv" *n momentul actual protocolul are un set redus de tipuri de mesa$e% dar noi tipuri de mesa$e pot fi adugate cu u!urin#" 5achetele care se trimit n cadrul aplica#iei au un antet de @ octe#i care specific ce tip de mesa$ se trimite ;ipurile de mesa$e care sunt implementate de protocol sunt8 o F)4S8 cerereWrecep#ie lista de prieteni o DISC8 deconectare o 0ES88 mesa$ te/t o ADDF8 adugare prieten o INF98 cerereWrecep#ie informa#ii suplimentare despre client 3le/ibilitatea oferit de func#iile delegate ne ofer posibilitatea de implementare diferit a func#iilor care vor fi apelate la recep#ionarea antetelor diferite" 3r modificarea clasei D@4rotocol se poate reali+a interpretarea diferit a mesa$elor la client !i la server" -e e/emplu dac clientul prime!te un pachet cu antetul 3<AS se apelea+ o func#ie care interpretea+ datele din mesa$ !i re mprosptea+ interfa#a grafic a listei cu prietenii a clientului respectiv" *n schimb dac serverul prime!te pachetul cu antetul de mai sus atunci nu poate fi vorba de altceva dect de o cerere de lista de prieteni% astfel se apelea+ o func#ie care cite!te din ba+a de date lista respectiv !i trimite aceast list la clientul de la care a sosit cererea" -iagrama clasei este pre+entat n figura :"1"@"
BHProtocol
4namespace8BHClasses5

; ; ; ; ; ; ; ; ; ; ; ; ;

On.riend/ist : On.riend/ist#elegate On#isconnect : On#isconnect#elegate On!essage : On!essage#elegate On%dd.riend : On%dd.riend#elegate source+ser # : String BHProtocol,On.riend/ist#elegate,msg : String- : delegate void On#isconnect#elegate,user # : String- : delegate void On!essage#elegate,source+ser # : String, destination+ser # : String, msg : String- : delegate void On%dd.riend#elegate,user # : string, msg : String- : delegate void Process nput,input : String- : void Process nput,src+ser)ame : String, input : String- : void ProcessOutput,destination+ser # : String, msg : String- : string

2igura 2.1.' Diagrama ?MC a clasei D@4rotocol Se poate observa c avem func#iile delegate% care vor fi apelate n func#ie de antetul mesa$ului% mai departe% e/ist dou func#ii 4rocessKnput !i 4rocessNutput. 5rima u!urea+ pregtirea pachetelor nainte de a fi trimise prin adugarea antetelor corespun+toare !i a in forma#iilor suplimentare care pot fi necesare anumitelor tipuri de pachete" 1l doilea inspectnd antetul decide ce func#ie trebuie apelat" 5seudocodul func#iei 4rocessKnput este pre+entat in cele ce urmea+8

:C

Bartha Hunor Sistem criptografic de tip secure chat

2 nput ate valid e.

1 E

7/tra gere antet mesa $

eci+ie n func#e de a ntet

,n3rie ndlist ,n-isco nnect ,n6e ssage ,n1dd3 riend

0 5achet necunoscut% sau eronat

2igura 2.1.( 4seudocodul func/iei 4rocessKnput

(.2.1.:. 2.1.1.3 $2Data%ase0anager


1ceast clas implementea+ func#iile care sunt folosite pentru gestionarea ba+ei de date" Ba+a de date folosit este 6ySZA" 7/ist foarte multe servere de ba+ de date dar s4a optat pentru folosirea 6ySZA n primul rnd pentru c este un program open source" 6ai departe este foarte simpl n compara#ia cu alte servere de ba+e de date% cum ar fi ,racle sau 6icrosoft SZA Server" *n ba+a de date avem un singur tabel numit OuserdataP care con#ine 1> coloane" Coloanele ba+ei de date sunt pre+entate n tabelul :"1"1" Numele coloanei J0sername J5ass'ord 3irstEame Aastname Street State Country ;elephone 7mail I'' J-atashare 3riendlist 5hoto Tipul datelor ?archar(:BB) blob ?archar(:BB) ?archar(:BB) ?archar(:BB) ?archar(:BB) ?archar(:BB) ?archar(:BB) ?archar(:BB) ?archar(:BB) boolean te/t longblob $a#elul 2.1.1 3tructura #a5ei de date 3e poate o#ser=a c maLoritatea datelor stocate 1n #a5a de date sunt informa/ii personale a utili5atorului0 care nu sunt o#ligatorii. .umai c;mpurile marcate cu M sunt o#ligatorii. Deci pentru fiecare linie din ta#elul userdata a #a5ei de date a=em cel pu/in trei coloane completate: nume utili5ator0 parol 0 datashare0 care specific dac restul datelor sunt pu#lice0 sau nu (adic pot fi = 5ute de al/i utili5atori0 sau nu)

5entru a comunica la ba+a de date se folose!te NDD% ..E$ data pro=ider% iar driverul pentru ba+a de date este 6y,dbc" Clasa BH-atabase6anager ne ofer func#ii pentru a reali+a orice tip de opera#ie necesar% pe tabelul nostru din ba+a de date" 3unc#iile clasei se pot vedea n diagrama clasei pe figura :"1"@"

:(

Bartha Hunor Sistem criptografic de tip secure chat


BHDatabaseManager
4namespace8BHClasses5

9 m"Connection : Od$cConnection ; ; ; ; ; ; ; ; ; 9 9 BH#ata$ase!anager,Open,- : void Close,- : void 2et+ser#ata,- : #ataSet %dd+ser1o#B,values : o$ject<=- : $ool %dd.riends1o#B,user # : string, msg : string- : $ool is0alidPass*ord,username : string, p*dHash : $"te<=- : $ool is)e*+ser,username : string- : $ool get.rien/ist.rom#B,username : string- : string compareB"te%rra"s,ar1 : $"te<=, ar2 : $"te<=- : $ool chec7(esultSet,strCommand : string- : $ool

2igura 2.1.' Diagrama ?MC a clasei D@Data#aseManager 3unc#ia >dd?ser$oD# are ca parametru de intrare un vector de obiecte% care repre+int de fapt valorile coloanelor anterior pre+entate" 3unc#ia adaug un rnd la ba+a de date% cu datele noului utili+ator" 1ceast func#ie este folosit cnd se nregistrea+ un utili+ator nou% pentru crearea contului" 6ai avem func#ii pentru verificarea parolei pentru un nume de utili+ator specificat (isAalid4assQord)% sau pentru verificarea dac un nume de utili+ator este de$a pre+ent n ba+a de date (is.eQ?ser)" Ca !i e/emplu pentru e/ecutarea unei cutri vom pre+enta implementarea func#iei isAalid4assQord"
public bool is?alid5ass'ord(string username% byte&) p'dHash)[ if(usernameKK]ne'0ser]) return trueO bool ret?alueO string N0sername K ]^]]YusernameY]^]]O string strCommand K ]S7A7C; pass'ord 3<,6 userdata IH7<7 username K ]Y N0sernameY ]O]O ,dbc-ata<eader my<eader K nullO try[ ,dbcCommand myCommand K ne' ,dbcCommand(strCommand% myConnection)O my<eader K myCommand"7/ecute<eader()O my<eader"<ead()O byte&) stored5'dHash K (byte&))my<eader"Vet?alue(=)O WWif it_s empty an e/ception is WWthro'n ret?alue K compareByte1rrays(stored5'dHash% p'dHash)O return ret?alueO ` catch(2nvalid,peration7/ception)[ WWthe recordset returned is empty ret?alue K falseO ` catch(7/ception e)[ Console"IriteAine(e"6essage)O ret?alue K falseO ` finally[ if(my<eader\Knull aa \my<eader"2sClosed) my<eader"Close()O ` return ret?alueO `

Se poate observa c se face o cutare folosind comen+ile 6ySZA a cror descriere poate fi gsit n manualul de referin# a programului &mysNl)" ;oate celelalte func#ii pentru e/tragerea sau adugarea datelor n ba+a de date au o structur similar" >=

Bartha Hunor Sistem criptografic de tip secure chat

(.2.1.;. 2.1.1.7 <serData


1ceast clas este strns legat de clasa pre+entat anterior deoarece este folosit ca un prototip pentru datele care trebuie trimise la server pentru crearea unui nou cont" Clasa implementea+ interfa#a 20ser-ata% pentru a ne asigura c avem toate cmpurile !i func#iile necesare pentru a reali+a introducerea datelor n ba+a de date" -iagrama clasei este pre+entat n figura :"1"B" Clasa are o structur foarte simpl fiind doar un container pentru datele referitoare la utili+ator"
UserData
4namespace8BHClasses5

2igura 2.1.( Diagrama clasei ?serData

9 9 9 9 9 9 9 9 9 9 9 9 9

username : string 8 null pass*ord : $"te<= 8 null first)ame : string 8 null last)ame : string 8 null street : string 8 null state : string 8 null countr" : string 8 null telephone : string 8 null email : string 8 null *** : string 8 null dataShare : int 8 ? friend/ist : string 8 null photo : $"te<= 8 null

%lasa implementea5 interfa/a K?serData0 care for/ea5 declararea c;mpurilor necesare. MaLoritatea elementelor clasei sunt c;mpuri care con/in datele personale ale utili5atorului. 3ingurele func/ii sunt constructorul Bi o func/ie suplimentar getAalues0 pentru extragerea datelor din c;mpurile clasei Bi preg tite 1ntr7o form adec=at pentru a le ad uga la #a5a de date.

; +ser#ata,; get0alues,- : o$ject<=

(.2.1.=. 2.1.1.: f#9pen


1ceast clas reali+ea+ deschiderea fi!ierelor cu e/tensia pf/% care respect standardul 5LCSS1:" Clasa este o versiune modificat a clasei publicate pe pagina microsoft% !i descris n &msdn=@)" Clasa folose!te metode din %rypto>4K pentru deschiderea fi!ierelor pf/% care con#in informa#iile despre cheia privat respectiv public a utili+atorul" Cea mai important func#ie este Coad4fx care are ca parametru de intrare calea ctre fi!ier% iar o referin# la o parol% pentru ca+ul n care fi!ierul este prote$at de parol" -iagrama clasei este pre+entat pe figura :"1"9"

>1

Bartha Hunor Sistem criptografic de tip secure chat


PfxOpen
4namespace8BHClasses::P3CSD125

G G G G G G G G G G G G G 9 9 9 9 9 9 9 9 ; ; ; ; ; ; ; ;

1 1/& : String 8 HPf:OpenH C(IP1D&EPO(1%B/& : uint 8 ?:???????1 C(IP1D+S&(DP(O1&C1&# : uint 8 ?:???????2 C(IP1D!%CH )&D3&IS&1 : uint 8 ?:??????2? C(IP1D+S&(D3&IS&1 : uint 8 ?:????1??? C&(1D3&IDP(O0D ).ODP(OPD # : uint 8 ?:???????2 E>?@D%S)D&)CO# )2 : uint 8 ?:???????1 P3CSDJD%S)D&)CO# )2 : uint 8 ?:???1???? (S%DCSPDP+B/ C3&IB/OB : uint 8 1@ &)CO# )2D1IP& : uint 8 P3CSDJD%S)D&)CO# )2 K E>?@D%S)D&)CO# )2 ver$ose : $ool 8 false CSP1"pes : String<= 8 666 7e"specs : String<= 8 4null, H%1D3&I&ECH%)2&H, H%1DS 2)%1+(&H5 pf:cert : E>?@Certificate pf:container : String pf:provname : String pf:provt"pe : uint pf:7e"spec : uint pf:cert7e"size : uint pf:cert7e"e:ponent : $"te<= pf:cert7e"modulus : $"te<= pf:cert7e"e:ponent : $"te<= 7e"e:ponent4 get4 return container,- : String 4accessor5 /oadPf:,pf:filename : String, ps*d : ref String- : $ool provider,- : String 4accessor5 providert"pe,- : uint 4accessor5 7e"spec,- : uint 4accessor5 cert,- : E>?@Certificate 4accessor5 7e"size,- : uint 4accessor5

2igura 2.1.) Diagrama ?MC a clasei 4fxNpen -up e/ecutarea cu succes a func#iei Coad4fx se ini#iali+ea+ variabilele8 pfxpro=name0 pfxpro=type0 pfxkeyspec0 pfxcontainer0 care for con#ine informa#iile necesare pentru ini#iali+area variabilelor care reali+ea+ criptarea cu cheile asimetrice" Clasa 4fxNpen este folosit n clasa D@%rypter pentru ini#iali+area parametrului my&3> de tip &3>%rypto3er=ice4ro=ider.

(.2.1.1>. 2.1.1.: Clase folosite ?n interfaa cu utili1atorul


1ceste clase sunt derivate din clasa 3ystem.TindoQs.2orms.2orm" Sunt clasele folosite pentru a afi!a ferestrele care apar pe interfa#a programului" 1u foarte multe variabile !i func#ii membre% variabilele fiind componente din clasa 3ystem.TindoQs.2orms0 cum ar fi de e/emplu butoanele% ferestrele de validare etc"% iar func#iile fiind cele folosite pentru a lucra cu aceste componente" -escrierea n detaliu nu va fi pre+entat pentru c nu face parte din tematica lucrrii de fa#" 5re+entarea interfe#ei cu utili+atorul va fi pre+entat n capitolul8 <e+ultate e/perimentale" Se folosesc dou tipuri de ferestre8 0ainFrame% care este fereastra principal a programului Server% fiind interfa#a pentru pornirea% oprirea serverului% vi+ionarea listei cu utili+atori sau datelor din ba+a de date" <serDataForm este o fereastr folosit pentru afi!area datelor despre un utili+ator selectat% ntr4un mod specific% ca !i cum ar fi un document cu toate datele despre persoana respectiv"

>:

Bartha Hunor Sistem criptografic de tip secure chat

(.2.1.11. Clientul &Cr/pto messenger'


1cest program este partea aplica#iei care este vi+ibil clien#ilor" 5rogramul reali+ea+ conectarea la serverul %rypto3er=er cu parametrii introdu!i de utili+ator% rspunde la mesa$ele primite de la server !i trimite mesa$e% la acesta" Comunicarea se reali+ea+ folosind protocolul descris n capitolul precedent"

(.2.1.12. Clasele folosite


6a$oritatea claselor folosite sunt identice cu cele pre+entate n capitolul :"1" 2n cele ce urmea+ vom pre+enta lista claselor folosite8 BHClient pre+entat n capitolul :"1"1": BHCrypter pre+entat n capitolul :"1"1"1 BH5rotocol i pre+entat n capitolul :"1"1"@ 0ser-ata pre+entat n capitolul :"1"1"9 5f/,pen pre+entat n capitolul :"1"1"D 1pplicationSettins clasa folosit pentru salvarea setrilor utili+atorului 6ain3rame con#ine elementele din interfa#a cu utili+atorul a programului" Aogin-lg fereastra pentru introducerea datelor necesare conectrii la server 6essage-lg fereastra care apare pe timpul dialogului cu un prieten Connect-lg fereastra care este vi+ibil doar la conectare afi!nd eventualele erori Signup-lg fereastr de tip dialog care este de tip ]vr$itor] !i este folosit cnd utili+atorul dore!te s4!i cree+e un cont pe server" o 5references3orm fereastr folosit pentru afi!area sau schimbarea setrilor o 1dd0ser3orm fereastra pentru adugarea noilor prieteni la lista de prieteni o o o o o o o o o o o Se poate observa c clasele cele mai importante% pe care se ba+ea+ func#ionarea aplica#iei au fost pre+entate n capitolele specificate% ca avem n plus sunt clasele care creea+ interfa#a cu utili+atorul% pentru afi!area strii aplica#iei sau preluare de date" 1ceste elemente grafice de fapt folosesc clasele din librria D@%lasses oferind o interfa# grafic pentru controlul func#iilor din clasele respective" Clasele elementelor grafice vor fi descrise n capitolul G<e+ultate e/perimentaleH" *n afar de elementele grafice avem o singur clas% numit >pplication3ettings"

(.2.1.1(. 2.2.1.1 ApplicationSettings


1ceast clas este folosit pentru salvarea setrilor reali+ate de utili+ator" 5ersisten#a acestor date nu este obligatorie% deoarece pot fi efectuate de fiecare dat cnd utili+atorul porne!te programul% ns u!urea+ e/trem de mult folosirea programului" -iagrama clasei se poate vedea pe figura :":"1" Clasa con#ine mai multe func#ii pentru accesarea cmpurilor clase" Clasa are un cmp separat pentru fiecare variabil pe care dorim s salvm" Cele mai importante dou func#ii sunt 3a=e>pp3ettings respectiv Coad>pp3ettings. 5rima salvea+ valorile cmpurilor ntr4un fi!ier de format F6A% n directorul 1pplication-ata a utili+atorului care este logat la calculatorul pe care se rulea+ aplica#ia% iar al doilea cite!te aceste date" 6ecanismul care se folose!te este seriali+area% fiind cea mai simpl metod de a salva starea anumitelor obiecte" S4a ales formatul /ml% deoarece este din ce n ce mai folosit acest stil de a salva datele% de orice tip" 7ste foarte >>

Bartha Hunor Sistem criptografic de tip secure chat probabil ca n viitorul apropiat s fie folosit pentru o repre+entare universal a datelor putnd fi interpretate de orice aplica#ie"
ApplicationSettings
<from #esign0ie* = 4namespace8Cr"ptoClient5

9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;

file)ame : string 8 HCr"pto!essenger6configH appSettingsChanged : $ool form/ocation : Point formSize : Size minimize1o1ra" : $ool autoConnect : $ool default+ser : string default+serP*d : string serverCertificatePath : string personalCertificatePath : string private3e"Path : string server P : string serverPort : int session3e"Size : int s"mmetric%lgor"thm : string %pplicationSettings,.orm/ocation,- : Point 4accessor5 .ormSize,- : Size 4accessor5 !imimize1o1ra",- : $ool 4accessor5 %utoConnect,- : $ool 4accessor5 #efault+ser,- : string 4accessor5 #efault+serP*d,- : string 4accessor5 ServerCertificatePath,- : string 4accessor5 PersonalCertificatePath,- : string 4accessor5 Private3e"Path,- : string 4accessor5 Server P,- : string 4accessor5 ServerPort,- : int 4accessor5 Session3e"Size,- : int 4accessor5 S"mmetric%lgor"thm,- : string 4accessor5 Save%ppSettings,- : $ool /oad%ppSettings,- : $ool

5arametrul boolean privat app3ettings7 %hanged ne arat dac este nevoie s salvm datele sau nu" 3unc#ionarea unei func#ii de accesare (accesor method)8
Aplicatie : ApplicationSettings :

.unctie de acces ,e:6A Server P-

appSettingsChanged 8 true Save%ppSettings 0erificare appSettingsChangedL #atele sunt salvate din nou numai dacM au fost schim$ate

2igura 2.2.2 3al=area de parametrii

1stfel fi!ierul de configurare este salvat numai dac chiar s4au schimbat parametrii" 3unc#ia de salvare a parametrilor este apelat n momentul nchiderii ferestrei de setare a preferin#elor% cu >ccept% !i cnd se iese din aplica#ie" 2igura 2.2.1 Diagrama clasei *ncrcarea parametrilor salvate este fcut >pplication3ettings n momentul lansrii programului" -iagrama 06A a celor mai importante clase este pre+entat n figura :"1"1"

2igura 2.1.1 Diagrama ?MC de asocia/ie pentru clasele D@3er=er0 D@%lient Bi %lient

>@

Bartha Hunor Sistem criptografic de tip secure chat *. )e1ultate

e#perimentale

*.1. Cerine 2A)D5S9FT *.2. Descrierea aplicaiei

>B

Bartha Hunor Sistem criptografic de tip secure chat 3. Conclu1ii

>9

Bartha Hunor Sistem criptografic de tip secure chat 7. :. $i%liografie ;. @$oA==B C Bo'den% C"% a 1Rdeni+% b"% PCryptography and -emocracy8 -ilemmas of 3reedom%H in Aiberty eds"% Ci#erating %y#erspace: %i=il Ci#erties0 @uman &ights0 and the Knternet% Aondon8 5luto 5ress% 1(((% C141:B" @Sc!n=7B C Bruce Schneier" X>pplied cryptography0 3econd editionP Mohn Iiley a Sons% 2nc% 1((9 @)SA>>B D <S1 Aaboratories% X<S1 AaboratoriesX 3reNuently 1sRed Zuestions 1bout ;odayXs Cryptography% ?ersion @"1P <S1 Security 2nc" :=== @)SA==B D <S1 Aaboratories% G5LCS 1: v1"=8 5ersonal 2nformation 7/change Synta/H <S1 Security 2nc" 1((( @AAA>>B D <i$ndael 7ncryption http:YYQQQ.tropsoft.comYs trongencYriLndael.htm @AAA>1B <i$ndael 5age http8WW'''"esat"Ruleuven"ac"beWcri$menWri$ndaelW @AAA>2B 5agina 1SE"1 http8WWasn1"elibel"tm"frWenW @rfc2*3=B Housley et" al" G2nternet F"B=( 5ublic Ley 2nfrastructureH 27;3% 5LF IorRung Vroup 1((( @Tan>(B D 1ndre' S" ;anenbaum% GComputer Eet'orRs% 3ourth 7dition P 5entice Hall :==> @msdnmB D Moshua ;rupin GSharp Ee' Aanguage8 CS ,ffers the 5o'er of CYY and Simplicity of ?isual BasicH 6S-E 6aga+ine% September :=== @msdn>*B D 6ichel 2" Vallant G5LCS S1: 3ile ;ypes8 5ortable 5rotected Leys in "E7;H 6S-E article% :==@ 1dresa 'eb8 http8WW'''"microsoft"comWindonesiaWmsdnWpRcs1:"asp @m/sElB C 6ichael Iidenius% -avid 1/marR F6ySZA <eference 6anualH ,_<eilly a 1ssociates% 2ncorporated% :==:

>D

Bartha Hunor Sistem criptografic de tip secure chat =. 4ista

de a%re,ieri

17S (1dvanced 7ncryption Standard) ES1 (Eational Security 1gency) E2S; (Eational 2nstitute of Standards and ;echnology)

>C

Bartha Hunor Sistem criptografic de tip secure chat 1>. Ane#e

>(

S-ar putea să vă placă și