You are here: TUTWiki>Tietoturva/Tutkielmat>TalvitieT?>2006-21

Mikko Hoikkanen

P2P - kolmannen sukupolven tiedostonjakosovellukset

Johdanto

Tässä tutkielmassa aiheena ovat kolmannen sukupolven tiedostonjakosovellukset, erotuksena viime vuoden tutkielmasta, jossa käsiteltiin toisen sukupolven sovelluksia. Merkittävimmät erot näiden välillä ovat liikenteen salauksen sekä anonymiteetin käyttömahdollisuudet.

Vaikkakin työn pääpaino on kolmannen sukupolven peer-to-peer -verkkojen toiminnassa, on kuitenkin huomioitava että vaikka kolmas sukupolvi tarjoaakin jonkinasteisen anonymiteetin, ei se poista kaikkia p2p -verkkojen tietoturvariskejä. Varteenotettavia riskejä ovat edelleenkin mm. yksityisyyttä loukkaavat ohjelmistot, jotka tulevat monien p2p -ohjelmien mukana. Toinen edelleen olemassaoleva riski ovat virukset ja muut haittaohjelmat, joita voi helposti levittää p2p -verkoissa. On myös pidettävä mielessä että suuri osa vertaisverkoissa liikkuvasta materiaalista on tekijänoikeuslain vastaista (MASO, FINLEX).

Tutkielman jako on suoritettu siten, että ensiksi käymme läpi tutkielmassa käytetyt termit ja lyhenteet, jonka jälkeen käsittelemme lyhyesti tiedostonjako-ohjelmien kaksi ensimmäistä sukupolvea. Tämän jälkeen selvitämme lyhyesti P2P:n perustoimintaperiaatteen, jonka jälkeen pääsemme tutkielman varsinaiseen aiheeseen eli kolmannen sukupolven ohjelmien uusiin ominaisuuksiin ja niiden tekniseen toteutukseen. Tässä tutkielmassa ei käsitellä juurikaan P2P-tekniikan hyötyjä ja haittoja verrattuna perinteiseen server-client malliin emmekä myöskään ota kantaa P2P:n käytöstä laittomiin tarkoituksiin, sillä näitä aiheita on käsitelty laajasti jo edellisen vuoden harjoitustyössä, joka on nähtävissä täällä P2P tiedostojen jako-ohjelmat

Käytetyt termit ja lyhenteet

Client : Asiakas eli sovellus, joka voi ottaa yhteyden palvelimeen (kts. jäljempänä) perinteisessä asiakas-palvelin

  • mallissa. Asiakassovellus voi olla esimerkiksi WWW-selain, MSN

messenger tai SSH-ohjelma.

Mute : Kolmannen sukupolven tiedostojenjako-ohjelma, jolla pystyy salaamaan liikenteen, säilyttämään anonymiteetin sekä muodostamaan suljettuja aliverkkoja.

Node : Yksi verkon solu eli käyttäjä esimerkiksi P2P-verkossa (kts. alla)

Hash : Tiiviste laskettuna tiedostosta. Yhdenkin bitin muuttuminen alkuperäisessä tiedostossa muuttaa tiivisteen täysin. Tiivisteet ovat vain muutamien kymmenien merkkien pituisia ja on olemassa lukuisia eri algoritmejä, joilla niitä voi laskea, kuten MD4, MD5 ja SHA1. Käytetään tiedoston eheyden tarkistukseen.

P2P - Peer to Peer : Vertaisverkko, jossa käyttäjältä toiselle käyttälle muodostunut suora yhteys.

Server : Palvelin, joka vastaanottaa asiakkaiden yhteyksiä ja toimii asiakkaan ohjeiden mukaan, jos ne ovat sallittuja. Palvelimilta voi pyytää mm. WWW-sivuja, lukea postia tai ylläpitää nettipeliä.

Skype : Erittäin suosittu P2P-ohjelma, jolla voi keskustella Internetin yli tietokoneelta toiselle, muodostaa ryhmäkeskusteluja sekä välittää webkameran kuvaa.

RIAA: Lyhenne sanoista Recording Industry Association of America. Musiikin ja elokuvien tuottajien jäsenorganisaatio, joka etsii laitonta materiaalia vertaisverkoista ja pyrkii saamaan korvauksia materiaalin laittomilta jakajilta. Järjestön verkko-osoite on www.riaa.com

Tiedostonjaon kehittyminen

