2009. augusztus 29., szombat

A BitTorrent biztonságáról

A bittorrentről meglehetősen sok szó esik mostanság - leginkább nem is technikai aspektusai miatt, hanem a szerzői jogok harcosainak bírósági munkájának eredményeképpen lekapcsolt trackerek miatt. Ezekkel a területekkel szándékoltan nem foglalkozunk - sokkal inkább magának a technológiának a biztonsági vonatkozásaival, mert akad néhány hiányosság a protokoll működésében. Akit bővebben érdekel a téma, annak itt egy remek whitepaper.

A bittorrent működéséről
Túl mélyen nem mennénk bele a dologba, a működés lelkét képező technológiák elmélete meglehetősen bonyolult, inkább gyakorlati szempontból vesszük szemügyre az eseményeket.

A protokoll működése során három entitás forgalmaz: vannak a seederek, akiknél megtalálható az adott fájl, amit szeretnénk letölteni, a leecherek, akiknél nem, viszont szintén ezt a fájlt vadásszák (vagy nem engedik azt, hogy róluk töltsenek le), és van a tracker, ami közvetít. Amikor elindítunk egy letöltést, egy .torrent fájlt töltünk le először: a .torrent tartalmazza a trackerek elérhetőségét, a letöltendő fájl méretét és egy hasht, ami alapján igazolni lehet a hibamentes átvitelt a végén. A kliensünk ezután "bejelentkezik" a trackerre, azaz egy HTTP-kéréssel értesíti a trackert arról, hogy erről az IP-ről ezt a hash-ű fájlt szeretnénk letölteni - a tracker ezután visszaküld egy listát azokról az IP-port párokról, akiknél szintén megvan a letöltendő anyag (vagy egy része). A kliensünk ezután veszettül elkezd TCP-n csatlakozni a kapott helyekre, és ha minden jól megy, elkezdi letölteni kedvenc GNU-licenc alá eső operációs rendszerünk legújabb verziójának DVD-kiadását.

A protokoll stabil működéséhez szükséges az, hogy a játékosok jelentős része legalább annyit töltsön vissza, mint amennyit ő is lehúzott (ez egyébként tényleg csodálatos játékelméleti probléma, többen is publikáltak már a P2P-hálózatokban terjedő anyagok életútjának témájában). Éppen ezért van egy érték, ami a fel- és letöltött adatmennyiség arányát jellemzi - vannak trackerek, amelyek figyelik ezt az értéket, és megtagadják a kliens kiszolgálását, ha irreálisan keveset tölt vissza.

Mik a problémák a protokollal?
  • Mik a szolgáltatók problémái a torrentezéssel? Többoldalú a dolog. Egyrészt valószínűsíthető, hogy a jövőben a jogvédő szervezetek az ISP-kre való nyomásgyakorlással elérik, hogy adjanak listát a torrentező felhasználókról, másrészt a torrent (és minden nagy forgalmat lebonyolító P2P) igencsak megnehezíti a hálózat méretezését és karbantartását. Arról van szó, hogy "normál" működés során a felhasználó upstream irányba viszonylag keveset forgalmaz, viszont lefelé meg jellemzően dől a tartalom. A hálózatok méretezésekor jogos volt a feltételezés, hogy az ISP hálózatában jellemzően az "internet"->felhasználó irányú adatforgalom fog zajlani, ehhez igazították a hálózatot. A P2P ezzel szemben teljesen predikálhatatlanul megy ide-oda nagy mennyiségű adat a hálózaton.
  • A központi entitás, a tracker nagyon buta. Gyakorlatilag annyit csinál, hogy nyilván tartja, melyik torrentfájlt melyik IP-port pár kezdte tölteni - minden más a kliensre van bízva. Például az is, hogy nyilvántartsa a fel- és letöltött bájtok arányát - erre már megvannak a megfelelő eszközök (pl. a RatioMaster), amelyekkel lehet módosítani ezt az értéket. A legegyszerűbb mód az, ha a kliens egészen egyszerűen nem helyesen értesíti a trackert a D/U arányról.
  • A HTTP-s sessionök örök életűek. Az értesítések (announcement) egyszerű HTTP-kérések, amikhez tartozó sessionID-k örök életűek. Tehát amikor a kliensünk csatlakozik a trackerhez, clear-text GET requestben közlekedik a sessionid - a támadónak ezt kell csak sniffelnie. Jó, de ez miért jó? Sok privát (regisztrációs, esetleg fizetős) torrenthálózatban a jelszóhash a sessionID - ezáltal akár fel is lehet törni a jelszavakat. Másrészt egyéb dolgokat is lehet csinálni a torrenthálózatban (valaki más nevében forgalmazni például) a sessionid ismeretében.
  • Emese. MSE, azaz Message Stream Encryption, amit a torrentezők a trackerrel zajló adatforgalom során használhatnak. Az MSE célja a nevével ellentétben nem "biztonságos" titkosítás kialakítása volt a cél, hanem a torrent forgalom detektálásának megnehezítése, borsot törve ezáltal az ISP-k orra alá. Az MSE az RC4-en alapul, ami a jól ismert FMS támadással viszonylag jól támadható - egyéb problémák is vannak (a Black Hates WP meglehetősen sokat foglalkozik vele), azonban a legviccesebb a dologban az, hogy a trackerek nem követelik meg az MSE használatát - tehát a legtöbb kliens egész egyszerűen elhagyja.

Nincsenek megjegyzések:

Megjegyzés küldése

Kommentek