b'\n_START_ARTICLE_\nGAP\n_START_PARAGRAPH_\nGAP on tiedon julkaisijoiden ja hakijoiden anonymiteetin turvaamiseen t\xc3\xa4ht\xc3\xa4\xc3\xa4v\xc3\xa4 protokolla, jota k\xc3\xa4ytet\xc3\xa4\xc3\xa4n tietoliikennepakettien reititykseen P2P-teknologian p\xc3\xa4\xc3\xa4ll\xc3\xa4 toimivissa virtuaalisissa tietoverkoissa. GNUnet on vapaista ohjelmistoista koostuvan GNU-k\xc3\xa4ytt\xc3\xb6j\xc3\xa4rjestelm\xc3\xa4n t\xc3\xa4yshajautettu, anonymisoiva ja sensuuria ehk\xc3\xa4isev\xc3\xa4 P2P-runkoj\xc3\xa4rjestelm\xc3\xa4. Kirjoitushetkell\xc3\xa4 (2006) GNUnetin GAP-toteutusta k\xc3\xa4ytt\xc3\xa4\xc3\xa4 ainakin j\xc3\xa4rjestelm\xc3\xa4n p\xc3\xa4\xc3\xa4lle toteutettu tiedostonjakopalvelusovellus.\n_START_SECTION_\nAnonymisointi\n_START_PARAGRAPH_\nPerinteiset anonymisointij\xc3\xa4rjestelm\xc3\xa4t ovat olleet keskitettyj\xc3\xa4. Niit\xc3\xa4 vastaan on kuitenkin helppo hy\xc3\xb6k\xc3\xa4t\xc3\xa4, koska niiden yll\xc3\xa4pit\xc3\xa4j\xc3\xa4 voidaan pakottaa paljastamaan palvelun k\xc3\xa4ytt\xc3\xa4jien toimet. Lis\xc3\xa4ksi esimerkiksi palveluun menev\xc3\xa4t ja sielt\xc3\xa4 l\xc3\xa4htev\xc3\xa4t pyynn\xc3\xb6t voidaan yhdist\xc3\xa4\xc3\xa4 analysoimalla pyynt\xc3\xb6jen tulo- ja l\xc3\xa4ht\xc3\xb6aikoja. Yleens\xc3\xa4 t\xc3\xa4llaiset palvelut todella tarjoavat anonymiteetti\xc3\xa4 vain palvelun yll\xc3\xa4pit\xc3\xa4j\xc3\xa4lle, joka saa oman liikenteens\xc3\xa4 naamioitua palvelun k\xc3\xa4ytt\xc3\xa4jien liikenteeksi._NEWLINE_GAP-reitityksess\xc3\xa4 jokainen tietoa julkaiseva ja hakeva taho yll\xc3\xa4pit\xc3\xa4\xc3\xa4 solmua, joka toimii anonymisointipalveluna. Anonymiteetti\xc3\xa4 tahtovat tiedonhakijat ja julkaisijat osallistuvat GAP-reititykseen, lis\xc3\xa4\xc3\xa4v\xc3\xa4t l\xc3\xa4hetett\xc3\xa4v\xc3\xa4t viestins\xc3\xa4 verkon muiden viestien v\xc3\xa4litt\xc3\xa4misest\xc3\xa4 aiheutuvaan kohinaan ja vastaavasti poimivat haluamansa viestit kohinan seasta. Kohina koostuu muille solmuille toimitettavasta hy\xc3\xb6tyliikenteest\xc3\xa4, verkonyll\xc3\xa4pitoviesteist\xc3\xa4 ja satunnaislukugeneraattorilla luodusta roskadatasta. Yll\xc3\xa4pitoviestej\xc3\xa4 k\xc3\xa4ytet\xc3\xa4\xc3\xa4n mm. verkon solmujen mainostamiseen ja havaitsemiseen.\n_START_SECTION_\nToimintaymp\xc3\xa4rist\xc3\xb6\n_START_PARAGRAPH_\nGAP-reitityksen toimimisen edellytyksen\xc3\xa4 on useita ulkoisia tekij\xc3\xb6it\xc3\xa4. Anonymiteetti\xc3\xa4 ei voi synty\xc3\xa4, jos hy\xc3\xb6kk\xc3\xa4\xc3\xa4j\xc3\xa4 valvoo fyysisesti jokaista solmua. J\xc3\xa4rjestelm\xc3\xa4n k\xc3\xa4ytt\xc3\xa4ji\xc3\xa4 ja/tai operaattoreita voidaan uhkailla tai rangaista heit\xc3\xa4 j\xc3\xa4rjestelm\xc3\xa4n_NEWLINE_k\xc3\xa4yt\xc3\xb6st\xc3\xa4, mik\xc3\xa4 alentaa k\xc3\xa4ytt\xc3\xb6astetta ja t\xc3\xa4ten heikent\xc3\xa4\xc3\xa4 anonymiteetti\xc3\xa4. Lakij\xc3\xa4rjestelm\xc3\xa4n on oltava sellainen, ett\xc3\xa4 todistustaakka on hy\xc3\xb6kk\xc3\xa4\xc3\xa4j\xc3\xa4ll\xc3\xa4, kun v\xc3\xa4itet\xc3\xa4\xc3\xa4n jonkin k\xc3\xa4ytt\xc3\xa4j\xc3\xa4n olleen osallisena jossakin transaktiossa. Anonymiteetti\xc3\xa4 ei ole mahdollista taata oloissa, joissa yksil\xc3\xb6n on kyett\xc3\xa4v\xc3\xa4 todistamaan, ettei h\xc3\xa4n ole ollut osallisena jossain tietyss\xc3\xa4 transaktiossa. Lis\xc3\xa4ksi hy\xc3\xb6kk\xc3\xa4\xc3\xa4j\xc3\xa4, jolla on tarpeeksi kone- ja verkkokapasiteettia, on aina uhka anonymisoivalle reititykselle._NEWLINE_Osa k\xc3\xa4yt\xc3\xb6n edellytyksist\xc3\xa4 taas kohdistuu tekniseen ymp\xc3\xa4rist\xc3\xb6\xc3\xb6n, jossa GAP-reitityst\xc3\xa4 k\xc3\xa4ytet\xc3\xa4\xc3\xa4n. Solmujen v\xc3\xa4liset yhteydet on salattava, etteiv\xc3\xa4t sivulliset saa selville solmujen v\xc3\xa4lisen liikenteen sis\xc3\xa4lt\xc3\xb6\xc3\xa4. My\xc3\xb6s v\xc3\xa4litett\xc3\xa4v\xc3\xa4 data on salattava siten, etteiv\xc3\xa4t v\xc3\xa4litt\xc3\xa4j\xc3\xa4t saa selville sen sis\xc3\xa4lt\xc3\xb6\xc3\xa4. V\xc3\xa4litett\xc3\xa4vi\xc3\xa4 viestej\xc3\xa4 t\xc3\xa4ytyy viivytt\xc3\xa4\xc3\xa4, jottei saapuvia ja l\xc3\xa4htevi\xc3\xa4_NEWLINE_viestej\xc3\xa4 voida yhdist\xc3\xa4\xc3\xa4 toisiinsa. Lis\xc3\xa4ksi kaikista ulosmenevist\xc3\xa4 viesteist\xc3\xa4 on teht\xc3\xa4v\xc3\xa4 samankokoisia, jottei niiden kokoa voi k\xc3\xa4ytt\xc3\xa4\xc3\xa4 hyv\xc3\xa4ksi niiden sis\xc3\xa4ll\xc3\xb6n arvaamisessa. On my\xc3\xb6s pidett\xc3\xa4v\xc3\xa4 vahtia haitallisten solmujen varalta. Julkisten P2P-verkkojen tapauksessa solmut eiv\xc3\xa4t voi luottaa toisten solmujen oikeelliseen toimintaan. Muut solmut voivat olla rikkin\xc3\xa4isi\xc3\xa4 toteutukseltaan tai hy\xc3\xb6kk\xc3\xa4\xc3\xa4ji\xc3\xa4, jotka yritt\xc3\xa4v\xc3\xa4t l\xc3\xb6yt\xc3\xa4\xc3\xa4 j\xc3\xa4rjestelm\xc3\xa4st\xc3\xa4 ominaisuuksia, joilla anonymiteetin saa_NEWLINE_murrettua.\n_START_SECTION_\nReititys\n_START_PARAGRAPH_\nItse reititys toimii p\xc3\xa4\xc3\xa4asiassa siten, ett\xc3\xa4 tiedon tarvitsija l\xc3\xa4hett\xc3\xa4\xc3\xa4 pyynt\xc3\xb6viestin jollekin naapureistaan. Naapuri v\xc3\xa4litt\xc3\xa4\xc3\xa4 viestin eteenp\xc3\xa4in jollekin naapureistaan. N\xc3\xa4in jatketaan, kunnes viesti l\xc3\xb6yt\xc3\xa4\xc3\xa4 jonkin solmun, jolla haluttu tieto on. Tieto l\xc3\xa4hetet\xc3\xa4\xc3\xa4n takaisin samaa polkua pitkin, jota pyynt\xc3\xb6 tuli. Jokainen solmu matkan varrella pit\xc3\xa4\xc3\xa4 kirjaa siit\xc3\xa4, mist\xc3\xa4 pyynt\xc3\xb6 h\xc3\xa4nelle tuli. Yksik\xc3\xa4\xc3\xa4n solmuista ei siis tied\xc3\xa4, oliko se solmu, joka tietoa h\xc3\xa4nelt\xc3\xa4 pyysi, alkuper\xc3\xa4inen pyyt\xc3\xa4j\xc3\xa4 vai ainoastaan toinen v\xc3\xa4litt\xc3\xa4j\xc3\xa4. Vastaavasti ei voida tiet\xc3\xa4\xc3\xa4, oliko pyynt\xc3\xb6\xc3\xb6n vastaava solmu alkuper\xc3\xa4inen vastaaja vai ainoastaan toinen v\xc3\xa4litt\xc3\xa4j\xc3\xa4. V\xc3\xa4litett\xc3\xa4vill\xc3\xa4 pyynn\xc3\xb6ill\xc3\xa4 on elinaika (TTL), jonka perusteella vanhempia viestej\xc3\xa4 pudotetaan_NEWLINE_verkosta pois uudempien tielt\xc3\xa4. Elinaika asetetaan uusiin pyynt\xc3\xb6ihin arpomalla._NEWLINE_Reitityst\xc3\xa4 pyrit\xc3\xa4\xc3\xa4n tehostamaan monin tavoin. Tiedon saatavuuden parantamiseksi ja hakujen nopeuttamiseksi solmuissa voi olla v\xc3\xa4limuisti, johon v\xc3\xa4litett\xc3\xa4v\xc3\xa4\xc3\xa4 tietoa tallennetaan. Tallennettava tieto priorisoidaan sen perusteella, kuinka haluttua tieto on. Naapurit, joille pyynn\xc3\xb6t l\xc3\xa4hetet\xc3\xa4\xc3\xa4n, valitaan satunnaisesti mutta painotetusti siten, ett\xc3\xa4 hakuja suunnataan solmuille, joilta on viime aikoina tullut vastauksia pyynt\xc3\xb6ihin, ja solmuille, joiden tunniste on l\xc3\xa4hemp\xc3\xa4n\xc3\xa4 pyydett\xc3\xa4v\xc3\xa4n tiedon tunnistetta. V\xc3\xa4limuistin toiminta tehostuu, kun samaa tietoa pyydet\xc3\xa4\xc3\xa4n usein samalta suunnalta. Tiedon hakuaika voi vaihdella paljon. Parhaimmillaan haettava tieto l\xc3\xb6ytyy pyyt\xc3\xa4v\xc3\xa4n solmun v\xc3\xa4limuistista, jolloin pyynt\xc3\xb6\xc3\xa4 ei tarvitse lainkaan l\xc3\xa4hett\xc3\xa4\xc3\xa4 verkkoon. Pahimmassa tapauksessa tietoa ei ole verkossa lainkaan._NEWLINE_Jokainen solmu siis k\xc3\xa4ytt\xc3\xa4\xc3\xa4 muiden solmujen liikennett\xc3\xa4 oman liikenteens\xc3\xa4 naamiointiin. Jos solmu v\xc3\xa4litt\xc3\xa4\xc3\xa4 paljon liikennett\xc3\xa4 siten, ett\xc3\xa4 solmulle alkaa olla viestien v\xc3\xa4litt\xc3\xa4misest\xc3\xa4 enemm\xc3\xa4n haittaa kuin hy\xc3\xb6ty\xc3\xa4, solmu voi itsen\xc3\xa4isesti pudottaa itsens\xc3\xa4 jostain v\xc3\xa4litysketjusta. T\xc3\xa4m\xc3\xa4n tehd\xc3\xa4kseen solmu j\xc3\xa4tt\xc3\xa4\xc3\xa4 pyynt\xc3\xb6\xc3\xa4 v\xc3\xa4litt\xc3\xa4ess\xc3\xa4\xc3\xa4n oman osoitteensa merkitsem\xc3\xa4tt\xc3\xa4 pyynn\xc3\xb6n vastaus osoiteeksi. N\xc3\xa4in tapahtuessa ketjun seuraava solmu vastaa siis pyynt\xc3\xb6\xc3\xb6n suoraan pudottautunutta solmua edelt\xc3\xa4v\xc3\xa4lle solmulle. T\xc3\xa4st\xc3\xa4 seuraa, ett\xc3\xa4 pyynt\xc3\xb6ketjut lyhenev\xc3\xa4t, mik\xc3\xa4 saattaa johtaa jopa siihen, ett\xc3\xa4 pyyt\xc3\xa4v\xc3\xa4 solmu pyyt\xc3\xa4\xc3\xa4 tietoa suoraan kohdesolmulta. T\xc3\xa4m\xc3\xa4 ei silti heikenn\xc3\xa4 anonymiteetti\xc3\xa4, sill\xc3\xa4 kumpikaan solmuista ei edelleenk\xc3\xa4\xc3\xa4n tied\xc3\xa4, onko toinen solmu alkuper\xc3\xa4inen pyyt\xc3\xa4j\xc3\xa4 tai l\xc3\xa4hett\xc3\xa4j\xc3\xa4.'