ARPAnet oli ensimmäinen kehitetty vertaisverkko, ja se kehitettiin jo 1960-luvulla yhdysvaltain puolustusministeriön käyttöön (Sund, Manu). Tavoitteena oli saada vikasietoinen järjestelmä mahdollisten ydinhyökkäysten varalle, jolloin verkon olisi toimittava, vaikka useampi kone putoaisi verkosta pois. Vähitellen verkko laajentui käsittämään myös yliopistoja ja lopulta siitä muodostui Internet.

Ensimmäinen sukupolvi

Ensimmäinen suurempaa huomiota saanut vertaisverkko oli Napster, jossa oli käytössä keskuspalvelin, joka piti kirjaa käyttäjillä jaossa olevista tiedostoista. Tähän palvelimeen asiakkaat ottivat yhteyttä etsiessään tiedostoja. Ladatessa muodostettiin suora yhteys hakijan käyttäjien välille. Tämän mallin ongelmana oli keskuspalvelimen suuri kuormitus sekä järjestelmän helppo lamautus poistamalla keskuspalvelin. Muita ensimmäisen sukupolven ohjelmia ovat Direct Connect ja eDonkey.

Toinen sukupolvi

Toisen sukupolven verkossa ei ollut enää erillisiä keskuspalvelimia vaan käyttäjät ottavat yhteyden suoraan toisiin käyttäjiin, jotka ovat taas yhteydessä lukuisiin muihin käyttäjiin. Kazaa on hyvä ja tunnettu esimerkki tästä sukupolvesta. Se käyttää hyväkseen FastTrack-verkkoa, jonka suosio on tosin viime aikoina laskenut (Wikipedia A). Teorioiden mukaan mistä päin tahansa maailmaa saa yhteyden minne tahansa käyttäen vain seitsemää askelmaa, joista jokainen tuntee aina edellisen ja seuraavan portaan. Tätä teoriaa onkin testattu sähköpostia käytten ja saatu aikaan vahvistavia tuloksia. Tämän mallin etuina on sen todellinen vertaisverkkorakenne, joka tekee siitä erittäin vaikean sulkea. Ongelmana tässä mallissa on se, että käytännössä tiedostohaut eivät tavoita kaikkia käyttäjiä, sillä paketteja katoaa matkalla ja viiveet kasvavat liian suuriksi.

Vertaisverkkosovellusten toimintaperiaate ja -tekniikka

Tässä kappaleessa kerrotaan mikä on perusperiaate millä p2p-sovellukset toimivat ja kommunikoivat toistensa kanssa. Kovin syvälle emme paneudu vaan pysymme yleisellä tcp/ip-tasolla. Perinteisen ja P2P mallin erot

Kuvassa yksi on kuvattu perinteinen asiakas-palvelin malli, joka perustuu siihen, että on olemassa yksi keskuspalvelin, johon asiakkaat ottavat yhteyttä. Keskuspalvelin ottaa vastaan asiakkailta tulevia hakukyselyjä ja jatkaa niitä joko kaikille siihen liittyneille asiakkaille, tai jonkin tietyn algoritmin mukaan vain osalle niistä. Saadut vastaukset kiertävät myös keskuspalvelimen kautta, ja käyttäjän löytäessä halutun tiedoston ohjelma ottaa suoraan yhteyden siihen asiakkaaseen, jolta kyseinen tiedosto löytyi ja aloittaa latauksen. P2P-mallin toimintaa on kerrottu kattavasti alla olevissa kappaleissa.

Kolmannen sukupolven vertaisverkkosovellusten uudet ominaisuudet ja niiden toteutus

Kolmannen sukupolven verkot toimivat samoin kuin toisen sukupolven verkot eli niillä ei ole erityistä keskuspalvelinta, vaan käyttäjät ottavat suoran yhteyden toisiinsa. Uusia merkittäviä ominaisuuksia näissä kolmannen sukupolven ohjelmisssa on kolme, jotka ovat liikenteen salaus, mahdollisuus anonymiteettiin sekä tiedostoista laskettavat tiivisteet. Seuraavissa kappaleissa käsittelemme nämä ominaisuudet perusteellisesti. Esimerkiksi otamme Mute-nimisen ohjelman, joka on tällä hetkellä versionumerossa 0.5, ja jonka kotisivut löytyvät osoitteesta http://mute-net.sourceforge.net/. Muita kolmannen sukupolven ohjelmistoja ovat esimerkiksi Waste ja Ants.

Liikenteen salaus

