Vyšlo v týdeníku CHIPweek č. 6/96, 6. února 1996
Vytištěno z adresy: http://www.earchiv.cz/a96/a606k130.php3

Spoofing

Nepravosti nejrůznějšího druhu se opravdu dělat nemají - nejen ve světě lidí, ale ani ve světě počítačů, a stejně tak ani ve světě počítačových sítí. Například nepravosti takového druhu, při kterých se určitý uzel sítě vydává za někoho jiného - proto, aby místo něj přijímal věci ke kterým by jinak neměl mít přístup, nebo aby jeho jménem naopak vysílal něco, co by sám vysílat buď nemohl, nebo alespoň ne s požadovaným efektem. Takovéto techniky, pro které se vžilo označení spoofing (doslova: napálit, převézt, vodit za nos), patří mezi nejnebezpečnější zbraně těch, kteří chtějí neoprávněně proniknout do cizích sítí. Naštěstí ale i proti technikám „spoofingu" dnes existují dostatečně účinné protizbraně a ochranná opatření.

Ne vždy je ale „spoofing" věcí zavrženíhodnou. Někdy je naopak praktikován zcela záměrně, protože přináší pozitivní efekt, nebo dokonce zachraňuje situaci, která by jinak byla neudržitelná. Nevěříte? Vysvětlení tkví v chování mnoha současných síťových protokolů, které byly vyvinuty pro prostředí lokálních počítačových sítí. Tyto protokoly si pravidelně „osahávají" celou síť jako takovou i její jednotlivé uzly, a posílají jim dotazy typu „jsi ještě naživu?". Důvodem pro takovouto činnost je snaha průběžně detekovat případné změny v topologii sítě, v dostupnosti jednotlivých uzlů či další relevantní události, a adekvátně na ně reagovat dříve, než způsobí nějaké problémy. Příkladem může být snaha file serveru udržovat si přehled o existenci a funkceschopnosti jednotlivých stanic v roli klientů - co když třeba nějaký uživatel vypne svoje PC, aniž se „slušně rozloučil" (tj. odhlásil od serveru)? Při explicitním odhlášení totiž server může uvolnit všechny zdroje, které pro uživatele na dané stanici vyhradil, ale pokud je ale uživatelův počítač vypnut bez odhlášení, nedozvěděl by se o této možnosti a příslušné zdroje by musel rezervovat i nadále.

V lokálních sítích, které obvykle mají vykazují relativně velkou přenosovou kapacitu (alespoň ve srovnání se sítěmi rozlehlými), je režie na pravidelné „osahávání" vcelku zanedbatelná, a techniky založené na tomto principu jsou zde používány dosti často. Frekvence, s jakou se „osahávání" opakuje, může samozřejmě být různá, ale obvykle se pohybuje od desítek sekund po jednotky minut.

Problém ale vzniká v případě, kdy do hry vstoupí sítě rozlehlé, například jako forma propojení dvou od sebe poněkud vzdálených lokálních sítí. Pravidelné „osahávání" zde může odčerpávat již poměrně významnou část přenosové kapacity, protože ta bývá v rozlehlých sítích často mnohem menší. Ještě větší nebezpečí však může číhat v samotné pravidelnosti nejrůznějšího „osahávání".

Lokální sítě mají totiž ještě jednu zajímavou odlišnost od sítí rozlehlých - fungují většinou na nespojovaném principu, zatímco sítě rozlehlé fungují nejčastěji na principu spojovaném. V praxi to znamená, že v lokálních sítích se jednotlivé bloky dat (pakety) odesílají bez předchozího navázání spojení s příjemcem, zatímco v rozlehlých sítích se při spojovaném přenosu spojení s příjemcem navazuje. Kromě toho se v rozlehlých sítích mnohdy (zvláště jde-li o tzv. veřejné datové sítě) platí za objem přenesených dat, a většinou také za dobu existence spojení. Přitom se ale praktikují různé techniky, směřující k optimalizaci nákladů uživatele i celkové propustnosti sítě - například to, že když po stanovený čas nejsou v rámci určitého spojení přenášena žádná data, je toto spojení automaticky zrušeno (a v případě nového požadavku na přenos zase znovu navázáno). Ekonomický efekt samozřejmě závisí na konkrétních podmínkách, ale může být opravdu významný - pokud ale není celý úsporný mechanismus znehodnocen pravidelným „osaháváním". Zde pak přichází k dobru výše citovaný „spoofing", díky kterému nemusí být propouštěna „osahávací" data do pomalejší rozlehlé sítě, a předem určené a pověřené zařízení, nacházející se ještě v dané lokální síti, generuje falešné odpovědi simulující kladnou odpověď vzdáleného uzlu. Má to samozřejmě i svá úskalí - co když skutečné zařízení přestane být dosažitelné, nebo alespoň nějak jinak změní svůj stav? Díky spoofingu se toto nepozná.