Cilj ovog završnog rada je pokazati princip rada P2P (engl. Peer to Peer) mreža i aplikacija za dijeljenje datoteka. “Peer-to-peer mreže vrlo su popularan način razmjene podataka i informacija među korisnicima
Cilj ovog završnog rada je pokazati princip rada P2P (engl. Peer to Peer) mreža i aplikacija za dijeljenje datoteka. “Peer-to-peer mreže vrlo su popularan način razmjene podataka i informacija među korisnicima
Cilj ovog završnog rada je pokazati princip rada P2P (engl. Peer to Peer) mreža i aplikacija za dijeljenje datoteka. “Peer-to-peer mreže vrlo su popularan način razmjene podataka i informacija među korisnicima
SVEUILITE U SPLITU SVEUILINI ODJEL ZA STRUNE STUDIJE ODSJEK ZA INFORMACIJSKU TEHNOLOGIJU
PREDMET: PROJEKTIRANJE I UPRAVLJANJE RAUNALNIM MREAMA
ZAVRNI RAD
KANDIDAT: Davorka Lete TEMA ZAVRNOG RADA: Arhitektura partnerskih P2P mrea MENTOR: mr. sc. Tatjana Liste, vii pred.
Split, listopad 2013.
SADRAJ 1. UVOD ..................................................................................................................................................... 6 2. P2P MREA .......................................................................................................................................... 7 2.1. Uvod u P2P mree .......................................................................................................................................... 7 2.2. Povijesni razvoj P2P mrea ............................................................................................................................. 8 2.3. Razlika P2P i klijent - posluitelj arhitekture ................................................................................................... 9 3. ARHITEKTURA P2P MREA ........................................................................................................ 11 3.1. Centralizirane P2P mree ...............................................................................................................................11 3.2. Decentralizirane P2P mree ...........................................................................................................................12 3.2.1. Strukturirane P2P mree .............................................................................................................................. 13 3.2.2. Nestrukturirane P2P mree .......................................................................................................................... 14 4. P2P APLIKACIJE .............................................................................................................................. 16 4.1. P2P mree za dijeljenje podataka ..................................................................................................................16 4.2. P2P aplikacije za IM i online chat ..................................................................................................................19 4.3. P2P aplikacije za glasovnu i pisanu komunikaciju (VoIP) ...............................................................................21 4.4. P2P aplikacije za multimediju ........................................................................................................................22 4.5. P2P aplikacije za suradnju i grupe za raspravu ...............................................................................................22 5. PRINCIPI RADA P2P MREA ....................................................................................................... 24 5.1. Formiranje nadmree ....................................................................................................................................24 5.2. Pretraivanje nad-mree ...............................................................................................................................25 5.2.1. Hash tablice .................................................................................................................................................. 26 5.3. Prijenos podataka izmeu vorova ................................................................................................................26 5.3.1. TCP protokol ................................................................................................................................................. 27 5.3.2. UDP protokol ................................................................................................................................................ 27 6. POHRANA PODATAKA NA P2P MREAMA............................................................................. 28 6.1. Redundantnost podataka ..............................................................................................................................29 6.2. Brisanje oznaka (engl. erasure codes) ............................................................................................................29 6.3. Asimetrino itanje i pisanje podataka ..........................................................................................................31 6.4. Kvota i pravedna razmjena podataka ............................................................................................................31 6.5. Klasifikacija proizvoda za pohranu podataka .................................................................................................32 7. SIGURNOST P2P MREA ............................................................................................................... 33 7.1. Vanjske sigurnosne prijetnje .........................................................................................................................33 7.1.1. Raunalni virusi i crvi .................................................................................................................................... 34 7.1.2. Backdoor pristup .......................................................................................................................................... 34 7.1.3. Nezatiene poruke ...................................................................................................................................... 34 7.1.4. Povjerljivost .................................................................................................................................................. 35 7.2. Sigurnosni mehanizmi ...................................................................................................................................35 7.2.1. Tehnike tajnog kljua .................................................................................................................................... 35 7.2.2. Tehnika javnog kljua ................................................................................................................................... 35 7.2.3. Asimetrini parovi kljueva.......................................................................................................................... 35 7.3. Budunost sigurnosti P2P mrena..................................................................................................................36 7.3.1. Biometrika .................................................................................................................................................... 36 8. PRAKTINI RAD .............................................................................................................................. 37 8.1. Uvod ..............................................................................................................................................................37 8.2. Grafiko suelje .............................................................................................................................................37 8.3. Pozadinska komunikacija ..............................................................................................................................41 8.4. WCF konfiguracijska datoteka .......................................................................................................................49 9. ZAKLJUAK ....................................................................................................................................... 57 10. LITERATURA ................................................................................................................................. 58 SAETAK
Tema ovog zavrnog rada je Arhitektura partnerskih P2P mrea. Peer-to-peer mree, poznate pod nazivom P2P, popularan su nain razmjene podataka meu korisnicima. Svi korisnici u P2P mrei su ravnopravni i dijele podatke izravno izmeu sebe, bez posredovanja sredinjeg posluitelja. Postoje i posebni programi za dijeljenje podataka u P2P mrei i ti se programi obino koriste za dijeljenje audio i video sadraja. Glavne karakteristike P2P mrea opisane su kroz sedam poglavlja. Od kratke povijesti razvoja P2P mrea, podjele P2P mrea, uvida u popularne P2P aplikacije, naina rada i pohrane podataka, pa sve do sigurnosti P2P mrea i prednosti i mana. U praktinom dijelu prikazan je jedan od naina upotrebe P2P mrea, kroz jednostavnu aplikaciju za komunikaciju izmeu korisnika. P2P mree su korisne za drutveni napredak u pogledu dijeljenja informacija i za oekivati je da e P2P mree u budunosti olakati traenje podataka na Internetu.
SUMMARY Architecture of the affiliate P2P networks. The subject of this final thesis is the Architecture of the affiliate P2P networks. Peer-to-peer networks, well-known as P2P, represent a popular way of information exchange between users. All users in P2P networks are equal and share information directly, without help of a central server. There are specialized application for data exchange in P2P network, with sharing audio and video content as their most common use. The main properties of P2P networks are described in seven chapters, starting with brief history of P2P network development, classification of P2P networks, insight of popular P2P applications, principles of work and data storage, and finally security and advantages/disadvantages of P2P networks. Example of P2P network utilization is shown in the practical part of this paper, with a simple chat application. P2P networks can be socially beneficial through information sharing and are expected to facilitate information searching on the Internet.
6
1. UVOD
Cilj ovog zavrnog rada je pokazati princip rada P2P (engl. Peer to Peer) mrea i aplikacija za dijeljenje datoteka. Peer-to-peer mree vrlo su popularan nain razmjene podataka i informacija meu korisnicima. Razmjena podataka u P2P mreama temelji se na meusobnom povjerenju sudionika. Promet ostvaren P2P mreama u posljednjih 5 godina premaio je promet ostvaren pregledavanjem web stranica i drugim aktivnostima. Broj sudionika na P2P mreama svakodnevno raste. (URL1) U drugom poglavlju je opisana kratka povijest razvoja P2P mrea od mree ARPANET-a (engl. The Advanced Research Projects Agency Network) do P2P programa druge generacije, te razlika P2P mree u odnosu na klijent-posluitelj arhitekturu. P2P arhitektura koja je opisana u treem poglavlju predstavljena je kroz podjelu prema nainu ispisivanja podataka koji se razmjenjuju. etvrto poglavlje daje uvid u popularne P2P aplikacije i njihovu originalnu namjenu. Peto poglavlje opisuje nain rada P2P mree. Nain rada opisan je kroz korake kao to su formiranje nad-mree, pretraivanje nad-mree i prijenos korisnikih podataka izmeu vorova. esto poglavlje opisuje nain pohrane podataka opisujui kljune pojmove kao to su redundantnost podataka, brisanje oznaka, asimetrino itanje i pisanje podataka, odabir vorova, kvota i pravedna razmjena podataka te klasifikacija proizvoda za pohranu podataka. Jedan od najvanijih koncepata P2P arhitekture sigurnost, opisana je u sedmom poglavlju dajui uvid u nunost zatite podataka. Opisane su vanjske i interne sigurnosne prijetnje kao i sigurnosni mehanizmi. U praktinom radu prikazan je osnovni koncept rada P2P aplikacija preko aplikacija za izmjenu poruka kao to je Google Talk. Aplikacija je kodirana u programskom jeziku C# koristei razvojni alat Microsoft Visual Studio 2010. Pokreu se dvije aplikacije te korisnik jedne aplikacije razmjenjuje poruke s korisnikom druge aplikacije. Poruke koje prvi korisnik upisuje vidljive su drugom korisniku i obrnuto. U zavrnom poglavlju navedene su prednosti i mane P2P arhitekture.
7
2. P2P MREA
P2P mrea je ostvarila ogroman interes u cijelom svijetu kako meu korisnicima Interneta tako i kod strunjaka za raunalne mree. Brojne tvrtke i web stranice su promovirali P2P tehnologiju kao budunost internetskog povezivanja. P2P dijeljenje datoteka takoer je stvorilo mnoge kontroverze u vezi zakona i pravednog koritenja datoteka. Openito, strunjaci se ne slau u raznim detaljima vezano za P2P tehnologiju i njen daljnji razvoj u budunosti.
2.1. Uvod u P2P mree
P2P je raunalna mrea u kojoj nema posluitelja ni klijent-posluitelj modela koji je dominirao mreama u poetcima Interneta, a koji dominira strukturom Interneta i danas. U P2P mrei svi su vorovi (engl. peer) jednaki i istovremeno imaju funkciju klijenta i posluitelja. Kako ne postoji netko tko e kontrolirati razmjenu podataka, jer ne postoji glavno raunalo (engl. host) ni posluitelj (engl. server) koji nadgleda sve ostale, svi vorovi posjeduju jednaka prava uzimanja i davanja resursa. Iz toga se da zakljuiti da P2P mrea ima sljedee karakteristike: svaki vor je ravnopravan, komunikacija izmeu vorova je izravna (nema posluitelja), mrea je pouzdana jer nema jednu toku kvara (glavno raunalo ili posluitelj).
Slika 2.1. Shema P2P mree
8
2.2. Povijesni razvoj P2P mrea
P2P nain umreavanja nije novi koncept. Tragovi P2P mrea datiraju jo iz samih poetaka Interneta, tonije iz ezdesetih godina prolog stoljea kada je Internet zamiljen kao P2P mrea. Preteu Interneta ARPANET, razvilo je ameriko Ministarstvo obrane u cilju dijeljenja raunalnih resursa unutar sveuilita SAD-a. Svoje lanove, ARPANET je spajao na principu jednakih sudionika jer ideja klijent-posluitelj tada jo nije postojala. Prva komercijalno koritena P2P mrea je mrea raspravnih grupa (engl. Usenet news, skraeno USENET), gdje su posluitelji meusobno komunicirali i razmjenjivali nove poruke unutar tih grupa. Ipak, i takav posluitelj je bio klijentsko-posluiteljske arhitekture jer su mu korisnici izravno pristupali kako bi proitali ili napisali poruku. Do prije dvadesetak godina Internet su sainjavala velika raunala koja su imala stalne IP adrese i koja su bila konstantno povezana. Nakon pojave svjetske mree (engl.World Wide Web, skraeno WWW), zbog brzog rasta broja korisnika javila se potreba za dinaminim dodjeljivanjem IP (engl. Internet Protocol) adrese pri svakom spajanju, jer su osobna raunala poela ostvarivati povremeni pristup Internetu. Iz ovih razloga na scenu dolaze P2P mree. Centralizirani P2P sustav Napster pojavio se u svibnju 1999. godine. Napster je omoguio korisnicima da se spoje i dijele svoju omiljenu glazbu izravno s drugim krajnjim korisnicima, bez brige oko pronalaenja posluitelja koji bi im to omoguio i bez raznih ogranienja i pravila. Vrlo brzo nakon pojave, Napster se poeo suoavati sa pravnim izazovima. Nakon brojnih tubi, u svibnju 2002. godine objavljena je prodaja Napster-a, a vrlo brzo nakon toga i bankrot. Nakon Napstera pojavila se fleksibilna mrea Gnutella koja je organizirana u hijerarhijske klaste (engl.cluster, skupina istovrsnih stvari) i bez centralnog raunala kod koje postoji nekoliko razina sudjelovanja klijenata obzirom na brzinu veze i snagu raunala. Korisnici Gnutella mree, da bi se spojili na mreu, sve to moraju znati je adresa bilo kojeg raunala u mrei od kojeg onda dobivaju poetne parametre za pristupanje mrei. U oujku 2001. godine predstavljeni su protokol FastTrack i klijent KaZaA koji su sa sobom donijeli dodatna poboljanja kao to su super vorovi (engl.supernodes) i mrijestlita (engl. spawning). FastTrack je slian Gnutelli po tome to nema centralnog servera i svi klijenti su spojeni ravnopravno. Negdje u isto vrijeme dok su se razvijale FastTrack mree, zapoinje i rad na BitTorrent protokolu koji je danas najraireniji protokol razmjene podataka preko Interneta u P2P mrei.
9
2.3. Razlika P2P i klijent - posluitelj arhitekture
Klijent-posluitelj je arhitektura gdje korisnik (klijent) i posluitelj igraju razliite uloge u mrenom okruenju. Najoitiji je primjer kod pregledavanja Internet stranica. Korisniko raunalo i Internet preglednik su klijent, dok su raunalo i baza podataka koji ine Internet stranicu posluitelj. Klijent je obino aktivan korisnik koji alje zahtjeve i eka dok se isti ne ispune, dok je posluitelj pasivan, eka na zahtjeve, ispunjava ih i alje korisniku. Posluitelji su obino veoma jaka raunala s dobrim konfiguracijama i karakteristikama zbog toga to istovremeno moraju obraditi mnogo zahtjeva koji rastu iz dana u dan. Obino su na posluiteljima instalirani posebni operacijski sustavi koji sadre naprednije opcije u odnosu na obine klijent operacijske sustave.
Slika 2.2. Klijent-posluitelj model Slika 2.3. P2P model
U P2P arhitekturi, resursi se dijele izmeu vorova bez koordinacije sredinjeg posluitelja. vorovi se ponaaju kao dobavljai i potroai resursa. Nema centralizirano-sigurnosnog sustava, a krajnji korisnici imaju neogranien pristup resursima to smanjuje sigurnost u P2P mrei.
10
P2P arhitektura Klijent-posluitelj arhitektura Decentralizirani oblik mrene arhitekture. Centralizirani oblik mrene arhitekture. Pristup mrei i zadatci podijeljeni su ravnopravno meu lanovima. To je vrsta odnosa ''svatko nosi svoj teret''. Kako bi pristupili resursima, klijenti prvo moraju poslati zahtjev posluitelju. To je vrsta usluge ''poalji zahtjev i isti e ti se ispuniti''. lanovi imaju iste povlastice i prava i na isti nain pristupaju razliitim izvorima podataka. Nema razlike ni na koji nain meu lanovima. vorovi izravno komuniciraju jedan s drugim, bez potrebe za sredinjim posrednikom. Klijenti su radne stanice ili korisnika raunala koji ne dijele svoje resurse, ve alju zahtjeve i ekaju dok se isti ne ispune. P2P mrea se obino koristi u P2P programima za razmjenu datoteka, kao to su Napster i Bitorrent. Elektronika pota, bankarske usluge, ak i HTTP (engl. Hypertext Transfer) protokol su primjeri klijent-posluitelj modela.
Glavna razlika izmeu klijent-posluitelj i P2P arhitekture je ta da u klijent-posluitelj arhitekturi odreeni klijenti alju zahtjeve za uslugama, a posluitelji su ti koji ispunjavaju te zahtjeve, dok se u P2P arhitekturi vorovi ponaaju i kao posluitelji i korisnici usluga. Nadalje, klijent- posluitelj sustavi zahtijevaju glavnog posluitelja tako da su u provedbi dosta skuplji od P2P sustava. S druge strane, glavni posluitelj osigurava razinu pristupa klijentima to prua bolju sigurnost od P2P sustava u kojima sigurnost ovisi o krajnjim korisnicima. P2P sustavi poveanjem broja vorova gube na znaajkama, dok su klijent-posluitelj sustavi stabilniji i mogu se poveavati koliko god je potrebno. Stoga izbor jednog od ova dva sustava ovisi o okruenju koje se stvara.
11
3. ARHITEKTURA P2P MREA
Kao to postoje razliiti tipovi arhitekture raunalnih mrea openito, tako postoje i razliiti tipovi i arhitekture P2P mree. P2P mree je mogue podijeliti prema nainu ispisivanja podataka koji se razmjenjuju (engl. File listing) i to na: Centralizirane P2P mree i Decentralizirane P2P mree. Dalje se decentralizirane P2P mree dijele na: Strukturirane P2P mree i Nestrukturirane P2P mree.
3.1. Centralizirane P2P mree
Kod P2P mrea sredinji posluitelj odrava direktorije dijeljenih datoteka pohranjenih na pojedinanom voru. Svaki put kad se klijent spoji ili od odspoji od mree, direktorij se obnovi. U ovom modelu, kompletna kontrola i poruke se alju na sredinji posluitelj. Posluitelj tada usporeuje zahtjev s bazom podataka i prikazuje rezultate upita. Jednom kad klijent dobije pozitivnu informaciju o pronaenom rezultatu, kontaktira vor direktno i preuzima traenu datoteku. Datoteka niti u jednom trenutku nije pohranjena na centralnom posluitelju. Centralizirana P2P mrea prua najvee performanse kada se govori o traenju i lociranju datoteka. Jedna od glavnih prednosti centraliziranih mrea je postojanje tablice pomou koje se sve datoteke mogu brzo i jednostavno locirati. Kako se tablica redovito obnavlja, rezultati pretrage su odmah dostupni za preuzimanje. Druga prednost lei u injenici da svaki korisnik mora biti registriran na mrei te se pretraivanje ostvaruje tako da se pretrauju trenutno ulogirani korisnici pa su dobiveni rezultati maksimalno sveobuhvatni. Mana arhitekture centraliziranih P2P mrea je ta to ima jednu ulaznu toku koja je ustvari slaba karika mree jer ukoliko se taj posluiteljski sustav odsjee, itavi centralizirani sustav pada. Predstavnik centralizirane P2P mree je Napster. Napster je bio on line usluga za dijeljenje glazbenih datoteka. Nakon raznih tubi, originalna usluga je ugaena, ali je otvorila put decentraliziranim P2P mreama.
12
Slika 3.1. Arhitektura centraliziranih P2P mrea
3.2. Decentralizirane P2P mree
Decentralizirane P2P mree su novija generacija P2P mrea, a glavna karakteristika im je ta to ne postoji sredinji posluitelj koji bi koordinirao svim ostalim sudionicima mree i upravljao operacijama meu njima. Svaki sudionik decentralizirane P2P mree ima jednaka prava i obveze i na taj nain nijedan vor nije superioran drugome. Osim toga, svaki sudionik moe uzimati tue i davati vlastite resurse drugim sudionicima s kojima komunicira u mrei. Prednost decentraliziranih mrea je ta to ne postoji slaba toka koja bi mogla odjednom sruiti cijeli sustav. Nedostatak ove arhitekture je u vremenu koje je potrebno da bi upit koji se postavi doao do svih vorova koji tvore mreu. Decentralizirane P2P mree dalje se dijele na strukturirane i nestrukturirane P2P mree.
13
Slika 3.2. Arhitektura decentraliziranih P2P mrea
3.2.1. Strukturirane P2P mree
U strukturiranim P2P mreama, vorita su organizirana prema specifinim kriterijima ili algoritmima, to dovodi do stvaranja topologija sa specifinim svojstvima. Algoritmi u strukturiranim P2P mreama uvelike utjeu na uinkovitost i brzinu mree. Indeksiranje u ovakvim mreama obino se temelji na distribuiranim rasprenim tablicama (engl. Distributed Hash Table, skraeno DHT), gdje je svaki podatak obiljeen pripadajuom rasprnom funkcijom (engl. Hash Function). Ovo omoguuje vorovima da trae podatke na mrei koristei DHT tablice. Svaki podatak na mrei ima dva svojstva, a to su klju (engl. value) i rasprena vrijednost (engl. hash value) koja su pohranjena u DHT tablicama. vor koji eli dohvatiti traeni podatak od drugog vora mora tom voru poslati odgovarajui klju. Prvi primjeri strukturirane P2P mree su Chan i Chord. Chord je jedan od prvih protokola koji je poeo koristiti DHT tablice. On definira nain na koji su kljuevi dodijeljeni vorovima, kako vor moe otkriti vrijednost zadanog kljua te kako otkriti koji vor je odgovoran za zadani klju.
14
Slika 3.3. Strukturirana P2P mrea
3.2.2. Nestrukturirane P2P mree Nestrukturirane P2P mree ne nameu oblik strukture mree. Svi lanovi ove mree spojeni su meusobno i to na proizvoljan nain. Kada vor eli pronai neki podatak, upit se alje svim dostupnim vorovima u cilju pronalaenja to veeg broja vorova koji imaju traeni podatak. Nekada traeni upit ne daje nikakav rezultat, to je i nedostatak nestrukturiranih P2P mrea. Nestrukturirane P2P mree ne bi trebale imati nikakav centralizirani sustav, ali postoji nekoliko vrsta nestrukturiranih mrea s razliitim stupnjevima centralizacije, a to su iste i hibridne P2P mree. iste P2P mree se sastoje od ravnopravnih vorova koji koriste samo jedan sloj za usmjeravanje prometa. Primjeri ovakve mree su Gnutella i Freenet kod kojih ne postoji neki centralni posluitelj koji upravlja mreom niti neki preferirani vor s posebnom ulogom. Hibridne P2P mree su kao mjeavina klijent-posluitelj i iste P2P arhitekture gdje se klijent- posluitelj arhitektura odnosi na pretraivanje datoteka, a ista P2P mrea na njihov prijenos. Primjeri ovakve mree su Gnutella2, koja je moderna implementacija Gnutelle, i Kazaa.
15
Slika 3.4. Nestrukturirana P2P mrea
16
4. P2P APLIKACIJE
P2P aplikacije su vrlo popularan nain razmjene podataka i informacija meu korisnicima jer je tradicionalno preuzimanje programa i aplikacija sa web stranica zastarilo. Jedan od razloga velike popularnosti P2P aplikacija je taj to korisnik komunicira samo s jednim posluiteljem i preuzima eljenu datoteku samo s jednog posluitelja. Naravno, na samom poetku, korisnik mora posluitelju poslati zahtjev za preuzimanje datoteke. Kako se razmjena podataka temelji na meusobnom povjerenju korisnika, na P2P mrei je sve uestalije irenje virusa i mnogih drugih napasti koje mogu izazvati i isto tako iskoristiti zlonamjerni korisnici. P2P aplikacije se dijele na: aplikacije za dijeljenje podataka, aplikacije za IM i online chat, aplikacije za glasovnu i pisanu komunikaciju (VoIP), aplikacije za multimediju i aplikacije za suradnju i grupe za rasprave.
4.1. P2P mree za dijeljenje podataka
Razmjena podataka meu korisnicima vjerojatno je najuspjenija primjena P2P mrea. U veini sluajeva, preuzimanje sa P2P mrea je bre od izravnog preuzimanja s posluitelja. Danas, prijenos podataka ljudi rade svakodnevno to je jedan od razloga razvijanja niza raunalnih programa koji korisnicima omoguavaju preuzimanje besplatnih sadraja od drugih korisnika. Najpoznatiji P2P protokoli za dijeljenje podataka su BitTorrent, Gnutella, Napster i eDonkey.
BitTorrent BitTorrent je najpoznatiji protokol za dijeljenje podataka meu korisnicima koji je razvio Bram Cohen. On omoguava brzo preuzimanje velikih datoteka pritom koristei minimum Internetskog opsega. Besplatan je i ne sadri pijunske programe niti bilo kakve reklame. BitTorrent ima svoj argon, a neke od najeih rijei koje se koriste su :
17
Lechees - korisnici koje preuzimaju odreenu datoteku, ali je ne dijele sa svog raunala. Seed ili Seeder - korisnici kod kojih se nalazi BitTorrent datoteka koju drugi korisnici preuzimaju. Kako bi BitTorrent radio, potreban je najmanje jedan seed. Swarm - grupa raunala koja stimulativno alje ili prima istu datoteku. .torrent - ekstenzija same datoteke koja se preuzima koristei BitTorrent. Tracker - posluitelj procesa BitTorrent prijenosa.
Slika 4.1.Prikaz rada BitTorrent-a
BitTorrent protokol prebacuje dio posla koji se bavi pretragom za datotekama na centralni server koji se zove tracker. Korisnici da bi preuzeli datoteku moraju je i dijeliti, to dovodi do zakljuka da BitTorrent radi na principu Ja tebi, ti meni. Poznate aplikacije iji se rad temelji na BitTorrent protokolu su: Torrent, Vuze(Azureus), Bitcomet, rTorrent.
18
Gnutella Gnutella je protokol za dijeljenje veinom glazbenih datoteka. U oujku 2000. godine razvili su je Justin Frankel i John Pepper, a danas je razvijaju lanovi GDF-a (engl. Gnutella Developer Forum-a). Gnutellu podravaju aplikacije kao to su BearShare, Limewire, Frostwire, Shareaza. Limewire je P2P aplikacija koja koristi Gnutellin protokol i koja se koristi za razmjenu datoteka. Izgraena je na platformi mediaplayer-a sa optimiziranim rezultatima pretrage. Postoji besplatna verzija, ali i komercijalna. Shareaza ili Gnutella 2 odvaja se od ostalih P2P aplikacija po tome to moe pretraivati vie P2P mrea. Ona je zapoela kao Gnutellin klijent, ali njezin autor Michael Stokes je potpuno preradio originalnu Gnutellinu specifikaciju i nazvao je Gnutella 2. Gnutella 2 je besplatna, brza, ima elegantno suelje i jednostavno se koristi.
Slika 4.2. Izgled aplikacije Shareaza
19
Napster Napster je bio poznata aplikacija koju je razvio 1999. godine student Shawn Fanning kako bi korisnici mogli besplatno razmjenjivati MP3 datoteke. Napster je svoju najveu popularnost postigao u veljai 2001. godine. Meutim, glazbenoj industriji se takav koncept dijeljenja njihovih proizvoda nije svidio, pa su uslijedile tube zbog kojih je Napster morao prestati s radom 2001.godine.
eDonkey eDonkey protokol koriste aplikacije kao to su aMule, eMule, Morpheus i Shareaza. eMule je aplikacija za dijeljenje podataka izmeu korisnika. Jedna od glavnih prednosti ove aplikacije je ta to ima otvoreni kod koji omoguuje programerima pridonijeti aplikaciji, inei je efikasnijom. eMule je besplatna aplikacija koja ne koristi nikakve zlonamjerne ni reklamne softvere.
4.2. P2P aplikacije za IM i online chat
Prema popularnosti meu korisnicima, najpopularnije aplikacije za slanje trenutanih poruka (engl. Instant Messaging, skraeno IM) i online chat su: Windows Live Messenger Yahoo! Messengler Tencent QQ.
Windows Live Messenger Windows Live Messenger je bio najpopularniji medij za online dopisivanje. On je pruao usluge dijeljenja podataka i razmjene poruka s vremenskom oznakom. Prvi put je uao u koritenje pod imenom MSN Messenger i to 1999. godine, a u sadanje ime preimenovan je tek 2005. godine. U prvoj etvrtini 2013. godine Windows Live Messenger postao je prolost za sve korisnike (osim Kine) jer se integrirao u Skype. Sve to je bilo mogue i dostupno u Windows Live Messengeru sada je dostupno i u Skype-u.
20
Slika 4.3. Izgled aplikacije Windows Live Messengler
ICQ ICQ je IM klijent za slanje trenutanih poruka. Ime potjee od englleskog izraza I seek you, to u hrvatskom prijevodu znai Traim te. Program je prvi put izaao 1996. godine, a izradio ga je Mirabilis, izraelska tvrtka iz Tel Aviva. ICQ se neprestano nadograuje, stoga postoji mnogo verzija programa, a uz IM funkcije, korisnicima nudi i multiplayer igre, prijenose datoteka, audio i video komunikaciju itd.
Tencent QQ Tencet QQ popularno poznat i kao QQ je klijent za slanje trenutanih poruka. On je najpopularniji kineski IM klijent, a trei najpopularniji klijent u svijetu. Svojim korisnicima nudi razne usluge ukljuujui multiplayer igre, skupni i glasovni chat, servis za preuzimanje melodija itd.
21
4.3. P2P aplikacije za glasovnu i pisanu komunikaciju (VoIP)
VoIP (engl. Voice over Interner Protokol) je opi pojam za glasovnu i pisanu komunikaciju preko Interneta. VoIP u uem smislu rijei predstavlja IP telefoniju jer se glas prenosi putem Interneta od pozivatelja do odredita. IP telefonija ne koristi se nuno samo za prijenos glasa putem Interneta, ve se koristi i za prijenos glasa i slike preko IP komunikacijskog kanala. P2P aplikacije koje podravaju VoIP su Skype, ICQ i Windows Live Messengler.
Skype Skype je najpopularnija aplikacija za glasovnu i pisanu komunikaciju. Danas ima preko 310 milijuna korisnika kojima doputa telefoniranje preko Interneta. Skype svojim korisnicima nudi i mogunost prijenosa podataka, video telefoniju i video konferencije, slanje kontakata i slanje novca na raun. Kreatori ove aplikacije su Niklas Zennstrom i Janus Friis.
Slika 4.4. Izgled korisnikog suelja aplikacije Skype
22
4.4. P2P aplikacije za multimediju
P2P aplikacije za multimediju koriste se za legalnu distribuciju softvera i multimedije. Ovaj nain pregledavanje multimedijskog sadraja najee ukljuuje presluavanje glazbenih zapisa, gledanje video zapisa, te gledanje televizijskih programa. Vrsta pregledavanja multimedijskih sadraja kod P2P mrea naziva se peercasting i razlikuje se od standardnog naina emitiranje sadraja (engl. Broadcasting) u nainu dijeljenja sadraja. U peercastingu svaki sudionik mree koji pregledava multimedijske sadraje, alje te iste sadraje drugim sudionicima mree. Jedne od P2P aplikacija za multimediju su Blizzard Downloader i P2PTV.
4.5. P2P aplikacije za suradnju i grupe za raspravu
Glavni predstavnik aplikacija za suradnju i grupa za raspravu je aplikacija Microsoft Groove. Aplikacije koje pripadaju ovoj kategoriju namijenjene su korisnicima koji rade na istom projektu tako to im omoguava komunikaciju, laku suradnju i pregled rada drugih lanova tima, a sve u cilju postizanja zajednikog cilja.
Microsoft Groove Microsoft Groove je inicijalno dizajnirao Ray Ozzie,a da nas je u vlasnitvu Microsofta. Aplikacija je bazirana na konceptu radnih okruenja (engl. workspaces) koje korisnici mogu sami kreirati i pozivati nove korisnike. Microsoft Groove je aplikacija namijenjena korisnicima koji rade zajedno na projektima, a esto su nedostupni (engl. offline). Osim radnih okruenja, aplikacija se sastoji od prostora za datoteke, prostora za diskusiju te IM usluga.
23
Slika 4.5. Izgled aplikacije Microsoft Office Groove
24
5. PRINCIPI RADA P2P MREA
Funkcioniranje P2P mrea, kao i redoslijed operacija koje obavlja novi vor koji se prikljuuje u mreu, odvija se u tri koraka: formiranje nad-mree, odnosno otkrivanje virtualne topologije nad mree, pretraivanje nad-mree u potrati za vorovima koji sadre eljene podatke, prijenos korisnikih podataka izmeu vorova.
5.1. Formiranje nadmree
Pojam nad-mrea (engl. Overlay network) kod P2P mrea predstavlja virtualnu mreu vorova ija povezanost ne ovisi o topologiji fizike raunalne mree koja ih povezuje, niti o protokolu kojim pojedini vorovi komuniciraju. Upravljanje nad-mreama je kljuno za odravanje P2P sustava. One esto moraju obraivati velik broj prikljuivanja i odspajanja vorova, istovremeno osiguravajui priblino jednako ponaanje za sve vorove. Dakle, moraju biti visoko dinamine i simetrine. Prvi korak u stvaranju nad-mree je meusobno otkrivanje vorova koji sudjeluju u mrei. U danas koritenim P2P mreama koristi se nekoliko naina na koji vorovi koji se prikljuuju otkrivaju druge vorove prisutne u nad-mrei: pomou pred-definirane liste adresa "uvijek prisutnih" vorova, pomou pred-definirane adrese posluitelja koji sadri adrese aktivnih vorova, dohvaanjem liste vorova ili posluitelja putem eksternih protokola (HTTP, FTP), korisnikim unosom vora za ije postojanje korisnik doznaje na neki drugi nain, koritenjem funkcionalnosti mrenih slojeva (TCP/IP). Prva dva naina otvaraju mogunost onemoguavanja mree utjecanjem na kljune vorove ili posluitelje, ali se esto koriste zbog jednostavnosti. Primjeri sustava koji koriste ovakav nain rada su Napster i Kazaa. Kod ovakvih sustava svi vorovi su u stalnom kontaktu sa "uvijek prisutnim" vorovima ili posluiteljima koji sadre liste aktivnih vorova.
25
Kod treeg i etvrtog naina lista dostupnih vorova i posluitelja se uva odvojeno od klijentskih aplikacija. Na ovaj nain rade sustavi kao BitTorrent i DC++. Samostalno otkrivanje drugih vorova koritenjem mrenih slojeva se koristi rijetko, uglavnom u specijaliziranim rjeenjima namijenjenim koritenju u malim zatvorenim mreama. Takoer se ponekad koristi kao pomoni nain u sluaju kad drugi koriteni naini ne uspiju pronai pogodne vorove. Primjer ovakvog sustava je Gnutella.
5.2. Pretraivanje nad-mree
Da bi vorovi u P2P mrei uspjeno razmjenjivali informacije, one moraju biti strukturirane te mora biti mogue uspostaviti kriterije po kojima su one pohranjene i po kojima ih se moe pronai. Mogunosti pretraivanja uvelike ovise o nainu na koji je izvedeno formiranje nad- mree, odnosno njenoj topologiji. Kod sustava gdje postoji sredinji posluitelj mogue je konstantno odravati popis svih vorova koji sudjeluju u nad-mrei, to osigurava da korisniki upit bude proslijeen do svih vorova, te da je vrijeme potrebno da svi vorovi odgovore donekle predvidljivo. S druge strane, kod potpuno decentraliziranih P2P mrea upit se mora propagirati nad-mreom od jednog vora preko njegovih susjednih vorova itd., te nije mogue garantirati da e upit stii do svih vorova (npr. u sluaju ispadanja dijela vorova ili nedovoljne mrene propusnosti), niti se moe predvidjeti vrijeme potrebno da upit obie sve vorove. Zbog toga se u praktinim primjenama ovog tipa mrea esto uvode "posebni" vorovi koji imaju vie resursa na raspolaganju, te su povezani sa daleko veim brojem drugih vorova. Tada "obini" vorovi preferiraju slati upite ovim "posebnim" vorovima. Nain proglaavanja vora "posebnim" moe biti statian (unaprijed predvien od autora sustava ili od korisnika) ili dinamian (testiranjem pogodnosti vorova tijekom rada sustava). Kod velikih P2P mrea, od velike je vanosti osigurati to bre pretraivanje nad-mree. Ako su podaci jednostavnog oblika, kao to su imena datoteka i/ili kljune rijei koje ih opisuju, mogue je koristiti vrlo efikasne tehnike zasnovane na raspodijeljenim rasprenim tablicama.
26
5.2.1. Hash tablice Pretraivanje datoteka u P2P mrei se temelji na principu poplave upita (engl. query flooding) ili generiranje popisa datoteka unaprijed. Distribuirane hash tablice (engl. Distributed hash table skraeno, DHT) su predstavljene 2001. godine preko projekata Chord, Kademlia, Pastry i Tapestry. Glavna ideja DHT tablica je smanjenje broja upita i nepotrebnog zaguenja mree koju koristi tehnika "poplave upita" to moe rezultirati i DOS (engl. Denial of service) napadima. Za vrijeme uspostavljanja mree generiraju se tablice usmjeravanja (engl. routing tables) te se obnavljaju prilikom ulaska ili izlaska vora sa mree izostavljajui potrebu za protokolom usmjeravanja (engl. routing protocol). Dijelovi tablica u DHT mrei su rasporeeni odvojeno preko razliitih mrea. Prilikom dijeljenja datoteke na mrei, datoteka se zapisuje u DHT tablicu te se izraunava hash vrijednost i vraa vrijednost koja postaje identitet datoteke (ID). Datoteka je potom objavljena na voru koji posjeduje popis hash vrijednosti i ID datoteke. Za pretraivanje specifine datoteke ili lociranja vora se radi na principu da se dobije hash vrijednost datoteke ili vora te se poalje upit s hash vrijednosti kao odredina adresa. Baza podataka sadri par podataka (klju,vrijednosti): - klju: ime filma; vrijednost: IP adresa, - klju: ime na skype mrei; vrijednost: IP adresa. vorovi vre pretragu baze s imenom kljua te baza vraa vrijednosti koja se slae s traenim kljuem. vorovi mogu unijeti i par (klju,vrijednost) za vorove. Svaki klju je mapiran na cijelobrojni broj te je svakom pojedinanom voru dodijeljen broj u istom dometu. Prostor vrijednosti kljueva mora biti dovoljno velik tako da se kljuevi ne sudaraju. Za primjer, sha (engl. secure hash algorithm ) je hash funkcija koja uzima niz znakova i generira klju od 128 bita (2 128 ) to je veliki raspon vrijednosti.
5.3. Prijenos podataka izmeu vorova
vorovi u P2P mreama uspostavljaju izravnu vezu meu sobom te razmjenjuju podatke koristei TCP (engl. Transmission Control Protocol, protokol kontrole prijenosa) i UDP (User Datagram Protocol, protokol kratkih korisnikih poruka) protokol.
27
5.3.1. TCP protokol TCP protokol je protokol prijenosne razine TCP/IP komunikacijskog modela. To je pouzdan protokol koji podatke tretira kao kontinuirani slijed, a ne kao skup meusobno neovisnih poruka, te jami isporuku podataka na odredite. TCP je spojevni protokol, to znai da uspostavlja logiku vezu ili virtualni kanal izmeu dva krajnja ureaja. Osim toga, TCP prua i mogunost viestrukih istovremenih konekcija prema jednoj aplikaciji na jednom domainu od strane vie klijenata. Pouzdanost protokola je osigurana tako da se za svaki poslani segment oekuje potvrda prijema. Ako nakon isteka odreenog vremenskog intervala potvrda ne stigne, ili stigne informacija o greki u primljenim podacima, prijenos se ponavlja sve dok ne stigne pozitivna potvrda prijema.
5.3.2. UDP protokol UDP protokol je takoer protokol prijenosne razine, ali je jednostavniji od TCP protokola jer ne vodi rauna o izgubljenim paketima, te hoe li paketi stii istim redoslijedom kojim su poslani. Zbog toga UDP paketi imaju znatno manje zaglavlje. Postoji nekoliko sluajeva kada se za prijenos koristi UDP umjesto TCP protokola: kada je potrebno poslati manji blok podataka, veliine jednog paketa, pa je jednostavnije i bre prenositi samo podatke (uz UDP zaglavlje), bez dodatnih kontrola, a u sluaju pogrenog prijema poslati ponovno, za slanje upita jednog vora drugom, uz ponavljanje upita ako odgovor ne stigne nakon isteka odreenog vremenskog intervala; na upit se takoer moe odgovoriti primjenom UDP protokola, za prijenos podataka aplikacija koje imaju vlastite tehnike osiguravanja pouzdanog prijenosa, ili su manji gubici dozvoljeni.
28
6. POHRANA PODATAKA NA P2P MREAMA
vorovi na Internetu surauju na principu tako da je svaki vor je potroa i proizvoa podataka. vorovi ele pohraniti podatke na P2P mrei iz vie razloga: pohrana lokalnih podataka, sinkronizacija podataka izmeu vie raunala ili dijeljenje datoteka s drugim vorovima. Iz perspektive jednog vora u P2P mrei, P2P proces pohrane replicira lokalne podatke na vorovima, a zauzvrat prima podatke od vorova za daljnju upotrebu od strane tih vorova (Slika 6.1.). Lokalni podaci mogu biti spremljeni u drugim vorovima te kad jedan ili vie vorova napusti mreu, podatci e jo biti dostupni na jednom od preostalih vorova. Jednom kad se podaci distribuiraju preko vorova, potrebno je izvriti odravanje redovitom provjerom koliko je vorova dostupno i koliko od njih posjeduje podatke koji su zatraeni za pohranu. Ovisno o stopi naputanja razina redundantnosti se smanjuje te se mora popraviti redistribucijom dijelova originalnih podataka na nove vorove.
Slika 6.1. Metoda pohrane podataka
p2p storage process local data storage peer data storage
29
6.1. Redundantnost podataka
P2P mrea moe rasti ili se smanjivati razliitom dinamikom. U nekim sluajevima, vorovi naputaju mreu velikom brzinom dok u drugom sluaju vrlo sporo. Isto tako u nekim mreama vorovi rade u izvan mrenom radu neko vrijeme bez da kompletno napuste mreu. Stopa po kojoj vorovi naputaju i pristupaju mrei se zove stopa naputanja (engl. churn rate). esta nuspojava redundantne pohrane podataka na vorove je disperzija podataka na geografski dislocirane vorove. Efekt smanjuje rizik gubitka podatka u sluaju poara ili prirodnih katastrofa.
Razina redundancije odreuje minimalni dio (vorova koji pohranjuju podatke) koji je potreban da bi se podaci uspjeno vratili u izvornom obliku. Visoka redundantnost rezultira minimalnim dijelom za vraanje izvorne datoteke, ali vri veu potronju mrene propusnosti isti podatak mora bit spremljen na vie vorova i prilikom uploada svaki vor mora primiti svoj dio. Razina redundantnosti zahtijeva puno prostora na disku (na lokalnom voru) te korisnici P2P mree moraju uvijek balansirati razinu redundancije s koliinom mrenog prometa potrebnog za pohranu podataka. Mree s visokom dinamikom zahtijevaju vie mrenih resursa za odravanje odreene razine redundantnosti.
6.2. Brisanje oznaka (engl. erasure codes)
Redundantnost se moe postii replikacijom podataka na vie vorova. U kasnijoj fazi, mogunost da je vor dio mree nije velika pa replikacija zahtijeva distribuciju podataka na odreeni broj vorova da bi se garantirao pronalazak traenog podatka.
Druga metoda za postizanje redundancije je brisanje oznaka na podacima. U teoriji informacija brisane oznake se koriste kao ispravak greaka koje se akumuliraju prilikom prijenosa podataka. Originalni podaci su kodirani u due poruke tako da je na odreditu samo dio podataka potreban za kompletnu rekonstrukciju.
30
Slika 6.2. Faze stanja podataka prilikom pohrane i vraanja podataka u P2P mrei
Kada se primjenjuje tehnika brisanja, oznaka na skladite podataka datoteka je podijeljena u k dijelova i kodirana u n fragmenata, gdje je k<n i veliina fragmenta konstantna. Omjer n/k pokazuje koliko je jo dodatnog prostora potrebno usporeujui s originalnom veliinom datoteke. Glavna znaajka tehnike brisanja oznaka je da je bilo koji k dio potreban da bi se vratila izvorna datoteka. Odmah se moe primijetiti prednost u odnosu na standardnu redundanciju podataka te je spomenuta tehnika rairena meu P2P mreama.
Da bi se pokazala razlika izmeu koritenja replikacije i tehnike brisanja oznaka prikazana je P2P mrea od 10000 vorova od kojih je 10% u izvan mrenom radu, te razina replikacije 2 (datoteka zauzima svoju duplu veliinu na skladitima podataka u P2P vorovima). U tom sluaju, mogunost da je barem jedna od dvije kopije dostupna je 0.99. Kada se fragmentira originalna datoteka u 8 dijelova (pohranjena od 16 dijelova u n vorova) mogunost pronalazaka najmanje 8 dijelova je 0.99994.
Original file Redundant fragments (n = 6) Fragments stored at peers Loss of fragments due to peer churn or temporal unavailability Remaining fragments stored at peers Retrieved fragments ( k) Original file Encode Upload to peers Download from peers Decode and join Split Fragments (k = 3)
31
6.3. Asimetrino itanje i pisanje podataka
Novi podaci na jednom od vorova se moraju redundantno pohraniti na ostalim, to zahtijeva upload dijelova ili kopiju podataka na vie vorova. Prilikom vraanja podataka itajui s vorova, samo se mali dio podataka treba preuzeti s vorova koji su dio mree to ini itanje i pisanje asimetrinim zbog toga to koliina podataka za pisanje je vea od onih za itanje.
Ovakav princip nije nikako u skladu s ADSL (engl. Asymmetric Digital Subscriber Line) mreama koju posjeduje veina korisnika gdje je download puno vei od upload-a. Drugim rijeima, itanje podataka je vrlo brzo to olakava vraanje izvornih podataka u sluaju gubitka originala. Meutim, limitirani upload kapacitet uzrokuje potekoe kada se na vorove koji su dio mree eli spremiti velika koliina podataka u malom vremenu. Za upload kapacitet od 2 Mbit/s i datoteku veliine 500Gb potrebno je 23 dana da bi se podaci u potpunosti prebacili na vorove koji su dio mree bez redundancije.
6.4. Kvota i pravedna razmjena podataka
U velikim P2P mreama, vorovi doprinose razliitim koliinama resursa (diskovni prostor i mrena propusnost) te zauzvrat oekuju primanje iste koliine podataka. To znai da se mora implementirati mehanizam koji osigurava pravednu razmjenu podataka. Ako P2P omoguava da pojedini korisnici primaju veliku koliinu podataka, a za uzvrat ne daju nita, mrea brzo gubi na vrijednosti. Velike P2P mree koriste razne mehanizme za primjenu pravedne razmjene podataka za pojedinane vorove. Jedno od rjeenja je da vorovi nadziru jedni druge te kazne vor koji ne potuje pravila brisanjem podataka. Uz diskovni prostor i mrenu propusnost, takoer je vano vrijeme trajanja pripadnosti mrei - ako je vor dio mree mali dio vremena njegovi resursi su neiskoristivi zbog toga to im drugi vorovi ne mogu pristupiti.
32
6.5. Klasifikacija proizvoda za pohranu podataka
P2P tehnologije koje se koriste za razne tipove potreba za pohranom podatka su: Pohrana. Koritenjem ovog servisa podaci s lokalnog raunala se pohranjuju na drugo mjesto u lokalnoj mrei to ukljuuje konstantno praenje verzija datoteka i promjene tijekom vremena. Sinkronizacija podataka. Odravajui istu listu datoteka na razliitim raunalima podrazumijeva sinkronizaciju. Kada se jedna datoteka na raunalu izmjeni, kopija te datoteke se automatski obnavlja na drugim raunalima. Ovaj tip funkcionalnosti se mora suoiti s problemom u sluaju da se ista datoteka promjeni u isto vrijeme na razliitim raunalima. Distribuirani datoteni sustav. Skladini online kapaciteti u P2P mreama se koriste za implementaciju distribuiranog datotenog sustava. Jedan ili vie raunala pristupaju pohrani na nain koji je vrlo slian lokalnom datotenom sustavu. Aplikacija na raunalu moe pristupiti podacima na udaljenom raunalu kao da se nalaze na lokalnom. Dijeljenje sadraja. Dijelovi liste datoteka koji su pohranjeni online se koriste za dijeljenje datoteka s drugim osobama. Pruajui akreditaciju drugim osobama, oni mogu koristiti P2P mreu za itanje dijela liste podataka za koji imaju pristup.
33
7. SIGURNOST P2P MREA
Sigurnost je kljuna komponenta svakog raunalnog sustava, a posebno P2P mrea. U dananjem vremenu nitko ne razmilja puno o potrebi sigurnosne zatite pri upotrebi P2P aplikacija. Meutim, razni primjeri u prolosti pokazali su da su razne financijske prevare dovele P2P sustav pod povealo kad je u pitanju sigurnost podataka. Slika 7.1. ilustrira sigurnosne rupe prilikom koritenja P2P aplikacija. Moe se lako uvidjeti kako P2P aplikacija ugroava sigurnost sigurne mree opremljene vatrozidom (engl. firewall).
Slika 7.1. Mrea opremljena vatrozidom
Glavni aspekti sigurnosti su kontrola konekcije (engl. connection control), kontrola pristupa (engl. Access control), kontrola prometa (engl. operation control), anti-virusna zatita i zatita podataka na osobnim raunalima.
7.1. Vanjske sigurnosne prijetnje
P2P mreni promet omoguava da mrea bude otvorena za razne oblike napada, pijunau i zlonamjerno koritenja osobnih podataka. Aplikacije kao to su Napster i Kazaa omoguavaju zaposlenicima skidanje raznih datoteka to predstavlja viestruki problem korporacijskim
34
mreama kao to su koritenje skupe mrene propusnosti i podlonosti napadima virusa putem inficiranih preuzetih datoteka.
Naalost, P2P mrea zaobilazi sigurnost korporativne mree pruajui decentraliziranu administraciju, zajedniku pohranu podataka, kao i nain da zaobie kritine stupove obrane kao to je vatrozid i NAT (engl. Network Address Translation) ureaj.
7.1.1. Raunalni virusi i crvi U P2P mrei virusi i crvi se najee predstavljaju korisnicima kao korisni programi. Korisnici tako prevareni preuzimaju te programe i dovode u opasnost svoje raunalo. Virusi su zlonamjerni programi koji se zapisuju na tvrdi disk raunala i koji mogu zaraziti druge programe, modificirajui ih tako da ukljue novu kopiju. Crvi su takoer zlonamjerni programi koji ire svoje funkcionalne kopije na druga raunala. Slue se raunalnim mreama, ali se se ne spajaju parazitski sa drugim programima. Posebni tipovi virusa i crva koji se javljaju samo u P2P mreama, najee na eDonkey mrei su Swen, Fizzer, Lirva, Benjamin, KwBot, itd.
7.1.2. Backdoor pristup Ako korisnik pokrene P2P aplikaciju, a zatim provjeri elektroniku potu, napada moe to iskoristi kao stranja vrata napad (engl. backdoor, doputa neautorizirani pristup sustavu) kako bi pristupio korporativnoj lokalnoj mrei.
7.1.3. Nezatiene poruke Aplikacije za slanje poruka poput AOL, Microsoft i Yahoo, takoer predstavljaju prijetnju informacijskog drutva. Ako su te aplikacije koriste za razmjenu osjetljivih informacija, napada moe proitati sve poruke pomou programa za nadzor mree. Takvi programi su razvijeni i pojaani s novim mogunostima poput glasovnih poruka i dijeljenja datoteka ime se moe ugroziti sigurnost.
35
7.1.4. Povjerljivost Kazaa i Gnutella doputaju svim klijentima izravan pristup datotekama koje su pohranjene na korisnikovom disku. Postoji mogunost da napada dozna koji tip operacijskog sustava vor posjeduje te pristupiti tajno dijeljenim datotekama.
7.2. Sigurnosni mehanizmi Jedan od najveih problema P2P mrea je neogranien i nekontrolirani pristup korisnicima mree. Iz ovog razloga mnogi P2P programi koriste sigurnosne mehanizme kao to su tehnike tajnog kljua, tehnika javnog kljua, tehnika parova asimetrinih kljueva.
7.2.1. Tehnike tajnog kljua Tehnika tajnog kljua je zasnovana na injenici da poiljatelj i primatelj dijele zajedniki tajni klju koji se koristi za razne kriptografske tehnike kao to je ifriranje i deifriranje poruka te stvaranje i verifikacija podataka. Tajni klju se mora izmijeniti posebnom procedurom prije razmjene podataka.
7.2.2. Tehnika javnog kljua Tehnika javnog kljua je zasnovana na koritenju parova asimetrinih kljueva. Obino jedan korisnik posjeduje jedan par kljueva. Jedan dio je dostupan javno, dok je drugi dio privatan. Zbog toga to je javni dio kljua dostupan nije potrebna razmjena kljueva, ali je potrebna infrastruktura za distribuciju kljua. Poto nema potrebe za dijeljenje tajnog kljua prije komunikacije ova tehnika je idealna za uspostavljanje sigurne komunikacije izmeu osoba koji se ne poznaju.
7.2.3. Asimetrini parovi kljueva Za razliku od glavnog kljua koji otkljuava vrata te omoguava osobi da zakljua i otkljua
36
vrata po elji, javni klju koji se koristi u kriptografiji je asimetrian. To znai da javni klju moe samo zakljuati vrata te ih nije u mogunosti otkljuati.
7.3. Budunost sigurnosti P2P mrena
Konstantno gorua tema za P2P sigurnost je povjerenje. Povjerenje u korisnike s kojima se komunicira i povjerenje u proizvoae programske podrke koji nas opskrbljuju s potrebnim aplikacijama. Jedna od zanimljivih ideja je da korisnici dobivaju povjerenje u P2P zajednici preko jedinstvenog digitalnog potpisa kao to je IP adresa, ali ne po raunalu ve korisniku. Za pojedinani digitalni potpis bi se vezala razina povjerenja koja bi varirala od 0 do 20. Ovisno o ponaanju korisnika u prolosti, njihova razina sigurnosti se poveava ili smanjuje. Predloeni plan je da se razina povjerenja u poetku postavi na nisku razinu ime bi se sprijeili nepoeljni korisnici koji bi kreirali nove profile i dobili veliku razinu povjerenja odmah u poetku. Korisnici bi trebali biti aktivni na mrei neko vrijeme prije nego bi se poveala razina povjerenja. Isto tako korisnik bi mogao pohraniti podatke ostalih poznatih korisnika s kojima bi htjeli dijeliti lokalnu razinu povjerenja. Ovaj prijedlog ima mnogo prepreka te je samo ideja koja se treba razvijati. Glavna prednost je u tome to nema centralnog autoriteta ve su to sami korisnici. Ako javna mrea eli sniziti razinu povjerenja korisnika on/ona e izgubiti kredibilitet i biti odbaena od strane drugih korisnika. Ideja isto tako nagrauje prave korisnike za njihove doprinose i primjereno ponaanje na javnoj mrei.
7.3.1. Biometrika Biometrika ukljuuje korisnikove jedinstvene osobine u cilju autentifikacije. Osobine koje se najee koriste kod osobe je slika lica, potpis, otisak prsta ili uzorak mrenice. Jedna kljuna znaajka biometrije je da korisnik vie ne treba pamtiti zaporke ili pohraniti sve kljune podatke, to je glavna slabost u konvencionalnim sustavima autentifikacije. Tehnologija moe imati jaku implementaciju u integraciji s drugim sigurnosnim tehnikama kao to su prethodno opisani kriptografski certifikati. Mnogi strunjaci vide budunost biometrike koja bi igrala kljunu ulogu u omoguavanju implementacije infrastrukture javnog kljua titei javne i privatne kljueve u tehnologiji pametnih kartica.
37
8. PRAKTINI RAD 8.1. Uvod
U ovom praktinom radu je jednostavnom aplikacijom za komunikaciju izmeu korisnika prikazan jedan od naina upotrebe P2P mrea. Aplikacija je izraena Microsoft-ovim alatom Visual Studio 2010, a izvorni kod je napisan u programskom jeziku C#. Sastoji se od jedinstvenog Visual Studio rjeenja koje sadri dva projekta. Prvi projekt definira grafiko suelje, a drugi logiku aplikacije te mrenu funkcionalnost.
8.2. Grafiko suelje
Za izradu grafikog suelja koriten je WPF (Windows Presentation Foundation), skup datoteka koji osigurava sve grafike elemente aplikacije (prozore, tekstualna polja,...) te upravlja interakcijom korisnika s aplikacijom (tipkanje na tastaturi, upravljanje miem). Prilikom pokretanja Visual Studio 2010 izabere se File->New->Project, pa WPF Application predloak. Za ime projekta izabrano je ime SimpleChatUI unutar novog rjeenja imena SimpleChat.
38
Slika 8.1. Kreiranje novog projekta SimpleChatUI
WPF aplikacijski predloak e otvoriti alat za razvoj grafikog suelja (engl. Graphical User Interface, skraeno GUI). Glavni prozor aplikacije e biti automatski generiran, kao i MainWindow.xaml, datoteka XML formata koja definira raspored i svojstva GUI elemenata. GUI se sastoji od glavnog prozora unutar kojeg su dva tekstualna okvira: u jednom e se prikazivati poruke koje korisnici alju, a drugo e sluiti za pisanje samih poruka.
Da bi se dodali tekstualni okvir, pritisne se Toolbox tab na lijevoj strani ekrana, ime se proiri pregled GUI elemenata, te se dovuku dva tekstualna okvira na glavni prozor.
39
Slika 8.2. Dodavanje tekstualnih okvira
U XAML ureivakom suelju, u donjem dijelu ekranu prilagodi se veliina, smjetaj i imena GUI elemenata mijenjajui XAML kod:
Kod upisivanja koda moe se primijetiti da suelje Visual Studio pomae u odabiru kljunih rijei. Primjerice, polja kao to su HorizontalAlignment imaju konaan broj vrijednosti koje se mogu izabrati. Isto tako postoji pred-odreeni niz dogaaja na koje tekstualni okvir odgovara. Izabran je dogaaj KeyDown na entryFieldTextBox okviru. Tu se navodi metoda koja se izvrava kad se pritisne neka tipka na tipkovnici dok je fokus na tom polju. U samoj metodi se provjerava je li korisnik pritisnuo tipku "Enter", kojom se alje poruka. Nakon ureivanja MainWindow.xanl izabere se MainWindow.xaml.cs tabulator ime se dolazi do izvornog koda iza grafikog suelja.
Slika 8.3. Prva verzija P2P aplikacije
Nakon to se aplikacija uspjeno pokrenula, zaustavi se pritiskom na shift-F5. Do sada klasa MainWindow sadri tri metode: Glavni konstruktor (MainWindow), textBoxEntryField_KeyDown - rukovoditelj dogaajima te DisplayMessage - metodu za prikaz teksta. Isto tako definirana je jedna varijabla mChatService kojom e se instancirati objekt koji
41
upravlja funkcionalnou pozadine.
8.3. Pozadinska komunikacija
U Solution Exploreru , desnim klikom na Solution SimpleChat odabere se Add-New Project->Class Library naziva ChatService.
Slika 8.4. Dodavanje novog projekta
Projekt e sadravati cijeli komunikacijski kod koristei jedan od postojeih WCF predloaka umjesto generikih C# klasa. Kod se sastoji od dvije C# datoteke: ChatServiceInterface suelja koji definira skup metoda pozadinske komunikacije, te ChatService klasa koja sadri kod za te metode. Prvi korak je kreiranje suelja desnim klikom mia na ChatService i odabira Add- >New Item->Interface naziva ChatServiceInterface.cs.
42
Slika 8.5. Dodavanje suelja ChatServiceInterface
Prije pisanja koda za ChatServiceInterface.cs potrebno je dodati reference. Koristei WCF datoteke doda se referenca na System.ServiceModel i Sytem.RunTime.Serilization. U Solution suelju, desnim klikom na References vor kod ChatService projekta otvori se izbornik u kojem se odabere Add Reference te se dodaju gore spomenute dvije reference. U kodu je definirano da bilo koja klasa koja koristi ChatServiceInterface suelje mora definirati dvije metode: DisplayMessage i SendMessage. DisplayMessage metoda se poziva preko udaljenog raunala od strane korisnika s kojim se komunicira. Koristi se Send Message metoda za pozivanje DisplayMessage metode.
DisplayMessage metoda nee vraati vrijednosti te je u biti jednosmjerni komunikacijski mehanizam (poruka se moe poslati, ali to ne znai da e na istu uvijek biti odgovoreno). U ovoj datoteci definirana je klasa CompositeType koja je u mogunosti pohraniti dvije vrijednosti (korisniko ime i poruku), te e definirati da DisplayMessage metodi pri pozivanju mora biti proslijeen parametar tipa CompositeType.
Na kraju se definira delegat DisplayMessageDelegate koji pomae da se odvoji kod grafikog
43
suelja od aplikacijske logike i komunikacijskog koda. Ideja je da e grafiko suelje posjedovati mehanizam za prikaz poruka na ekranu, ali pozadina nee imati uvid u detalje izvedbe. Kada se aplikacija pokrene, grafiki kod e koristiti delegat da bi poslao upravljaku funkciju pozadini, koja se moe pozvati samo kad pozadina eli da grafiko suelje prikae poruku korisniku:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.ServiceModel; using System.Runtime.Serialization;
[DataContract] public class CompositeType { private string mUserName; private string mMessage;
//konstruktor bez parametara, inicijalizira mUserName i mMesage public CompositeType() {
44
mUserName = "(bez imena)"; mMessage = ""; }
//konstruktor s parametrima, postavlja mUserName i mMesage na zadane vrijednosti public CompositeType(string user, string message) { mUserName = user; mMessage = message; }
[DataMember] public string userName { get { return mUserName; } set { mUserName = value; } }
[DataMember] public string message { get { return mMessage; } set { mMessage = value; } }
}
public delegate void DisplayMessgeDelegate(CompositeType data);
}
Kod 2. ChatSericeInterface.cs
45
Slijedei korak je kreiranje implementacijskog koda za ChatService. Kada je kreiran ChatService projekt, generirala se prazna Class1.cs datoteka koju se preimenuje u ChatService.cs. ChatService klasa posjeduje slijedee metode:
1) DisplayMessage() metoda koju poziva DisplayMessageDelegate. 2) SendMessage() metoda koristi komunikacijski kanal za pozivanje DisplayMessage() Metode. 3) StartService() metoda za uspostavljanje komunikacijskog kanala. 4) StopService() metoda koja zatvara komunikacijski kanal.
using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.ServiceModel; using System.Text;
~ChatService(){ StopService() } private void StartService() { mHost = new ServiceHost(this); mHost.Open(); mChannelFactory = new ChannelFactory<ChatServiceInterface>("SimpleChatEndpoint"); mChannel = mChannelFactory.CreateChannel(); mChannel.DisplayMessage(new CompositeType("Dogaaj", mUserName + " se pridruio razgovoru.")); mDisplayMessageDeledate(new CompositeType("Info", "Da bi promijenili ime, upiite \"ime: NOVO_IME\"")); }
private void StopService() { if (mHost != null) { mChannel.DisplayMessage(new CompositeType("Dogaaj", mUserName + " je napustio razgovor.")); if (mHost.State != CommunicationState.Closed) { mChannelFactory.Close(); mHost.Close(); } } }
public void DisplayMessage(CompositeType messageParams)
47
{ if (messageParams == null) throw new ArgumentNullException("messageParams"); if (mDisplayMessageDeledate != null) mDisplayMessageDeledate(messageParams); }
public void SendMessage(string messageText) { if (messageText.StartsWith("ime:", StringComparison.OrdinalIgnoreCase)) { mUserName = messageText.Substring(4).Trim(); mDisplayMessageDeledate(new CompositeType("Dogaaj", "Promijenili ste ime u \"" + mUserName + "\"")); } else { mChannel.DisplayMessage(new CompositeType(mUserName, messageText)); } } } }
Kod 3. ChatService.cs
Grafiko suelje sadri kod koji e instancirati ChatService objekt i pozivati njegove metode. Da bi to bilo mogue, SimpleChatUI projekt mora imati referencu na ChatService projekt. Referenca se doda desnim klikom na References tab pod ChatGUI projektom, te se odabere Add Reference.. te u Projekt prozoru odabere se ChatService.
using System; using System.Collections.Generic; using System.Linq; using System.Text;
48
using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes;
namespace SimpleChatUI { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { private ChatService.ChatService mChatService;
public MainWindow() { InitializeComponent(); mChatService = new ChatService.ChatService(this.DisplayMessage); }
Zadnji dio koda obuhvaa WCF konfiguracijsku datoteku koja se kreira odabirom na Tools > WCF Service Configuration Editor. Opcija e pokrenuti konfiguracijski editor u novom prozoru. Izabere se File-> New Config da bi se kreirala prazna konfiguracija koja bi trebala izgledati kako je prikazano na slici 8.6.
50
Slika 8.6. WCF konfiguracijski izbornik
S desne strane izbornika izabere se Create a New Service. Service Type treba biti ChatService.ChatService. Service contract treba biti ChatService.ChatServiceInterface. Izabere se Peer to Peer kao komunikacijski mod. Adresa pozadine treba biti net.p2p://SimpleChat.
51
Slika 8.7.Osnovni konfiguracijski parametri
52
Slika 8.8. Konfiguracijski parametri servisa
Odabere se Endpoint: (Empty Name) i postavi ime SimpleChatEndpoint. U nastavku se pohrani aplikacija i kreira klijent. S obzirom da je ovo P2P aplikacija, ona djeluje istovremeno kao klijent i posluitelj. U lijevom dijelu se odabere Client, te u desnom dijelu Create a New Client. S obzirom da je potrebno kreirati klijenta koji ovisi o konfiguraciji servisa koji je kreiran u polju Generate a client config from the config of the service, potrebno je pronai istu konfiguracijsku datoteku u koju je pohranjen servis te pritisnuti Next.
53
Slika 8.9. Konfiguracija klijentskih parametara
Izabere se opcija Bindings na lijevoj strani te Create New Binding i netPeerTcpBinding, Promijeni se ime konfiguracije u unsecure zbog toga to e se pokrenuti nesigurna komunikacija. Na Security tabu izabrati mod: None. Potom se u lijevom dijelu izabere unsecured->resolver. Odabere se resolver i promjeni Mode u Pnrp. Odabere se Services- >ChatService.ChatService->EndPoints->SimpleChatEndpoint u lijevom dijelu te podesi BindingConfiguration u unsecure.
Isto se napravi za Client > Endpoints > SimpleChatEndpoint > BindingConfiguration. Pohrani se i zatvori konfiguracijski prozor. U Solution Exploreru, desni klik na SimpleChatUI projekt i Add Existing Item te se doda App.config. Odabere se App.config datoteka te provjeri je li ispravno kreirana:
</identity> </endpoint> </service> </services> </system.serviceModel> </configuration> Kod 5.App.config
Pokrene se program te dozvoli servisu koritenje definiranog porta:
Slika 8.10. Otvaranje mrenog porta za rad servisa
Odabere se Allow Access te se pokrenu dvije instance aplikacije.
56
Slika 8.11. Prva P2P aplikacija
Slika 8.12. Druga P2P aplikacija
57
9. ZAKLJUAK
U P2P mreama, svi klijenti opskrbljuju mreu raznim resursima to moe ukljuivati propusnost, diskovni prostor i raunalnu snagu. Kako se broj vorova poveava raste kompleksnost sustava te kapacitet. To se ne odnosi na klasinu klijent-posluitelj arhitekturu koja ima fiksni broj posluitelja ime bi vei broj klijenata znatno usporio prijenos podataka za sve korisnike.
Distribuirana priroda P2P mrea isto tako poveava robusnost doputajui vorovima pronalazak traenih podataka bez uplitanja centralnog posluitelja te ne postoji jedna toka kvara u sustavu. Lako je instalirati i izvriti konfiguraciju na raunalu pa nije potreban sistem administrator za odravanje mree te korisnik moe sam upravljati svojim dijeljenim resursima.
Kao i u mnogim drugim mrenim sustavima, nesigurni i nepotpisani raunalni kod moe dopustiti pristup korisnikovim podacima s udaljenog raunala te ugroziti sigurnost kompletne lokalne mree. Meutim, P2P mree danas su implementirale mnoge sigurnosne zatitne mehanizme. Jedan od glavnih nedostataka je nepostojanje centralne pohrane podataka.
Koritenje modernih hash funkcija i razliite metode ifriranja uinile su mnoge mree otpornim na bilo kakve vrste napada, tako da su i glavni dijelovi mree zamijenjeni s lanim i nefunkcionalnim raunalima. Obino, Internet provideri nisu skloni P2P korisnicima zbog toga to poveavaju promet u mrei. Usporeujui promet s pregledavanjem Internet stranica, elektronike pote i drugim obinim radnjama gdje se podaci prenose u kratkim intervalima i koliinama, P2P koristi puno resursa u puno vremena optereujui propusnost mree. Mogue rjeenje se nalazi u P2P meuspremniku, gdje Internet provider pohranjuje dijelove datoteka koje se najvie koriste.
P2P mree su ponekad kvalitetno i jeftino rjeenje za spajanje raunala, ali imaju dosta nedostatka te svaka organizacija treba s oprezom razmotriti sigurnosne probleme, nekompatibilnosti sklopovlja i pohranu podataka prije uvoenja P2P mree.
58
10. LITERATURA 1. Kaufmann, V. P2P Networking and Applications , Morgan Kaufmann, USA 2008. 2. Lupu. M. Peer-to-Peer Computing Principles and Applications,Springer, USA 2010. 3. Muthusamy, V. An Introduction to Peer-to-Peer Networks , Vinod Muthusamy, USA 2003. 4. Mitchell, B. Introduction to Peer to Peer (P2P) Networks and Software Systems , http://compnetworking.about.com/od/p2ppeertopeer/a/p2pintroduction.htm 15.8.2013. 5. Carnet,Peer to peer mree, UR1:http://www.cert.hr/sites/default/files/NCERT- PUBDOC-2009-11-282.pdf, 21.9.2013. 6. Gong.Y:Identifying P2P users using traffic analysis, URL2: http://www.symantec.com/connect/articles/identifying-p2p-users-using-traffic-analysis, 20.8.2013. 7. Pedemors, V. Peer-to-Peer Storage , ACM, USA 2009. 8. Wallach,D: A Survey of Peer-to-Peer Security Issues, In Proceedings of the International Symposium on Software Security, Springer-Verlag, Berlin 2002. 9. Oram,A: Peer-to-Peer: Harnessing the Power of Disruptive Technologies, O'Reilly Media, USA 2001. 10. URL3: http://blogs.msdn.com/b/theothersteve/archive/2010/04/19/how-to-create-a-peer- to-peer-chat-application-using-wpf-and-wcf-in-visual-studio-2010.aspx.