Esimerkkiohjelmamme Mute sallii käyttäjien muodostaa omia yhteisöjään minne ulkopuoliset eivät pääse sisälle ilman, että joku yhteisöön kuuluva kutsuu hänet sinne. Kun uusi jäsen on liittymässä yhteisöön, hän lähettää oman RSA-salauksen yleisen avaimensa kutsuvalle henkilölle, joka lähettää vastaavasti oman yleisen avaimensa liittyvälle jäsenelle. Tämän jälkeen kutsuva henkilö lähettää liittyneen jäsenen yleisen avaimen kaikille itseensä liittyneille jäsenille, jotka jatkavat sitä eteenpäin kunnes avain on saavuttanut kaikki verkon jäsenet. Vanhat jäsenet lähettävät oman yleisen avaimensa liittyneelle jäsenelle, jolloin avaintenvaihto on tehty ja liikenne pystytään salaamaan. Tämän jälkeen näitä RSA-avaimia käytetään vain silloin, kun on löydetty ladattava tiedosto. Tällöin lataaja ja lähettäjä sopivat yhteisen symmetrisen AES-salausavaimen, jolla pystytään salaamaan tietoa paljon nopeammin kuin RSA-salauksella, joka olisi turhan hidas tiedostojen siirtoa varten. Jokainen AES-salausavain on kertakäyttöinen ja siten eri jokaisessa latauksessa. (Mute A)

Anonymiteetin säilyttäminen haettaessa tiedostoja

Miten anonymiteetti sitten pystytään säilyttämään tiedostoja etsittäessä? Tämän lisäksi ongelmana on se, miten estetään hakutuloksien eteneminen verkossa loputtomasti. Oletetaan, että käyttäjä A haluaa etsiä jotain tiettyä tiedostoa. Hän lähettää halutun tiedostonnimen mukana satunnaislukugeneraattorin alustettuna satunnaiseen arvoon. Jokainen haun saanut node pyöräyttää kerran satunnaislukugeneraattoria ja jatkaa viestiä eteenpäin. Satunnaislukugeneraattori toimii siten, että se laskee SHA1-algoritmilla uuden hash-arvon edellisen noden saamasta hash-arvosta. Kuten tiedämme, tämä on peruuttamaton ja yksisuuntainen operaatio, joten seuraava node ei voi saada selville, kuinka monta porrasta sitten haku on laitettu alulle.

Viestiketju pysähtyy siten, että kun tämä tiiviste saa tietyn merkkijonon hashin loppuun muutamaksi viimeiseksi merkiksi, vaihtuu utility counter eli UC-niminen bitti päällä olevaksi. Ne nodet, jotka saavat haun merkittynä utility counter bitillä, lisäävät edelleen laskurin arvoa, mutta eivät enää lähetä sitä kuin osalle omista yhteyksistään. Muutaman hypyn jälkeen UC-arvo vaihtuu jälleen, jolloin haku muuttuu chain modeksi. Tietyt nodet pudottavat kaikki chain modessa olevat haut ja tietyt jatkavat kaikki. Lopulta kaikki viestit saavuttavat pudottavat nodet, jolloin haku on pysähtynyt. Tämä satunnaisuus on edellytys anonymiteetille, mutta sen vaikutuksesta haut eivät ikinä saavuta kaikkia yhteisön jäseniä vähänkään isommassa yhteisössä. (Mute B)

Hakutuloksen eteneminen verkossa
Kuva 3. Hakutuloksen eteneminen verkossa (Mute B)

Ylläolevassa Kuva 3:ssa on havainnollisestettu tätä viestin etenemistä verkossa. Vihreät laatikot lähettävät viestin osalle vierustovereistaan, laskevat uuden hash-arvon edellistä ja lisäävät UC-arvoa tämän mukaisesti ja jatkavat haun edelleen eteenpäin, kunnes viestiin syntyy jossain vaiheessa sellainen hash-arvo, että se viesti vaihtuu toiseen tilaan. Nämä violetit laatikot lähettävät viestin vain satunnaisesti valituille vierustovereilleen, jotka lisäävät UC-arvoa ja lopulta sinisissä laatikoissa haku on vaihtunut chain modeen. Tällöin jokainen viestin saaja jatkaa sitä vain yhdelle vierustoverilleen 50% todennäköisyydellä, kunnes viestiketju päättyy lopulta jossain vaiheessa. Ylläoleva Kuva 3 on yksinkertaisestettu malli siitä, miten haku etenee verkossa eteenpäin. Todellisuudessa nodet saavat saman haun moneen kertaan, sillä ne eivät tiedä sitä miten ovat verkottuneet toistensa kanssa, joten kuka tahansa voi lähettää haun kenelle tahansa. Todellisuudessa kuva ei siis ole puu vaan sellainen, jossa viivoja kulkee myös poikittain ja vinottain - todellisen verkon mallinen siis.

Anonymiteetin säilyttäminen vastattaessa hakuun sekä ladattaessa tiedostoja

Miten vastaaja tietää kenelle hän vastaa, ja miten hän voi säilyttää oman anonymiteettinsä? Jokaisella clientillä on oma yksilöllinen tunnisteensa, joka luodaan uusiksi jokaisella ohjelman käynnistyskerralla ja lisäksi vain client itse tietää oman tunnisteensa. Esimerkki tunnisteesta on tässä: D1E9A59380CD425AE16D40CF0CA57A7213D29781. Oman noden vierasnodet tietävät käyttäjän IP-osoitteen, mutta eivät tätä tunnistetta. Jokainen haku, hakutulokset sekä ladattavat tiedostot kulkevat alkuperäistä ketjua verkon läpi takaisinpäin, kunnes client joka laittoi haun alulle, tunnistaa vastauksen tunnisteen perusteella olevan itselleen ja näyttää haun tulokset tai tallettaa tiedoston. Edellinen node ei pysty mistään päättelemään, että viestiä ei enää jatkettu eteenpäin eikä siis yhdistämään hakua tai latausta kyseisen clientin alkuunpanemaksi. Tällä tavalla verkko toimii halutulla lailla anonymiteetin säilyttäen, sillä IP-osoitetta ei pysty mitenkään yhdistämään käyttäjän tunnistamiseen. Osa kolmannen sukupolven tiedostonjakosovelluksista pystyy myös generoimaan liikennettä, joten liikenteen määrän peruseella ei pysty päättelemään käyttäjän aktiivisuutta. (Mute C)

RIAA välimiehenä RIAA saartaa

Kuva 4. RIAA on yhtenä nodena verkossa (Mute C)                 Kuva 5. RIAA on saartanut käyttäjän (Mute C)

Kuvassa neljä on havainnollistettu tilannetta, jossa on otettu esimerkin vuoksi RIAA tarkkailemaan käyttäjiä ja se on yhtenä soluna verkossa. Se ei pysty kuitenkaan edellä selitetyn mukaisesti saamaan selville sitä, keneltä hakutulokset ovat tulossa tai kuka vastaa niihin. Kuvassa 5 RIAA on saartanut yksittäisen käyttäjän tarkkailemalla kaikkia yhteyksiä sekä sisään että ulospäin, ja se pystyy havaitsemaan, että käyttäjältä lähtee hakuja joita ei ole tullut muualta, joten niiden on pakko olla käyttäjän generoimia. Tässäkään tilanteessa se ei kuitenkaan pysty saamaan selville käyttäjän hakuja tai latauksia, sillä liikenne on vahvasti salattu, joten verkkoliikennettä tarkkailemalla saatu data on hyödytöntä. Ainoa tilanne, jossa RIAA pystyy päättelemään yksittäisen käyttäjän haut ja vastaukset, on sellainen, että kaikki nodet joihin käyttäjä on suoraan kiinnittynyt ovat RIAA:n hallinnassa. Tämä on kuitenkin hyvin epätodennäköinen tilanne sillä käyttäjä on keskimäärin kiinnittynyt 5-10 nodeen ja jos edes yksi node näistä on muu kuin RIAA:n hallinnassa oleva, se ei pysty todistamaan hakujen ja latauksien tulevan tältä käyttäjältä.

Tämän verkkomallin ilmeinen haittapuoli on jo tullut esille, eli koska kaikki liikenne latauksia myöten kulkee useiden verkon solujen läpi on ruuhkautuminen vaarana isommissa verkoissa. Tämän takia kolmannen sukupolven ohjelmat soveltuvat parhaiten alle 100 hengen verkkojen luomiseen, kun käyttäjillä on nopeat yhteydet käytettävissään. Tulevaisuus näyttääkin johtavan kohti pienten kaveripiirien omia sisäisiä verkkoja, joihin päästetään vain tuttuja ihmisiä. Tällöin mahdollisuus joutua oikeuteen laittomasta tiedostojen jakamisesta on hyvin pieni. Tähän suuntaukseen johtaa etenkin pelotteet suuriksta korvauksista sekä oikeudenkäynneistä, kuten vuonna 2006 Suomessa tuomittiin kymmeniä tiedostonvaihtopalvelua ylläpitäneitä ihmisiä maksamaan jokainen yli 50 000€ vahingonkorvaukset sisällöntuottajille.

Tiedostoista laskettavat tiivisteet

Kolmannen sukupolven sovellukset hyödyntävät tiedostoista laskettavia tiivisteitä. Nämä tiivisteet ovat hyvin lyhyitä merkkijonoja, esimerkiksi Mutessa käytetty SHA1-algoritmi tuottaa 160 bitin pituisia tiivisteitä. Silti ne ovat erilaiset jokaiselle tiedostolle. Tietenkin, jos käymme läpi äärettömän paljon erilaisia tiedostoja löydämme lopulta kaksi eri tiedostoa, joista syntyy sama tiiviste. Tiivistealgoritmien suunnittelussa vaaditaankin vain, että tämä todennäköisyys on erittäin pieni sekä tämän lisäksi ei pystytä löytämään mitään logiikkaa, jonka avulla voisi tuottaa toisen tiedoston, josta syntyy sama tiiviste kuin ensimmäisestä. (Wikipedia C). Jos näin kuitenkin tapahtuu, tiivistealgoritmi hylätään ja siirrytään uudemman ja paremman käyttöön. Näin kävi mm. MD4-algoritmille, joka korvattiin MD5-algoritmilla. Esimerkki tiivisteestä on tämän kaltainen e948c22100d29623a1df48e1760494df, joka on syntynyt MD5-algoritmilla lauseesta "The Quick brown fox jumped over the lazy dogs" ( Wikipedia D).

Miksi tiivisteitä sitten käytetään? Joskus tiedostoa ladattaessa saattaa syntyä tilanne, että lataus katkeaa kesken kaiken esimerkiksi lähettävän henkilön sulkiessa ohjelman tai verkkoyhteyden katketessa. Tämän jälkeen olisi hyvä etenkin ison tiedoston ollessa kyseessä, että tiedoston latausta ei tarvitsisi aloittaa alusta asti, vaan voisi jatkaa siitä kohdasta mihin jäätiin. Tällöin tarvitaan hash-arvoa, jotta voimme olla täysin varma siitä, että toiselta käyttäjältä löytyvä tiedosto on sama kuin katkennut lataus. Pelkästään sama tiedoston koko bitilleen ei takaa varmasti sitä, että tiedosto olisi sama. Jos tiedosto ei olisikaan sama, ja latausta jatkettaisiin keskeltä kaikesta huolimatta, olisi todennäköistä saada toimimaton tiedosto, jolla ei tee mitään. Tiivistearvolla pystyy myös hakemaan tiedostoja. Jos esimerkiksi yhdeltä käyttäjältä löytyi tiedosto nimeltä "ubuntu 5.01.bin " ja haet sen hash arvolla lisää tiedostoja, löydät kaikki identtiset tiedostot vaikka ne olisikin nimetty erilailla kuten "ub501.bin".

Tulevaisuus

Vuonna 2006 neljännen sukupolven verkot ovat vasta hyvin varhaisessa kehitysvaiheessa, joten kovin varmaa tietoa niiden ominaisuuksista ei pysty sanomaan. Yhtenä suuntauksena näyttää kuitenkin olevan streamaus verkon yli. Tällä tarkoitetaan sitä, että pystytään katsomaan sisältöä samaan aikaa kuin sitä ladataan. Tämä mahdollistaa mm. TV-ohjelmien seuraamisen samaan aikaan kuin normaalissa TV-vastaanottimessa. Esimerkkejä tällaisista ohjelmistoista ovat Cybersky sekä Peercast. (Wikipedia E)

Vuonna 2008 uuden sukupolven vertaisverkko -ohjelma nimeltään SwarmPlayer mahdollistaa tiedostojen sekä lataamisen perinteiseen vertaisverkko -tyyliin että suorien lähetysten katsomisen internetin välityksellä. (IT-viikko 19.7.2008 17:21)

Lähteet


[Mallitehtävät] | [Kommentit ]

-- Main.TuireTalvitie - 18 Sep 2009
Print version |  PDF  | History: r5 < r4 < r3 < r2 | 
Topic revision: r5 - 16 Nov 2009 - 13:47:43 - VilleYlimannela?
 

TUTWiki

Copyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TUTWiki? Send feedback